使用 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
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 服務生態系統。進入討論組討論。