WCF分散式開發學習,應該從哪裡開始?

  1. 微軟WCF Web服務 Web API學習群 339444457

  2. 微軟ASP.NET MVC 4 Web程式設計群     44206115

  學習WCF是不是就不需要學習Enterprise Sevices(COM+).Net Remoting、Web Service(ASMX)、WSE3.0和MSMQ訊息佇列?
  WCF分散式開發學習,如何制定一個合理的計劃,才能更好地學習WCF分散式應用開發。應該從哪裡開始?
  如何下載和安裝WCF開發相關的元件。
  有什麼好的學習書籍、論壇?
  對很多WCF學習的初學者來說,往往這些都是要面臨的問題。
  今天整理這個文章,首先是希望對許多WCF的學習者,有個幫助。其次就是算是對《WCF分散式開發步步為贏》系列課程的一個完善。
  這個問題一直是很多開發者關注的問題.按照微軟的說法,WCF是微軟分散式應用程式開發的集大成者。因此很多人就認為學習WCF程式設計,就不需要了解其他的技術.這個說法有一定的道理.WCF的出現確實解決了很多問題,它整合了.Net平臺下所有的和分散式系統有關的技術,例如.Net Remoting、ASMX、WSE和MSMQ。以通訊(Communiation)範圍而論,它可以跨程式、跨機器、跨子網、企業網乃至於 Internet;可以以ASP.NET,EXE,WPF,Windows Forms,NT Service,COM+作為宿主(Host)。開發人員可以構建跨平臺、安全、可靠和支援事務處理的企業級互聯應用解決方案。既然WCF如此強大,開發者再不用去分別瞭解.Net Remoting,ASMX等各種技術了。
  我也遇到過類似的問題,現在就把自己和別人的一些經驗與大家分享,希望對WCF的愛好者有參考作用。
【1】什麼是WCF:
   WCF全稱Windows Communication Foundation,是Microsoft為構建面向服務的應用提供的分散式通訊程式設計框架,是.NET Framework 3.5的重要組成部分。使用該框架,開發人員可以構建跨平臺、安全、可靠和支援事務處理的企業級互聯應用解決方案。
根據微軟官方的解釋,WCF(之前的版本名為“Indigo”)是使用託管程式碼建立和執行面向服務(Service Oriented)應用程式的統一框架。它使得開發者能夠建立一個跨平臺的安全、可信賴、事務性的解決方案,且能與已有系統相容協作。WCF是微軟分散式應用程式開發的集大成者,它整合了.Net平臺下所有的和分散式系統有關的技術,如Enterprise Sevices(COM+).Net Remoting、Web Service(ASMX)、WSE3.0和MSMQ訊息佇列。以通訊(Communiation)範圍而論,它可以跨程式、跨機器、跨子網、企業網乃至於 Internet;以宿主程式而論,可以以ASP.NET,EXE,WPF,Windows Forms,NT Service,COM+作為宿主(Host)。WCF可以支援的協議包括TCP,HTTP,跨程式以及自定義,安全模式則包括SAML, Kerberos,X509,使用者/密碼,自定義等多種標準與模式。也就是說,在WCF框架下,開發基於SOA的分散式系統變得容易了,微軟將所有與此相關的技術要素都包含在內,掌握了WCF,就相當於掌握了叩開SOA大門的鑰匙。
   Web 服務中包含了用於應用程式間通訊的標準協議,它在全球範圍內的廣泛採納改變了軟體開發。例如,如今 Web 服務提供的功能包括安全性、分散式事務協調和可靠的通訊。Web 服務所發生的這些改變的效益應反映在開發人員所使用的工具和技術方面。設計 Windows Communication Foundation (WCF) 的目的是為分散式計算提供可管理的方法,提供廣泛的互操作性,併為服務定位提供直接的支援。
   型別化程式設計模型(稱為“服務模型”)設計用來降低分散式應用程式的開發難度,併為 ASP.NET Web 服務、.NET Framework 遠端處理和企業服務領域的專業開發人員,以及將要從事 WCF 開發的人員提供熟悉的開發體驗。該服務模型的特點在於它將 Web 服務的概念直接對映到 .NET Framework 公共語言執行庫 (CLR) 中的對應內容,包括將訊息靈活且可擴充套件地對映到用諸如 Visual C# 或 Visual Basic 等語言實現的服務。該服務模型提供支援鬆散耦合和版本管理的序列化功能,並提供與諸如訊息佇列 (MSMQ)、COM+、ASP.NET Web 服務、Web 服務增強 (WSE) 等現有 .NET Framework 分散式系統技術以及很多其他功能的整合和互操作性。(參考MSDN)

【2】如何學習:

既然WCF介紹裡提到了以上技術概念:
技術整合:Enterprise Sevices(COM+).Net Remoting、Web Service(ASMX)、WSE3.0和MSMQ訊息佇列
宿主程式:ASP.NET,EXE,WPF,Windows Forms,NT Service,COM+作為宿主(Host)。

【2.1】必備技術前提:

(1).NET 基礎知識,包括CLR,基本類庫等概念。
(2)c# 或者VB.NET,任何一個機遇.NET平臺的程式語言。目前是c#為主。
(3)ASP.NET 及IIS網路應用程式相關知識
(4)Visual Studio 開發工具熟練使用。

【2.2】可選技術條件:

(1)Enterprise Sevices(COM+),企業服務應用程式,微軟.NET 平臺下對COM+的一個包裝。整合了COM+的特性。
(2).Net Remoting,.NET 平臺下分散式環境裡應用程式通訊的技術,適合企業區域網,效率較高。
(3)Web Service(ASMX),微軟推出的基於ASP.NET 框架的Web Service技術。開發和部署簡單。
(4)WSE3.0,這裡是一個過渡技術。已經出現了IIS外託管WebService,支援傳輸優化等特性,安全模型進一步提升。
(5)MSMQ訊息佇列,微軟平臺下,比較成熟的一個技術,適合構建離線訊息和鬆耦合的系統。

【3】學習資源:

1.那裡獲取最新的Visual Studio 或者the .Net Framework?

微軟釋出了 SP1 for VS 2008 和.Net Framework 3.5, 這是最新的連線:

Visual Studio 2008 SP1: http://www.microsoft.com/downloads/details.aspx?FamilyId=FBEE1648-7106-44A7-9649-6D9F6D58056E&displaylang=en
Visual Studio Express SP1: http://www.microsoft.com/express/sp1/
.Net Framework 3.5 SP1: http://www.microsoft.com/downloads/details.aspx?FamilyId=AB99342F-5D1A-413D-8319-81DA479AB0D7&displaylang=en
微軟釋出了 VS 2010 和.Net Framework 4.0, 這是最新的連線:

Visual Studio 2010 Beta2:http://msdn.microsoft.com/en-us/netframework/cc896557.aspx
   2.哪裡有WCF 文件和程式碼示例?

   .Net Framework 3.5 MSDN 文件和例子
          文件: http://msdn2.microsoft.com/en-us/library/ms735119(VS.90).aspx
          文件: http://msdn2.microsoft.com/en-us/library/ms751514(VS.90).aspx
          例子下載: http://go.microsoft.com/fwlink/?LinkId=87352
   WCF 社群
          社群: http://wcf.netfx3.com/
   WCF 安全向導
          視訊, 教程, 和例子: http://www.codeplex.com/WCFSecurity

   WCF4.0:WCF4.0新特性體驗(1):WCF4.0新特性預覽及學習資源推薦

   3.WCF書籍:
   (1)《Programming WCF Services》,Juval Lowy著,評論:內容詳細,基礎,全面。英語好的可以看英語版。
          《WCF服務程式設計》,Juval Lowy著,中文版本由張逸、徐寧翻譯。書籍印刷質量一般。初學和有點基礎的朋友可以看看。

          《WCF服務程式設計》第3版由徐雷、徐揚翻譯。2011年5月出版。 更新至.NET 4.0,介紹了WCF4.0的新特性,也新增了對於雲端計算的介紹內容。詳細介紹可以閱讀[置頂]↑ WCF服務程式設計(4):《WCF服務程式設計》第3版中文版翻譯結束,即將出版 ↑。

   (2)Windows Communication Foundation Unleashed ,(美)Craig McMurtry;Marc Mercuri;Nigel Watling;Matt Winkler .
          中文名字《WCF揭祕》,趙科平翻譯。評論:不適合初學者,算是中級教程。建議有一定WCF程式設計基礎的人
   (3)Learning WCF: A Hands-on Guide 。作者:MICHELE LEROUX BUSTAMANTE。例子很多。中文版本由龐引明;侯伯薇翻譯。
        《學習WCF:從原理到實踐》。原書可能很不錯,但是中文翻譯版本評論一般。說是翻譯的詞彙比較拗口。看中文名字個人感覺應該是WCF學習手冊或者指南比較貼切。有興趣的朋友可以看看原文圖書。
   (4)Essential Windows Communication Foundation (WCF): For .NET Framework 3.5 (Microsoft .NET Development Series)by Steve Resnick, Richard Crane, and Chris Bowen《WCF本質論》,作者 by Steve Resnick, Richard Crane, and Chris Bowen
 不錯的書籍,Amazon上評論不錯,和《WCF服務程式設計》一樣屬於講解詳細,通俗易懂的書籍。可以作為入門學習書籍,也可以作為開發的參考手冊。  知識點很清晰。

   (5)《Inside Microsoft Windows Communication Foundation》。Justin Smith先生所著.中文譯名為《WCF技術內幕》,Frank Xu Lei(我本人,2010年7月正式出版)翻譯。很好的系統介紹WCF底層框架結構和通訊原理的書籍。從構建面向服務的(SOA)應用系統角度出發,對WCF框架做了詳細的架構性分析。此外,這本書也給了我們一些實踐方面的指導,並提供了許多示例程式碼。適合WCF高階開發人員和架構師。


  以上書籍都是Amazon上評價很好的書籍,4星半,接近5顆星,確實值得一讀,建議大家看英文原著書籍,這些書籍都是WCF經典著作。而且作者的水平很高,無論技術實力,還是工作經驗,都已經得到同行的認可。

4.推薦論壇:

【中文論壇】:微軟WCF中文技術論壇,成立不久,付仲愷大哥在Web Cast講授《構建WCF面向服務的應用程式系列課程》常回答大家的問題。歡迎訪問。

【英文論壇】:微軟WCF英文技術論壇,老外很多,問題種類設計各個方面。也很專業。基本WCF相關的問題都可以解決或者找到提示。

【4】總結:

最後的建議:
  (1)是最好對以前的技術有所瞭解,學習技術態度要紮實。如果你是新手,有足夠的時間,建議你從基礎學起,現瞭解Enterprise Sevices(COM+).Net Remoting、Web Service(ASMX)、WSE3.0和MSMQ訊息佇列等相關概念以後,再來學習WCF技術。我整理了WCF分散式開發必備知識(4)  和WSE3.0構建Web服務安全(4)系列,對這些技術進行了整理。給出了可以執行的程式碼。大家可以參考。
  (2)如果專案時間緊迫,可以直接奔WCF程式設計學習,但是等自己時間充裕的話,建議還是回頭好好學習一下。起碼是有個瞭解。不會在討論這些技術問題的時候總是一臉的茫然。例如理解WCF IIS託管,就必須對IIS和ASP.NET底層相關知識有深入的瞭解。想掌握WCF安全程式設計,對WS-security知識要熟悉。否則很難理解WCF的安全模型。
  (3)根基決定高度。在WCF學習的態度上,認真一些,我們一步一個腳印,一定會成為有很多收穫。這個其實也是通常學習技術的一個態度。  技術需要一個積累的過程。
  (4)實踐是檢驗真理的唯一標準。呵呵,動手才能更好地理解WCF的一些技術概念,對相關特性才能深入體會。只是紙上談兵,沒有太多實際意義。最大的收穫來之於試驗。學習最好的方式就是:WCF in Practice!
  (5)希望對所有的WCF技術初學者,都能有所啟示或幫助!
  (6)高手的話,可以研究WCF底層相關的知識,比如執行緒模型、安全協議,通道模型等等。
         也希望WCF前輩多多補充。分享學習經驗,推薦學習書籍。給新人以提示。因為經常和一些WCF愛好者討論這個問題。
  最後就整理一個文章。算是一個補充吧。
   謝謝。