使用 Microsoft UDDI .NET SDK 编程进行注册
注册过程的另一种选择是通过编程进行注册。使用 Microsoft UDDI SDK 可以轻而易举地完成该过程。您必须使用 Web UI 获取一个 UDDI 帐号。完成该任务后,其余过程就交给脚本来处理。首先,下载并安装 UDDI SDK,地址是 http://www.microsoft.com/downloads/release.asp?ReleaseID=30880(英文)。然后,使用 Visual Studio .NET 创建一个新的 C# 控制台应用程序。添加一个对 Microsoft UDDI SDK dll 的引用,其默认安装位置是 C:/Program Files/Microsoft UDDI SDK/VS7/Microsoft.Uddi.Sdk.dll。然后,在代码顶部添加一些名称空间引用:
using Microsoft.Uddi;
using Microsoft.Uddi.Binding;
using Microsoft.Uddi.Business;
using Microsoft.Uddi.Service;
using Microsoft.Uddi.ServiceType;
在 static void Main (string[] args) 函数中添加下列代码:
// 您最好先运行这个程序,在 https://test.uddi.microsoft.com/publish
// 上进行注册测试
Publish.Url = "https://uddi.microsoft.com/publish";
Publish.User = "您的帐户";
Publish.Pass
Word = "************";
这将为您的帐户建立身份验证。下一步,添加以下代码将 WSDL 文件发布为 tModel:
// 创建 tModel
SaveTModel stm = new SaveTModel();
stm.TModels.Add();
stm.TModels[0].Name = "此处插入 URN";
stm.TModels[0].Descr
iptions.Add("zh","此处插入说明");
stm.TModels[0].OverviewDoc.OverviewURL = "此处插入 WSDL 的 URL";
// 下一行是给 tModel 正确分类所必需的
stm.TModels[0].CategoryBag.Add
( "uddi-org:types",
"wsdlSpec",
"uuid:c1acf26d-9672-4404-9d70-39b756e62ab4" );
string sTModelKey = "";
// 发送到 UDDI
try
{
TModelDetail tmd = stm.Send();
sTModelKey = tmd.TModels[0].TModelKey;
}
catch (UddiException ue)
{
Console.WriteLine ( ue.Message );
return;
}
catch (Exception e)
{
Console.WriteLine ( e.Message );
return;
}
成功保存后,UDDI 将生成一个新的唯一的 tModelKey,以后在 Web 服务的绑定中需要用到它。下一步,创建公司条目:
// 创建公司
SaveBusiness sb = new SaveBusiness();
sb.BusinessEntities.Add();
sb.BusinessEntities[0].Name = "此处插入公司名称";
sb.BusinessEntities[0].Descriptions.Add("zh","此处插入说明");
// 创建公司服务
sb.BusinessEntities[0].BusinessServices.Add();
sb.BusinessEntities[0].BusinessServices[0].Name = "此处插入服务名称";
sb.BusinessEntities[0].BusinessServices[0].Descriptions.
Add("zh","此处插入服务说明");
// 创建绑定模板
sb.BusinessEntities[0].BusinessServices[0].BindingTemplates.Add();
sb.BusinessEntities[0].BusinessServices[0].BindingTemplates[0].
Description.Add("zh","此处插入绑定说明");
sb.BusinessEntities[0].BusinessServices[0].BindingTemplates[0].
accessPoint.Text = "此处插入访问点";
sb.BusinessEntities[0].BusinessServices[0].BindingTemplates[0].
AccessPoint.URLType = Microsoft.Uddi.Api.URLTypeEnum.Http;
// 创建 tModel 实例信息
sb.BusinessEntities[0].BusinessServices[0].BindingTemplates[0].
TModelInstanceDetail.TModelInstanceInfos.Add();
sb.BusinessEntities[0].BusinessServices[0].BindingTemplates[0].
TModelInstanceDetail.TModelInstanceInfos[0].Descriptions.
Add("zh","此处插入说明");
// 使用上面的 tModelKey 字符串
sb.BusinessEntities[0].BusinessServices[0].BindingTemplates[0].
TModelInstanceDetail.TModelInstanceInfos[0].TModelKey = sTModelKey;
// 发送到 UDDI
try
{
BusinessDetail bd = sb.Send();
// 显示 xml
Console.WriteLine ( bd );
}
catch (UddiException ue)
{
Console.WriteLine ( ue.Message );
return;
}
catch (Exception e)
{
Console.WriteLine ( e.Message );
return;
}
此时,WSDL 定义和公司信息都已经保存到了 UDDI 中。通过传递适当的键,以后您可以随时编辑这些条目。进入讨论组讨论。
步骤 3:在 UDDI 中搜索条目
在 UDDI 中注册条目后,进行以下三种检查是比较有意义的。第一,使用 Microsoft Web 用户界面,根据名称和分类来搜索您的公司,确认其存在于返回的结果集中。第二,打开 Visual Studio .NET 并确保它是通过“Add Web Reference”对话框显示的。假如没有显示,则可能没有正确使用上述的 uddi-org:types 分类法对您的 tModel 进行分类。您应该能将 Web 服务添加到工程中,并基于 WSDL 文件生成代理代码。第三,等待 24 小时,您的条目将复制到 IBM 节点上,这可以通过其 UI 来查询,地址是 https://www-3.ibm.com/services/uddi/protect/find(英文)。
总结
UDDI 和 WSDL 作为免费的规范,可以帮助建立基于 Web 服务的软件系统。WSDL 提供了与供给商无关的正式方法来定义 Web 服务,这样便可以实现下一代远程过程调用。而 UDDI 提供了一种广泛的、标准化的基础结构,答应人们去描述和发现 Web 服务。这两个标准的结合将带来一个繁荣的 Web 服务生态系统。进入讨论组讨论。