日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

WCF的学习记录

發(fā)布時(shí)間:2025/3/13 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 WCF的学习记录 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

學(xué)習(xí)了一段時(shí)間的WCF,也抄了些例子,但是發(fā)現(xiàn)就這樣的話還是有些模糊,從今天開始把自己看過(guò)的一些東西重新整理一下,理一下思路。

WCF是基于SOA編程的一套架構(gòu)。它集成了.net service,Remotting,消息隊(duì)列和Enterprise Service等技術(shù)。實(shí)現(xiàn)了跨平臺(tái),跨系統(tǒng),跨本地網(wǎng)絡(luò)和internet的操作。目的是收發(fā)從客戶機(jī)到服務(wù)的消息。

(1)消息隊(duì)列(MSMQ)可以創(chuàng)建消息隊(duì)列,使進(jìn)程之間互相通信而忽略掉通信雙方。通信各方只是單純的向消息隊(duì)列中存放消息和從消息隊(duì)列中取出消息,進(jìn)而在沒有聯(lián)網(wǎng)的情況下也可以實(shí)現(xiàn)消息的交換。

(2)web service 發(fā)布于uri的一套應(yīng)用程序,向外界暴露一個(gè)用于調(diào)用的API?;趚ml,xsd,soap,uddi的開發(fā)手段。

(3).net remotting:跨越應(yīng)用程序池實(shí)現(xiàn)進(jìn)程間對(duì)象訪問的機(jī)制。remoting基于通道(TCP和HTTP),獲得服務(wù)端對(duì)象,然后通過(guò)proxy解析為本地客戶端對(duì)象。通過(guò)通道創(chuàng)建客戶端對(duì)象成為激活,remoting有兩種激活方式,服務(wù)端激活和客戶端激活。服務(wù)端激活又包括sigleton和sigleCall模式。

(4)soap?,F(xiàn)在的soap是一個(gè)XML表示的消息體。包含封套,封套包含標(biāo)題和消息體。

(5)WSDL webservice description language ,描述服務(wù)的操作和消息。

(6)JSON Javescript object notation 。適用于ajax客戶機(jī)。

?

上面列出了一些WCF的附屬技術(shù)。下面來(lái)看下WCF的幾大要素:

《1》 合同 contract

??????? contract 分為三種,一種為data contract 一種是 service contract 一種是message contract。他們定義了服務(wù)提供的功能和客戶端程序可以使用的功能。contract完全獨(dú)立于服務(wù)的實(shí)現(xiàn)代碼。

??????? 1,data contract 定義了服務(wù)中傳輸和接受的數(shù)據(jù)??梢允且粋€(gè)類。

?????????? data contract 最好定義一個(gè)namespace,因?yàn)閐ata contract 存在一個(gè)版本問題,如果添加一個(gè)可選成員,則不會(huì)破壞版本。如果增加或者刪除了需要字段,則contract會(huì)被破壞。

??????? 2,service contract 定義描述了服務(wù)的WSDL,用接口或類定義。

??????? 3,message contract 如果需要完全控制soap,可以使用message contract,它可以指定哪些部分放在soap標(biāo)題中,哪些放到body中。

《2》服務(wù)的實(shí)現(xiàn) 標(biāo)記為[seveice behavior]?? sessionMode.Requirst?? InstanceContextMode.Persession

??????1, 如果需要會(huì)話的話,則不能使用basicHttpBinding 。

????? 2,客戶端使用實(shí)現(xiàn)的服務(wù)可以使用兩種方式;一種是webservice的引用,另一種是使用ChannelFactory<Tchannel>.CreatChannel實(shí)例化連接服務(wù)的信道。

????? 3,錯(cuò)誤處理,可以寫一個(gè)錯(cuò)誤類[data contract] 定義錯(cuò)誤數(shù)據(jù)類,使用[Fault contract]屬性

《3》綁定 服務(wù)的通信方式 常用的有basicHttpBinding? WSHttpBinding,WebHttpBinding,NetTcpBinding........

?????? endpoint : address(uri)? contract? binding .

《4》主機(jī) host 即運(yùn)行服務(wù)的主機(jī),可以是windows服務(wù),可以是com+應(yīng)用,可以是WAS和IIS,wuindows應(yīng)用程序,或簡(jiǎn)單控制臺(tái)程序。

??????? 1,定制主機(jī)? 使用ServiceHost實(shí)例,讀取配置文件,定義綁定。然后open開接受調(diào)用,注意一點(diǎn),主線程推出前需close掉host。查看host屬性可使用communicationState。

??????? 2,WAS主機(jī),可以自動(dòng)激活服務(wù),健康監(jiān)控和循環(huán)處理。使用WAS主機(jī),需要?jiǎng)?chuàng)建一個(gè)web站點(diǎn)和.SVS文件。

《5》客戶程序:客戶應(yīng)用程序需要使用代理來(lái)訪問服務(wù),創(chuàng)建代理有三種方法,一是添加web應(yīng)用。二是使用Svcutil.exe工具創(chuàng)建。三是使用channelFactory類。

?《6》雙向通信 使用callback實(shí)現(xiàn)服務(wù)器回調(diào)客戶端代碼,實(shí)現(xiàn)雙向通信。

??????? 1,使用isoneway=true 保證服務(wù)不必等待方法在客戶程序上成功調(diào)用。

????????2,為了避免出現(xiàn)死鎖現(xiàn)象,使用concurrentcyMode.multiple或ConcuurentcyMode.Reentrant。訪問callback contract 要使用OperationContext訪問會(huì)話信息、消息標(biāo)題和屬性。在雙向通信時(shí)還可以訪問回調(diào)信道。通過(guò)泛型方法GetCallBackChannel()將信道返回客戶實(shí)例,調(diào)用callback實(shí)現(xiàn)方法。

??????? 3,在雙向通信中要使用DuplexChannelFactory類。這個(gè)類接收三個(gè)參數(shù),分別是綁定,uri和封裝了ClientCallBack類的一個(gè)InstanceContext類。

轉(zhuǎn)載于:https://www.cnblogs.com/zhaoyun2007/archive/2010/05/26/1743759.html

總結(jié)

以上是生活随笔為你收集整理的WCF的学习记录的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。