2009-08-11 67 views
1

WCF提供了許多ASP.NET Web服務中不存在的特性和功能。我想知道,如果那些在生產環境中使用該技術的實際經驗能夠分享他們現在可用的有趣用法的體驗,那是因爲新功能。我認爲這將是一個有用的來源:「哦,你可以做什麼?」對於那些從ASP.NET Web Services進入它的人來說。你最有興趣使用WCF的是什麼?

+0

我不確定這會非常有用。考慮一下你可以用WCF做的幾乎所有事情都是你無法用ASMX web服務完成的。 – 2009-08-11 03:37:26

回答

1

那麼,Web服務站在他們的立場上有什麼明顯的問題。

  • 沒有內置的加密機制:您 有它自己加密,或使用HTTPS 。
  • 無法驗證用戶身份: 當然,您可以傳遞 的用戶名/密碼,但如果您想要做 Windows身份驗證? X509證書怎麼樣?
  • 無法選擇 傳輸機制:HTTP是一個相對詳細的協議 。它是基於TCP/IP之上的基於文本的協議 。
  • 重定向:如果您有防火牆, ,並且您需要在加密時重定向消息 ,則不能。這是 ,除非防火牆取消加密, 看到目的地並在 上轉發該消息。
  • 壓縮:壓縮 必須在 消息通過線路發送之前進行。

那麼微軟用一個名爲Web Service Extensions 2.0和3.0的中間版本解決了這些問題。這些問題一舉解決。但是,這些是附加組件。我有經驗 與它合作,並肯定需要一些手工製作的代碼。它們被添加以符合W3C機構頒佈的WS- *標準。

如果您想使用WSE的附加功能,則必須重新編譯代碼。您的客戶端代理必須從新的基類繼承。您必須添加其他配置信息。您可以通過基本的4/5步驟來更新客戶端。但是,這不是最方便的。

當比較WSE 3.0和WCF時,您會看到所有功能都更容易實現。如果我比較它上面的列表:

  • 加密可以在消息級別(加密「數據」部分),或在傳輸層(在導線加密的話),通過簡單地添加類似於「messageAlgorithm = Basic128「添加到App.config。
  • 您可以無縫地使用正在運行的應用程序的Windows身份驗證,並且在調用它之前還需要在客戶端計算機上安裝特定的證書。
  • 運輸機制可以根據您的需要進行更改。我們有HTTP,HTTPS,TCP,命名管道(用於進程間調用)和MSMQ。請注意,只要實現新的基類並重寫所需的方法,就可以添加這些內容。 TCP在企業內部網絡上的速度遠遠超過HTTP,如果你真的是偏執狂的話,你也可以實施加密。
  • 重定向在WSE 3.0中實現,我相信它會進一步擴展。重定向的使用非常重要,因爲許多組織只有少數機器接觸到互聯網,並且在內部基於IP地址進行過濾。但是,也有一種稱爲UDDI的東西,它允許多臺機器註冊爲具有服務。所以你不一定要打你想要的機器。
  • 按照WS- *標準實施壓縮,並在WSE 3.0中實施。有一個壓縮標準被定義爲將文檔「附加」到XML消息。

除了這些功能,WCF還更公開地實現了4個SOA「規則」。 SOA是一個很大的話題,可以在互聯網上搜索。在SOA上已經編寫了全書 ,但只是接受WCF是SOA架構的實現。

其中一個SOA準則要求您提供「契約」(模式),而不是對象/類,因爲對象/類可能意味着與OO語言的搭配。模式在XML中被指定爲語言不可知的。

WCF還通過「合同」定義服務。基本原則是,您可以定義合同,即可以先執行的操作。在.NET中,這是作爲一個界面實現的,用某些屬性裝飾。

然後,作爲.NET開發人員將接口實現爲具體類(裝飾有其他屬性)並編寫實現其功能的方法。這意味着「合同」是從界面中提取出來的,而我們的類只提供它的實現。這種方式.NET提供了自己的方式實現標準 。

儘管您可以編寫所有這些代碼,但WCF還是提供了在配置文件中指定它的選項 - 例如URIs,加密機制以及用於靈活性的傳輸機制。另一個SOA標準是能夠靈活執行。

這真是一個快速概覽。我希望這可以幫助你蘸點腳趾,而不是太具體。

+0

很好的答案,但它是一個與問題不同的問題的答案。他沒有問WCF有什麼好處 - 他要求WCF的良好用法,這是ASMX服務無法做到的。 – 2009-08-11 22:57:57

1

這是一個相當廣泛的問題。 WCF遠遠超過asp Web服務。

我已經使用WCF構建了一個代理ADO.Net數據提供程序,它通過WCF服務路由所有操作。這使您可以使用可在服務器上訪問的數據庫,但不能使用客戶端計算機。