目前,Web瘦客戶端的表現形式在互聯網應用中占有舉足輕重的地位,但是隨著機器硬件的快速發展以及用戶對網絡應用的交互式體驗的感受不斷增加,現在的Web展現技術已經令人們感到難于滿足當前的需要,主要體現在:頁面中的數據顯示區域難以充分捕獲用戶的操作,也不具備豐富的邏輯功能來響應和處理這些操作,因而用戶不易通過有效的交互來動態地查看數據,只能利用HTTP一次一刷新的方式,使得用戶不得不等待頁面的響應。而AJAX采用異步傳輸數據的方式,可以讓用戶在瀏覽頁面時不用刷新整個頁面,但是AJAX開發難度高,需要不同的語言背景,而且對瀏覽器的支持也不一樣,很難達到統一兼容,無形中增加了開發的復雜性和測試的難度。
同時,當前的軟件復用模式只是代碼,對象以及組件復用,程序代碼或設計語言之間耦合度很高,不能很好地實現跨平臺、跨語言的復用,開發周期長,效率低下。
為解決上述問題,本文在微軟的Visual Studio 2008開發工具下討論和設計Silverlight與WCF應用。前期的開發環境必須要安裝.NET FrameworkSPI補丁。
1.WCF與Silverlight介紹
1.1 WCF服務框架簡介
WCF是微軟基于SOA推出的.NET平臺下的框架產品。SOA全稱為Service-Oriented Architecture,即面向服務的體系架構,是基于“軟件變服務”的思想。它內部的所有功能屬性等都是通過描述語言加以定義,同時將這些功能屬性以接口的形式暴露給要調用的程序。這樣可以實現跨操作平臺,跨語言,并且與硬件無關,是一種粗粒度的體現。它將技術層面的復用提高到業務邏輯的復用,按需求劃分服務,來滿足不同客戶的需求。
在WCF下開發SOA變得相當方便,它是創建和運行分布式系統的新型面向服務的編程模型,整合了例如:NET Remoting、ASMX、WSE和MSMQ等分布式技術。可以支持的協議包括HTTP、TCP、跨進程以及自定義、安全模式、自定義等多種標準與模式。
WCF通過暴露終結點(EndPoint)的方式,將要實現的業務數據傳給調用程序。Endpoint由地址(Address)、綁定(Binding)和契約(Contract)組成。地址指定服務位于何處,綁定說明服務所能理解的通信協議,契約說明服務提供的操作及數據交換格式。WCF框架示意圖如圖1所示。
圖1 WCF基礎框架
1.2 SilverHght富客戶端簡介
Silverlight是一個跨瀏覽器、跨客戶平臺的技術,能夠開發出具有專業圖形、音頻和視頻的Web應用程序,增強了用戶體驗。Silverlight相當于一個小型的.NET Framework,可以充分調用客戶端機器的處理運算能力,使得Web頁面展示如同C/S端程序一般,并且實現了無刷新,帶來了更多的用戶視覺與操作體驗。
2.應用架構設計
根據具體情況可以選擇設計不同的架構方案,在經典的三層架構(數據訪問層,業務邏輯層,界面展示層)中加入一層WCF服務層。使服務層介于業務邏輯層與界面展示層之間。基于軟件即服務的思想,通過WCF服務層接口向界面層傳輸數據。如圖2所示,其中ABC分別代表地址、綁定和協議,用以公開數據。
圖2 WCF+Silvedight整合應用架構圖
在此,數據庫不受架構限制可以適用SQLServer 2005、Oracle、Access等數據庫,利用ORM映射或是手動編寫實體類,構建實體模型。然后根據業務需要編寫業務邏輯層的代碼。并通過WCF傳遞業務層數據。
此架構優勢主要體現在:
(1)基于面向服務的思想,采用WCF服務架構降低系統組件間的耦合度,復用度高。
(2)B/S較之C/S架構容易開發部署,易于維護,降低了開發成本和維護成本。
(3)Silverlight技術比傳統的web應用更能調用客戶端處理能力,界面展現能力強,具有C/S端的優勢,無刷新易于交互等。
3.代碼實現
本文以一簡單的學生管理為例,簡要介紹其代碼實現。利用微軟的ADO.NET Entity Framework創建實體模型,這樣生成的實體模型(EFModel,設計如圖3所示)也就同時自動實現了數據訪問層,減少了代碼量。現在把主要精力放在業務邏輯層和WCF服務層的實現上。首先,建立業務邏輯層BusinessLayer,并在其中新建StudentManager類用于實體模型的增、刪、改、查。業務邏輯層已經構建完畢,再新建一個WCF服務層項目,命名為WCFContraet,定義具有ServiceContract屬性的接口IStudentService,以及具有OperationContract屬性的Add、Delete等數據操作方法。接口定義完畢,下面需要具體實現接口的類,接著創建WCFService層,部分代碼如下:
public cla88 StudentService:WCFContract.IStudentService
{
public void Add(Student obj)
{
using(StudentManager sm=new StudentManager())
}
sm.Add(obj);
{
}...
public List<Student>getAll()
{
using(StudentManager sm=flew Student_Manager())
{
return sm.getAll();
}
}
}
圖3 WCF+Silvedight架構實現代碼設計
到此WCF服務類基本創建完畢,下面就是WCF的配置部分和啟動代碼。因為本文是用Silverlight作為Web展現層,所以WCF的通訊協議用basicHttp—Binding。App.config配置如下:
<endpoint address="binding =”basicHttpBinding"contract
="WCFContraet.IStudentService">
</endpoint>
<host>
<baseAddresses>
<add baseAddress=”http://*/WCFContract/StudentService/"/>
</baseAddresses>
</host>
WCF的啟動可以選擇Form形式的啟動,也可以是控制臺形式的,主要代碼如下:
ServiceHost host;
host=new ServieeHost(typed(WCFservice.StudentService));
host.Open();
創建Silverlight項目(SLWeb),并為它添加WCF的服務應用,服務自動生成了與之前配置的EndPoint相同的Client代理類,在界面展示層直接調用就可以了。
4.結束語
本文通過WCF與Silverlight相結合的思路,使得Web應用可以充分利用客戶端機器資源,實現界面無刷新,分布式處理,擁有豐富的互操作能力以及復用度高等特點,顯著提高了程序開發效率和用戶的體驗性,因而在當前的互聯網應用中具有很好的實用價值和研究意義。
核心關注:拓步ERP系統平臺是覆蓋了眾多的業務領域、行業應用,蘊涵了豐富的ERP管理思想,集成了ERP軟件業務管理理念,功能涉及供應鏈、成本、制造、CRM、HR等眾多業務領域的管理,全面涵蓋了企業關注ERP管理系統的核心領域,是眾多中小企業信息化建設首選的ERP管理軟件信賴品牌。
轉載請注明出處:拓步ERP資訊網http://www.lukmueng.com/