(2) 第二章 WCF服务与数据契约 服务契约详解(三)- [ServiceContract]特性
本章節(jié)主要目的:了解[ServiceContract]特性
如前幾章的進(jìn)度,相信已經(jīng)可以自己編寫服務(wù)契約以及如何在客戶端調(diào)用配置好的服務(wù)了。
本片主要講解一下SerivceContract中的幾個重要特性。
1.先看一下SerivceContract特性的成員列表
參數(shù)???????????????????? 說明
CallbackContract???????? 當(dāng)契約是雙工時,讀取或設(shè)置回調(diào)契約的類型
ConfigurationName??????? 獲取或設(shè)置服務(wù)在應(yīng)用程序配置文件中的名稱
HasProtectionLevel?????? 讀取一個值,表示此成員是否有一個保護(hù)級別
Name???????????????????? 獲取或設(shè)置WSDL文檔中<portType>元素的名稱
Namespace??????????????? 獲取或設(shè)置WSDL文檔中<portType>元素的名稱空間
ProtectionLevel????????? 設(shè)置對契約的綁定是否支持ProtectionLevel屬性的值
SessionMode????????????? 獲取或設(shè)置會話是否允許,以及是否得到了請求
好了,ServiceContract特性是指定附加上的類或接口做為服務(wù)的契約。顯示的使接口定義為CLR接口,并且使它能夠執(zhí)行WCF的操作,且每一個[ServiceContract]屬性都會映射到等價的WDL portType聲明中。
CallbackContract????????
此參數(shù)用于獲取或設(shè)置當(dāng)前契約在雙工模式通信時回調(diào)的契約。它包涵了回調(diào)契約的類型。示例代碼:
?
namespace CallbackContractDemo {[ServiceContract(CallbackContract = typeof(IDemoCallbackContract))]public interface IDemo{[OperationContract]int Add(int a, int b);}public interface IDemoCallbackContract{int GetResult(int c);} }?
大家可以看到CallbackContract = typeof(IDemoCallbackContract),那IDemoCallbackContract的內(nèi)容由調(diào)用的客戶端去實現(xiàn)。
?
ConfigurationName
ConfigurationName用于獲取或設(shè)置配置文件中的元素名稱。示例代碼:
?
[ServiceContract(ConfigurationName="Service")] public interface IDemo {[OperationContract]int Add(int a, int b); }下面是配置文件的內(nèi)容
<configuration><system.servicemodel><services><service name="Demo"></service></services></system.servicemodel> </configuration>?
HasProtectionLevel
這個就不多說了,就讀取一個值,表示此成員是否有一個保護(hù)級別。
??Name
? Name參數(shù)是用來設(shè)置或獲得在WSDL中<portType>元素的名稱。
? 當(dāng)然也可以用于不想將函數(shù)名稱以實名暴露在外面。
? Namespace
? Namespace參數(shù)用來設(shè)置或獲取WSDL中<portType>元素的命名空間。默認(rèn)為http://tempuri.org
??使用命名空間可以防止接口或類的命名沖突。當(dāng)然也可以用于不想將函數(shù)名稱以實名暴露在外面。
?
??? ProtectionLevel
??? 設(shè)定保護(hù)綁定的要求,每個端點的加密以及數(shù)字簽名等。
??? ProtectionLevel的參數(shù)的值來自System.Net.SecurityLevel.ProtectionLevel枚舉,也可以用下面的值:
????EncryptAndSign:簽名和加密來保證傳輸數(shù)據(jù)的機(jī)密性和完成性。
??? None:只驗證。
??? Sign:簽名能夠保證傳輸數(shù)據(jù)的完整性,不進(jìn)行加密。
???
??? SessionMode
??? 此屬性指定會話的類型。
??? 也是一個枚舉SessionMode。
??? Allowed:如果進(jìn)入的連接支持可靠會話,則契約支持可靠會話。
??? NotAllowed:指定的契約不支持可靠的會話。
??? Required:指定需要可靠會話的契約。
????要考慮的可靠會話的情況:
- 希望提供HTTP會話
?
- 在端點之間有間斷連接
?
- 存在代理媒介或傳輸橋
?
- 在端點之間有SOAP媒介
?
???
由于時間問題 待續(xù)中....見諒
轉(zhuǎn)載于:https://www.cnblogs.com/wujiang/archive/2012/01/06/2314978.html
總結(jié)
以上是生活随笔為你收集整理的(2) 第二章 WCF服务与数据契约 服务契约详解(三)- [ServiceContract]特性的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 行货好还是水货好?详解苹果iPhone5
- 下一篇: 转:ArcGIS提取面状道路中心线(转载