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