999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于WCF構(gòu)架的應(yīng)用與研究

2010-01-01 00:00:00趙海寧
電腦知識(shí)與技術(shù) 2010年1期

摘要:通過介紹面向服務(wù)的WCF構(gòu)架的功能特點(diǎn)和技術(shù)要素,分析研究其用于分布式的多層開發(fā)技術(shù), 以及對(duì)WCF在一般場(chǎng)景應(yīng)用的服務(wù)端、宿主、客戶端開發(fā)的闡述,為大家學(xué)習(xí)基于WCF的分布式技術(shù),提供了開發(fā)步驟與過程。

關(guān)鍵詞:WCF;分布式開發(fā);SOA

中圖分類號(hào):TP302.1文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):1009-3044(2010)01-77-03

Research and Application Based on the WCF framework

ZHAO Hai-ning, LI Yang

(Henan University, Kaifeng 475004, China)

Abstract: Introducing a service- oriented applications WCF framework of the unity of the system architecture features and technical elements, analyzing and studying the development of technologies for distributed multi-layer. As well as in the general scene of the WCF service, host, client development of elaborated,in order to learn WCF-based distributed technology,provide the steps and process of the development for someone.

Key words: WCF; distributed development; SOA

Windows 通訊基礎(chǔ)(Windows Communication Foundation,WCF)是基于Windows 平臺(tái)下開發(fā)和部署服務(wù)的軟件開發(fā)包(Software Development Kit,SDK)。它是微軟專門針對(duì)面向服務(wù)(Service Oriented)應(yīng)用程序提供的分布式編程框架。WCF是.NET 3.0 的組成部分之一,該框架旨在統(tǒng)一迄今為止微軟創(chuàng)造的各種不同的通信技術(shù),從功能角度來看,WCF整合了ASMX、.Net Remoting、Enterprise Service、WSE以及MSMQ等現(xiàn)有技術(shù)的優(yōu)點(diǎn)。 WCF 通過一種面向服務(wù)的新型編程模型簡(jiǎn)化了關(guān)聯(lián)應(yīng)用程序的開發(fā)。通過提供分層的體系結(jié)構(gòu),WCF 可以支持多種風(fēng)格的分布式應(yīng)用程序開發(fā)。WCF 通道體系結(jié)構(gòu)在底層提供了異步的非類型化消息傳遞基元,可以使用托管代碼建立和運(yùn)行SOA 的軟件系統(tǒng)。它提供了一種構(gòu)建安全可靠的分布式面向服務(wù)系統(tǒng)的統(tǒng)一的框架模型,使軟件研發(fā)人員在開發(fā)分布式應(yīng)用程序時(shí)變得更加輕松。也就是說,在WCF框架下,開發(fā)基于SOA的分布式系統(tǒng)變得容易了,微軟將所有與此相關(guān)的技術(shù)要素都包含在內(nèi),掌握了WCF,就相當(dāng)于掌握了叩開SOA大門的鑰匙。

1 WCF的技術(shù)要素

WCF最重要的就是能夠快捷的創(chuàng)建一個(gè)服務(wù)(Service),一個(gè)WCF Service由下面三部分構(gòu)成:

Service Class:一個(gè)標(biāo)記了[ServiceContract]Attribute的類,在其中可能包含多個(gè)方法。除了標(biāo)記了一些WCF特有的Attribute外,這個(gè)類與一般的類沒有什么區(qū)別。

Host(宿主):可以是應(yīng)用程序,進(jìn)程如Windows Service等,它是WCF Service運(yùn)行的環(huán)境。宿主監(jiān)聽來自客戶端的請(qǐng)求,并給出相應(yīng)的響應(yīng)。WCF提供了多種宿主形式,適合在不同的應(yīng)用環(huán)境中使用。

Endpoints:它是WCF實(shí)現(xiàn)通信的核心要素,一個(gè)Endpoint由三部分組成:Address(地址),Binding(綁定),Contract(契約)。

地址描述了服務(wù)采用的通訊協(xié)議、服務(wù)所在主機(jī)的位置、端口以及服務(wù)的標(biāo)識(shí),客戶端是通過地址來找到具體的服務(wù)。

綁定定義了客戶端與服務(wù)端之間通訊的協(xié)議以及通信的細(xì)節(jié),描述的是如何發(fā)送消息。每種綁定對(duì)應(yīng)不同的傳輸協(xié)議、消息編碼格式和版本以及安全、可靠性和事務(wù)模式。WCF也提供了擴(kuò)展綁定的方式,例如通過CustomBinding或者定義派生與Binding的類。

契約是WCF的消息標(biāo)準(zhǔn),告知客戶端如何與服務(wù)器聯(lián)系交互,它包括服務(wù)契約、數(shù)據(jù)契約和消息契約(特別的,還包括了錯(cuò)誤契約,用于異常的處理)。其中服務(wù)契約為面向服務(wù)應(yīng)用程序的核心,通過它可以定義服務(wù)。數(shù)據(jù)契約則為服務(wù)所要傳遞的數(shù)據(jù)。由于服務(wù)的調(diào)用需要跨進(jìn)程或機(jī)器進(jìn)行通信,就需要服務(wù)數(shù)據(jù)必須能夠被序列化和反序列化。消息契約則可以將服務(wù)數(shù)據(jù)定義為消息,包括XML文本格式、MTOM(消息傳輸優(yōu)化機(jī)制)格式和二進(jìn)制格式。

2 WCF服務(wù)端的開發(fā)

服務(wù)的設(shè)計(jì)主要放到了業(yè)務(wù)邏輯層來實(shí)現(xiàn)。包括UILayer里面的ServiceProxy以及BLayer 里面的所有文件。其中:ServieceProxy用來定義服務(wù)代理, 它里面暴露的方法供表示層來進(jìn)行調(diào)用, 表示層只和ServiceProxy交互。ServiceProxy是調(diào)用BLayer里面的Contract, 也即是WCF 中的服務(wù)契約, 這里的Contract全部用來存放接口。接口的實(shí)現(xiàn)放入Facade實(shí)現(xiàn), 同時(shí)在Facade里面進(jìn)行一些業(yè)務(wù)規(guī)則的處理。Facade進(jìn)行相關(guān)處理后, 直接調(diào)用Rules里面的方法。Rules里面定義的是最小的原子方法,它們是和數(shù)據(jù)層進(jìn)行交互的。在Rules里面不進(jìn)行業(yè)務(wù)規(guī)則的運(yùn)算和處理, 它里面定義的是最小最細(xì)的方法。

1) 服務(wù)開發(fā)者使用.NET 接口定義一份契約。

使用WCF 服務(wù)模型時(shí),我們一般從定義契約開始。定義契約是很簡(jiǎn)單的,只要先編寫一個(gè)接口,并為其添加特性以指定這個(gè)接口是一個(gè)WCF契約。具體一個(gè)契約如下:

using System;

using System.Collections.Generic;

using System.ServiceModel;

using System.Text;

namespace Test

{

[ServiceContract]

public interface ITest

{

[OperationContract]

void TestDo();

}}

2) 服務(wù)開發(fā)者編寫一個(gè)實(shí)現(xiàn)該接口的類,即服務(wù)類型

using System;

using System.Collections.Generic;

using System.Text;

namespace Test

{

public class TestType:ITest

{

#region ITest Members

void TestDo()

{ }

#endregion

}}

由上面的代碼我們可以發(fā)現(xiàn)服務(wù)類型的定義就是實(shí)現(xiàn)了契約接口的類。

3) 服務(wù)開發(fā)者通過給服務(wù)類型及其方法添加特性對(duì)WCF行為做出適當(dāng)修改。

4) 用Service Configuration Editor或手動(dòng)配置服務(wù)的終結(jié)點(diǎn),即為已經(jīng)被服務(wù)類型實(shí)現(xiàn)的契約關(guān)聯(lián)地址和綁定。

5) 用Service Configuration Editor或手動(dòng)對(duì)WCF行為做出適當(dāng)?shù)男薷摹?/p>

3 WCF宿主端的開發(fā)

WCF與其它類庫另一個(gè)不同的地方,則在于WCF充分地體現(xiàn)了運(yùn)行時(shí)環(huán)境的概念。由于WCF對(duì)服務(wù)有著專門的需求,對(duì)于服務(wù)端,需要發(fā)布和運(yùn)行服務(wù);對(duì)于客戶端,則需要調(diào)用服務(wù);因而對(duì)于開發(fā)者,就需要編寫定義、發(fā)布、運(yùn)行、調(diào)用服務(wù)的相關(guān)代碼。而服務(wù)就只能運(yùn)行在特定的宿主上,服務(wù)開發(fā)者為服務(wù)提供恰當(dāng)?shù)倪\(yùn)行宿主環(huán)境,即承載服務(wù)。IIS 承載:在微軟的Internet信息服務(wù)器(IIS)中承載服務(wù)。該方式的主要優(yōu)勢(shì)是宿主進(jìn)程可以在客戶端提交第一次請(qǐng)求的時(shí)候自動(dòng)啟動(dòng),還可以借助IIS服務(wù)宿主進(jìn)程的生命周期。主要缺點(diǎn)在于只能使用HTTP協(xié)議。自承載:所謂自承載,就是由開發(fā)者提供和管理宿主進(jìn)程的生命周期。適用于:需要確定客戶端與服務(wù)之間的進(jìn)程(或機(jī)器)邊界時(shí);使用進(jìn)程內(nèi)托管,即服務(wù)與客戶端處于相同的進(jìn)程中時(shí)。WAS承載:只適用于Windows Vista。WAS與IIS的主要區(qū)別在于WAS并不局限于使用HTTP,它支持所有可用的WCF傳輸協(xié)議、端口和隊(duì)列。

在宿主內(nèi)部,則封裝了通道堆棧,其中又包含了對(duì)協(xié)議、編碼、消息傳輸、代理的處理。而在通道層的頂部,還提供了一個(gè)高級(jí)運(yùn)行時(shí),以針對(duì)應(yīng)用程序的開發(fā)人員。

4 客戶端的開發(fā)

客戶端的設(shè)計(jì)主要包括實(shí)現(xiàn)客戶端代理與配置文件、客戶端的回調(diào)接口契約的實(shí)現(xiàn)以及客戶端的窗體界面和Web 界面的設(shè)計(jì)與代碼邏輯實(shí)現(xiàn)。在客戶端配置文件中, 地址、綁定、契約分別與宿主端配置所一一對(duì)應(yīng)。客戶端開發(fā)者使用服務(wù)模型元數(shù)據(jù)工具下載描述服務(wù)的WSDL 并生成與服務(wù)通信所需要的代碼和配置文件。

首先我們?cè)跒g覽器中輸入http://localhost:8000/Test/?WSDL后將出現(xiàn)用來描述Web服務(wù)的WSDL信息。然后根據(jù)WSDL信息可以手工編寫相關(guān)代理程序代碼和配置文件,也可以利用相關(guān)工具來生成代理程序代碼和配置文件,具體命令如下:svcutil http://localhost:8000/Test/?wsdl/out:c:/client.cs /config:c:/app.config。

客戶端開發(fā)者利用代碼和配置文件進(jìn)行編程,與服務(wù)進(jìn)行通信。由上面工具生成的代理代碼使用方式如下:

……

using (TestProxy proxy=new TestProxy(\"BasicHttpBinding_ITest\"))

{

……

proxy.TestDo();

……

}

TestProxy:這個(gè)由工具生成的代理類名。

BasicHttpBinding_ITest:這是綁定的終結(jié)點(diǎn)名,指定在程序配置文件中使用哪個(gè)定義的終結(jié)點(diǎn)通信。

proxy.TestDo():這是執(zhí)行具體服務(wù)操作。

5 結(jié)束語

本文簡(jiǎn)要介紹了WCF和WCF進(jìn)行開發(fā)的基本步驟,展現(xiàn)了基于WCF開發(fā)分布式軟件系統(tǒng)的編程方法與程序設(shè)計(jì)技巧。這只是基本的、概念性的介紹,適用于一般的應(yīng)用場(chǎng)景,而例如WCF中安全性、事務(wù)、程序發(fā)布,定制等高級(jí)應(yīng)用需要大家結(jié)合實(shí)際繼續(xù)研究。對(duì)于使用.NET Framework 進(jìn)行軟件研發(fā)的開發(fā)人員來說,WCF是分布式編程領(lǐng)域的一個(gè)新臺(tái)階, 關(guān)注WCF技術(shù)的發(fā)展趨勢(shì)并在實(shí)際開發(fā)項(xiàng)目中合理的運(yùn)用它是十分必要的。

參考文獻(xiàn):

[1] Juval L.Programming WCF Services[M].Oreilly Associates Inc,2005.

[2] McMurtry C,rc Mercur.WCF 揭秘[M].北京:人民郵電出版社,2008.

[3] Bustamante M L.學(xué)習(xí)WCF:從原理到實(shí)踐[M].北京:電子工業(yè)出版社,2008.

[4] 張逸.WCF基礎(chǔ)知識(shí)問與答[EB/OL].[2008-04-15].http://www.iwms.net/n2005c13.aspx.

主站蜘蛛池模板: 91黄视频在线观看| 国产自产视频一区二区三区| 国产在线观看一区精品| 天堂久久久久久中文字幕| 国产视频欧美| 色婷婷亚洲十月十月色天| 婷婷99视频精品全部在线观看| 天堂在线www网亚洲| 天堂成人在线视频| 东京热一区二区三区无码视频| 无码一区18禁| 日本午夜三级| 亚洲欧美日韩成人在线| av在线5g无码天天| 精品久久久久成人码免费动漫| 波多野结衣一区二区三区四区视频 | 天天综合网色中文字幕| 欧美自慰一级看片免费| 日韩在线影院| 欧美精品aⅴ在线视频| 国产精品无码久久久久久| 网友自拍视频精品区| 欧美精品高清| 福利国产在线| 精品久久高清| 亚洲中文字幕23页在线| 成人一级免费视频| 色爽网免费视频| 久热中文字幕在线| 国产精品3p视频| 91探花在线观看国产最新| 在线免费无码视频| 亚洲精品无码在线播放网站| 国产微拍精品| 18禁高潮出水呻吟娇喘蜜芽| 91久久偷偷做嫩草影院精品| 2021天堂在线亚洲精品专区| 一本色道久久88亚洲综合| 国产成人禁片在线观看| 国产尤物在线播放| 亚洲第一综合天堂另类专| 国产91在线免费视频| аⅴ资源中文在线天堂| 真人高潮娇喘嗯啊在线观看| 欧美va亚洲va香蕉在线| 久久精品66| 国产杨幂丝袜av在线播放| 18禁色诱爆乳网站| 伊人无码视屏| 91精品网站| 欧美一级视频免费| 欧美中出一区二区| 国产9191精品免费观看| 不卡视频国产| 制服丝袜国产精品| 国产喷水视频| 亚洲成a∧人片在线观看无码| 99在线视频免费| 国产女人综合久久精品视| 91精品国产麻豆国产自产在线 | 国产一级做美女做受视频| 色哟哟国产成人精品| 婷婷色一区二区三区| 久久精品午夜视频| 伊人色综合久久天天| 国产色婷婷视频在线观看| 成人国产精品网站在线看| 丰满少妇αⅴ无码区| 久久亚洲国产视频| 99久久无色码中文字幕| 国内精品视频| 永久免费AⅤ无码网站在线观看| 97成人在线视频| 欧美精品v欧洲精品| 国产精品手机在线播放| 中文字幕无码制服中字| 永久在线精品免费视频观看| 91福利一区二区三区| a网站在线观看| 久久久久亚洲AV成人网站软件| 国产免费福利网站| 亚洲国产亚综合在线区|