會話是兩個終結點之間消息交換的一種互相關系;執行個體化是服務對象的生存期控制。
(一)會話
會話由服務契約的SessionMode屬性指定,SessionMode屬性用于是否允許,禁止和要求會話狀态,它有三種設定:
Allowed 如果綁定支援會話,則契約支援會話
Required 要求綁定支援會話,否則引發異常
NotAllowed 指定契約不支援啟動會話的綁定
如果服務支援會話,則可以通過執行個體建立模式屬性指定服務契約執行個體與會話之間的關系。
(二)執行個體
ServiceBehavior屬性的InstanceContextMode屬性用來指定服務如何建立。系統預設為PerSession,用戶端與wcf服務在建立通話時,建立新對象,然後,在相同會話中使用同一對象。
WCF有三種對象建立模式:
PerSesson,為每個會話建立一個新的執行個體對象(預設),用于所有調用
PerCall,為服務的每個調用建立一個執行個體,調用完成後,回收。
Single,建立一個執行個體對象,用于所有的傳入,且在調用後不回收。
執行個體模式
要求會話狀态
允許的
禁止會話
PerCall
每個調用都具有一個會話和一個執行個體;如果無會話通道的行為,将引發異常
每個調用都具有一個會話和執行個體;如果無會話通道的行為,每個調用都具有一個執行個體
會話通道的行為将引發異常;無會話通道的行為,每個調用都具有一個執行個體
PerSession
每個通道都具有一個會話和執行個體;如果無會話通道的行為,将引發異常
每個通道都具有一個會話和執行個體;如果無會話通道的行為,則每個調用都具有一個執行個體
Single
所有的調用隻有一個會話和一個執行個體;如果無會話通道的行為,将引發異常
每個建立的執行個體或使用者指定的單一執行個體都具有一個會話和執行個體;如果無會話通道的行為則每個建立的單一執行個體或使用者指定的單一執行個體都具有一個執行個體
會話通道的行為将引發異常;無會話通道的行為每個建立的單一執行個體或使用者指定的單一執行個體都具有一個執行個體
未完
部落格園大道至簡
<a href="http://www.cnblogs.com/jams742003/" target="_blank">http://www.cnblogs.com/jams742003/</a>
轉載請注明:部落格園