-----------------------------------------實(shí)例模型:
1.InstanceContentextMode:
-------PerCall(單調(diào)):無(wú)狀態(tài),每次調(diào)用之間都是獨(dú)立的,沒(méi)有關(guān)系;
為每個(gè)調(diào)用創(chuàng)建新的對(duì)象(全新的service);增加了整體吞吐量,內(nèi)存開(kāi)銷(xiāo)少(服務(wù)用時(shí)創(chuàng)建,不用時(shí)銷(xiāo)毀),不會(huì)產(chǎn)生并發(fā);
若服務(wù)對(duì)象創(chuàng)建需要較長(zhǎng)時(shí)間,就要考慮放棄這種方式;
聲明方式:
在實(shí)現(xiàn)接口的服務(wù)上添加標(biāo)簽
?[ServiceBehavior(InstanceContextMode=InstanceContextMode.PerCall)]
-----PerSession(系統(tǒng)缺省 會(huì)話):有狀態(tài)(指的是一個(gè)session內(nèi)部,session和session之間沒(méi)有聯(lián)系),每次調(diào)用具有相關(guān)的連續(xù)性,比如給一個(gè)變量賦值為1,那么第二次調(diào)用,變量值依
?
然為1;
單個(gè)client,單個(gè)session內(nèi)部,數(shù)據(jù)是共享的;,第一次調(diào)用和第二次調(diào)用是同一服務(wù);單不同client或不同session,是獨(dú)立的;
內(nèi)存開(kāi)銷(xiāo)大,引發(fā)多線程并發(fā);
不支持basichttpbinding;其他綁定差不多都支持;
可以配置對(duì)話(控制session):sessionMode:Allowed(缺省)如果binding為basichttpbinding,會(huì)強(qiáng)制改為percall,因?yàn)椴恢С郑唬?
notallowed:當(dāng)前wcf對(duì)象服務(wù)不支持會(huì)話,required:強(qiáng)制使用會(huì)話,若組合為Persession+basichttpBinding,就會(huì)剖出異常了,推薦使用notallowed和required;
會(huì)話的聲明:
在契約上添加聲明:? ?
[ServiceContract(SessionMode=SessionMode.Allowed)]
public interface Iguo
-----Single(單件模型):整個(gè)wcf在整個(gè)生命周期所有對(duì)象都是有狀態(tài)的,對(duì)象可以在不同的session之間共享;
只有一個(gè)servie,類(lèi)似單例模式吧,所有會(huì)話之間相互影響,內(nèi)存開(kāi)銷(xiāo)大,引發(fā)并發(fā);
----------session(會(huì)話):傳輸會(huì)話,可靠性會(huì)話,安全會(huì)話,應(yīng)用程序會(huì)話;
wcf會(huì)話有客戶(hù)端發(fā)起;sessionId:任何形式的會(huì)話都會(huì)生成會(huì)話信道,會(huì)話id將消息與信道關(guān)聯(lián);
sessionServiceClient proxy=new sessionServiceClient();
string s=proxy.innerChannel.sessionId;
---會(huì)話生命周期;通過(guò)配置文件進(jìn)行配置:receiveTimeOut
<netTcpBinding>
? <binding name="netTcp" receiveTimeOut="00:10:00"/>
</netTcpBinding>
---
[PerationContract(IsInitiating=false,IsTerminating=false)]
IsInitiating=true,:是否創(chuàng)建一個(gè)會(huì)話;
IsTerminating=false:是否結(jié)束一個(gè)會(huì)話,為true的話,在周期范圍內(nèi)也會(huì)清理,提高性能;
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
