程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 淺析WCF與WebService、WPF與Silverlight 區別,wcfwpf

淺析WCF與WebService、WPF與Silverlight 區別,wcfwpf

編輯:C#入門知識

淺析WCF與WebService、WPF與Silverlight 區別,wcfwpf


由於在《Windows服務調用Quartz.net 實現消息調度》中,涉及到ASP.NET Web Service

//WebServiceSoapClient client = new WebServiceSoapClient(new BasicHttpBinding(), new EndpointAddress(URL));
//client.Shake();

效果始終不是太好,故Google查之,此文做為平時積累。 

一、ASP.NET Web Service


 Web Service:嚴格來說是行業標准,也就是Web Service 規范,也稱作WS-*規范,既不是框架,也不是技術。

  它有一套完成的規范體系標准,而且在持續不斷的更新完善中。它使用XML擴展標記語言來表示數據(這個是誇語言和平台的關鍵)。

  微軟的Web服務實現稱為ASP.NET Web Service.它使用Soap簡單對象訪問協議來實現分布式環境裡應用程序之間的數據交互。WSDL來實現服務接口相關的描述。此外Web services 可以注冊到UDDI中心.供其客戶查找使用。後來微軟做了ASP.NET Web Service的安全,性能,數據加密、解密,托管宿主等多方面的擴展,稱為WSE系列,這個是過度產品,最高到WSE3.0.後來就是WCF時代。

二、WCF


 WCF:是一個分布式應用的開發框架,屬於特定的技術,或者平台。既不是標准也不是規范。

  WCF其實一定程度上就是ASP.NET Web Service,因為它支持Web Service的行業標准和核心協議,因此ASP.NET Web Service和WSE能做的事情,它幾乎都能勝任,跨平台和語言更不是問題(數據也支持XML格式化,而且提供了自己的格式化器)。 但是WCF作為微軟主推一個通訊組件或者平台,它的目標不僅僅是在支持和集成Web Service,因為它還兼容和具備了微軟早期很多技術的特性。 

      根據微軟官方的解釋,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大門的鑰匙 。

  WCF能夠建立一個跨平台的安全、可信賴、事務性的解決方案,是一個WebService,.Net Remoting,Enterprise Service,WSE,MSMQ的並集,很經典的對比圖如下:

                  WCF與其他分布式技術對比表

  

三、WPF與Silverlight、WinForm


在Windows中,諸如窗體繪制等功能由GDI實現,放在操作系統內核中。Windows Forms在底層使用的是GDI+。GDI+是GDI的“面向對象包裝”,使用C++實現。

  .NET Windows Forms應用程序中使用的GDI+其實是在C++實現的非托管代碼之上又包了一層,從而讓我們能使用C#這樣的托管編程語言調用GDI+功能繪圖。   WPF底層使用的是DirectX,就是通常用來開發游戲的那個DirectX。WPF與Windows Forms這兩者並沒有什麼關系。按照微軟的意圖,WPF是用來取代Windows Form的,所以最新的Visual Studio就使用了WPF開發界面,這是一個很明確的信號。   當然,出於兼容目的,Windows Forms與WPF將長期並存,可以把它們看成是兩套獨立的界面技術。   Silverlight在API層可以看成是WPF的子集,但事實上除了這點之外,Silverlight與WPF並沒有任何聯系。因為Silverlight應用程序不依賴於.NET Framework,只要用戶計算機(或手 機)安裝有Silverlight運行環境(比如用戶通過互聯網給浏覽器添加了Silverlight插件),就可以跑Silverlight應用程序,並不要求用戶安裝龐大的.NET Framework。   Silverlight運行時環境在API層面也可以看成是標准.NET Framework的功能子集,但它完全是重新寫過的,獨立於標准的.NET Framework,雖然為了方便應用程序開發,微軟努力保持兩者在API層面的一致性,但並不排除Silverlight運行時環境日後會擁有全新的為.NET標准環境所不具備的功能。   Windows Forms/WPF/Silverlight這三者其實是獨立發展的三個技術領域,只不過微軟出於方便開發的目的,有意讓Silverlight與WPF在應用層面開發體驗(甚至包括大部分應用層代碼)高度一致罷了。   從開發角度來看,Windows Forms已有多年的歷史,高度成熟,擁有大量的第三方控件等各種資源,如果開發“標准”與“通用”界面類型的Windows應用程序,使用它可以獲得較高的開發效率和不錯的運行性能。   WPF的長處在於它可以開發非常“個性化”的Windows應用程序,你可以不受任何限制地實現你所能“夢想”到的各種用戶界面,而且在動畫等多媒體方面,WPF優於Windows Forms,另外,WPF的數據綁定機制也比Windows Forms要強大和靈活。   WPF的短處在於它對計算機硬件的要求較高,對於硬件配置較低的計算機,其運行性能不如Windows Forms版本。就目前來看,WPF的最佳平台是Windows 7。   Windows Forms和WPF主要用於開發桌面應用程序,Silverlight主要戰場是互聯網,通常用它來開發RIA的互聯網應用程序,或者是跑在手機等智能移動設備上的應用程序。可以這樣 說,會WPF,不費太多力氣,就可以轉去開發Silverlight應用程序,兩者實在是太相似了,特別是界面層代碼,由於都使用XAML,這使我們可以比較容易地為某一應用程序同時開發“桌面版”、“手機版”和“浏覽器版”三種版本,而這三種版本其用戶界面都可以擁有一致的外觀和用戶使用體驗。   以上介紹是引用bitfan博文(http://blog.csdn.net/bitfan/article/details/6128391)

silverlight與wcf,wpf之間的關系

引用 birdbrother 的回答

補充:
silverlight 通常會與wcf做交互,也是數據層面的交互,這要是silverilght應用程序數據通訊的主要途徑。

wcf可以將服務發布為windows服務,tcp服務,因此與wpf之間的交互也有很多,例如微軟的msmq,還可以做設備的交互。
 

WCF與WPF那個比較有前途?現在公司做WPF的多還是做WCF的多?分析一下現在的市場

完全不是一樣的東西,沒有可比性。WPF是展示層技術,UI層面的東西,而WCF是開發分布式程序的通信框架,二者的功能完全不同。總的來說,WCF的應用范圍更廣一些,系統規模達到一定程度,分布式是必然的解決方案,WCF是.net平台分布式系統的最佳選擇。從難易程度來說,WCF比WPF更難掌握,絕對不是初學者靠看幾本書就能熟練使用的,需要大量的實際編程經驗才能駕馭它。還是從基礎開始,從簡單項目開始積累經驗吧。
 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved