為你解疑:WCF是什么
對于WCF的知識很是很值得我們?nèi)ネ诰虻?,我運用WCF開發(fā)也快一年了,但是現(xiàn)在也是只知道皮毛,現(xiàn)在就把我所知道的和大家說說,我們這里就先說說WCF是什么。“學(xué)以致用”,如果僅僅是希望能夠在項目中合理地應(yīng)用WCF,那么對于程序員而言,可以有兩種選擇,一種是“知其然而不知其所以然”,只要掌握了WCF的基礎(chǔ)知識,那么對于一般的應(yīng)用就足夠了。要做到這一點就很容易了,微軟秉承了一貫的方式,將WCF這門技術(shù)優(yōu)雅地呈現(xiàn)給開發(fā)者,封裝了復(fù)雜的實現(xiàn)邏輯,提供了易于調(diào)用的類庫和相關(guān)的工具,使得開發(fā)者能夠快速地完成WCF程序的開發(fā)。另外一種方式自然就是深度挖掘WCF的內(nèi)部實現(xiàn)了,這是對WCF專家提出的要求。如果我們要應(yīng)用WCF實現(xiàn)SOA解決方案,就會遭遇許多WCF的高級應(yīng)用,如何合理、有效地應(yīng)用WCF,并根據(jù)項目實際情況對WCF進行擴展,就成為了WCF專家必須解決的難題。
因此,如果要學(xué)習(xí)WCF,你必須找準(zhǔn)自己學(xué)習(xí)的動機與目標(biāo),然后合理地安排自己的學(xué)習(xí)進度表,這才是正確的學(xué)習(xí)方式。本文試圖對WCF的一些基礎(chǔ)概念作一些試探性的闡述與分析,并以問答的方式組織,希望能夠部分解答一些希望學(xué)習(xí)WCF,但猶自徘徊在門外的開發(fā)者。
WCF是什么?
從 WCF所處的位置來看,它是包含在.NET 3.0(也包括.NET 3.5)之中的。我們注意比較.NET 3.0與.NET 2.0,其實***的區(qū)別就是.NET 3.0包含了WCF、WPF、WF(或者還有CardSpace)而已。因此,我們認(rèn)為WCF是.NET框架的一部分,似乎并不為過。尤為關(guān)鍵的是,WCF并不能脫離.NET框架而單獨存在(但非WCF客戶端可以調(diào)用WCF服務(wù)),因此,雖然WCF是微軟用以應(yīng)對SOA解決方案的開發(fā)需求而專門推出的,但它并不是例如Spring、Struts那樣的框架,也不是像EJB那樣的容器或者服務(wù)器。微軟真正符合SOA企業(yè)應(yīng)用服務(wù)器角色的,我想應(yīng)該是Biztalk Server。
#T#嚴(yán)格的說,WCF就是專門用于服務(wù)定制、發(fā)布與運行以及消息傳遞和處理的一組專門類的集合,也就是所謂的“類庫”。這些類通過一定方式被組織起來,共同協(xié)作,并為開發(fā)者提供了一個統(tǒng)一的編程模式。WCF之所以特殊,是在于它所應(yīng)對的場景與普通的.NET類庫不同,它主要用于處理進程間乃至于機器之間消息的傳遞與處理,同時它引入了SOA的設(shè)計思想,以服務(wù)的方式公布并運行,以方便客戶端跨進程和機器對服務(wù)進行調(diào)用。實際上,WCF就是微軟對于分布式處理的編程技術(shù)的集大成者,它將DCOM、Remoting、Web Service、WSE、MSMQ集成在一起,從而降低了分布式系統(tǒng)開發(fā)者的學(xué)習(xí)曲線,并統(tǒng)一了開發(fā)標(biāo)準(zhǔn)。
WCF與其它類庫還有不同的地方,則在于WCF充分地體現(xiàn)了運行時環(huán)境的概念。WCF是什么?對于早期使用WCF的開發(fā)人員而言,就可能知道如果在.NET 2.0下要開發(fā)WCF,還需要專門下載一個Runtime Component 3.0版,其中就包含了WCF、WF等內(nèi)容。在.NET中一貫存在所謂“宿主”的概念,整個.NET Framework(或者說是CLR)就可以認(rèn)為是一個大的宿主,就像Java的虛擬機一樣。由于WCF對服務(wù)有著專門的需求,對于服務(wù)端,需要發(fā)布和運行服務(wù);對于客戶端,則需要調(diào)用服務(wù);因而對于開發(fā)者,就需要編寫定義、發(fā)布、運行、調(diào)用服務(wù)的相關(guān)代碼。而服務(wù)就只能運行在特定的宿主上,這些宿主可以是控制臺應(yīng)用程序進程、Windows或Web應(yīng)用程序進程,也可以是Windows服務(wù)進程,或者為最常用的IIS宿主。在宿主內(nèi)部,則封裝了通道堆棧,其中又包含了對協(xié)議、編碼、消息傳輸、代理的處理。而在通道層的頂部,還提供了一個高級運行時,以針對應(yīng)用程序的開發(fā)人員。
因而,我們可以這樣認(rèn)為,WCF是.NET Framework 3.x的一部分,它包含了用于服務(wù)定制、發(fā)布與運行以及消息傳遞和處理的運行時環(huán)境以及相關(guān)類的集合,它提供了在Windows平臺下開發(fā)和部署服務(wù)的SDK。