using System;
using System.Collections;
using System.Data;
using System.Net;
using Microsoft.Uddi;
using Microsoft.Uddi.Binding;
using Microsoft.Uddi.Business;
using Microsoft.Uddi.Service;
using Microsoft.Uddi.ServiceType;
using System.Xml;
namespace UddiDemoPublisher
{
	public class UddiPublish
	{
BEGIN COMMENT LINE
		/// 
		/// 	Эта утилита регистрирует web-службу в реестре UDDI
		/// 
END COMMENT LINE
		[STAThread]
		public static void Main(string[] args)
		{
			try
			{
				Console.Write(«Укажите имя системы»
					+ «UDDI Services: «);
				string uddiMachineName = Console.ReadLine();
				Console.Write(«Username: «);
				string username = Console.ReadLine();
				Console.Write(«Password: «);
				string password = Console.ReadLine();
				Console.Write(«Domain: «);
				string domain = Console.ReadLine();
				NetworkCredential credentials = new NetworkCredential(username,
					password, domain);
				Publish.Url = «http://» + uddiMachineName + «/uddi/publish.asmx»;
				Publish.HttpClient.Credentials = credentials;
				Inquire.Url = «http://» + uddiMachineName + «/uddi/inquire.asmx»;
				Inquire.HttpClient.Credentials = credentials;
BEGIN COMMENT LINE
				// Если существует провайдер службы, удаляем его
END COMMENT LINE
				FindBusiness fb = null;
				BusinessList bl = null;
				Console.Write(«Введите имя провайдера службы»
					+ «для которого нужно ввести Web-службу: «);
				string serviceProvider = Console.ReadLine();
				fb = new FindBusiness();
				fb.Name = serviceProvider;
				try
				{
					bl = fb.Send();
				}
				catch (UddiException e)
				{
					Console.WriteLine(«UDDI exception: « + e.Number + « — «
						+ e.Message);
					return;
				}
				catch (Exception e)
				{
					Console.WriteLine(«General exception: «
						+ e.Message);
					return;
				}
				if (bl.BusinessInfos.Count > 0)
				{
					DeleteBusiness db = new DeleteBusiness();
					db.BusinessKeys.Add(
						bl.BusinessInfos[0].BusinessKey);
					try
					{
						DispositionReport drep = db.Send();
						Console.WriteLine(«Disposition report: «
						+ drep.Results[0].ErrInfo.ErrCode.ToString());
					}
					catch (UddiException e)
					{
						Console.WriteLine(«UDDI exception: « + e.Number + « — «
							+ e.Message);
						return;
					}
					catch (Exception e)
					{
						Console.WriteLine(«General exception: « + e.Message);
						return;
					}
				}
				
BEGIN COMMENT LINE
				// Создаем провайдера службы
END COMMENT LINE
				SaveBusiness sb = new SaveBusiness();
				sb.BusinessEntities.Add();
				sb.BusinessEntities[0].Name = serviceProvider;
BEGIN COMMENT LINE
				// Create the Service
END COMMENT LINE
				sb.BusinessEntities[0].BusinessServices.Add();
				Console.Write(«Please enter a name for the web service: «);
				string webServiceName = Console.ReadLine();
				sb.BusinessEntities[0].BusinessServices[0].Name = webServiceName;
			
BEGIN COMMENT LINE
				// Создаем связывание
END COMMENT LINE
				sb.BusinessEntities[0].BusinessServices[0].BindingTemplates.Add();
				Console.Write(«Please enter a full URL for the web service: «);
				string webServiceUrl = Console.ReadLine();
			
	sb.BusinessEntities[0].BusinessServices[0].BindingTemplates[0].AccessPoint.Text = webServiceUrl;
			
	sb.BusinessEntities[0].BusinessServices[0].BindingTemplates[0].AccessPoint.URLType = 
Microsoft.Uddi.Api.URLTypeEnum.Http;
BEGIN COMMENT LINE
				// Отправляем UDDI
END COMMENT LINE
				try
				{
					BusinessDetail bd = sb.Send();
					// show xml
					Console.WriteLine(bd);
				}
				catch (UddiException ue)
				{
					Console.WriteLine(ue.Message);
					return;
				}
				catch (Exception e)
				{
					Console.WriteLine(e.Message);
					return;
				}
			}
			catch (Exception e)
			{
				Console.WriteLine(«General exception: « + e.Message);
			}
		}
	}
}