WCF服務(wù)驗(yàn)證方式介紹
WCF開發(fā)工具功能強(qiáng)大,可以幫助我們實(shí)現(xiàn)許多功能需求。在這里我們會為大家介紹一下WCF服務(wù)驗(yàn)證的相關(guān)內(nèi)容,主要包括對其參數(shù)以及消息等的驗(yàn)證。希望初學(xué)者們能從中獲得一些幫助。
如果你的服務(wù)操作接受一些基本類型的參數(shù),譬如:
- [ServiceContract]
- public interface IOrdersService
- {
- [OperationContract]
- int CreateOrder(string currency, double amount);
- }
并且你想要通過WCF服務(wù)驗(yàn)證它們,你可以在服務(wù)契約中使用基于參數(shù)的驗(yàn)證。
- [ServiceContract]
- public interface IOrdersService
- {
- [OperationContract]
- int CreateOrder(
- [NotNullValidator] string currency,
- [RangeValidator(1.0, RangeBoundaryType.Inclusive, 2.0,
- RangeBoundaryType.Inclusive)] double amount);
- }
請注意在服務(wù)操作的每一個(gè)參數(shù)前面的驗(yàn)證屬性的用法。這些屬性指定了參數(shù)驗(yàn)證的必須條件,只有表注了這些屬性,Validation Application Block 才能在運(yùn)行時(shí)給予驗(yàn)證。
驗(yàn)證傳遞給服務(wù)操作的消息契約或者數(shù)據(jù)契約.如果你的服務(wù)操作接受一個(gè)數(shù)據(jù)契約參數(shù)或者消息契約參數(shù),你事實(shí)上可以利用基于契約的驗(yàn)證。譬如,如下的定單數(shù)據(jù)的數(shù)據(jù)契約有驗(yàn)證邏輯那確保Currency屬性的值是預(yù)先定義的值。
- [DataContract]
- public class OrderData
- {
- [DataMember]
- public double Amount
- {
- get { return amount; }
- set { amount = value; }
- }
- [DataMember]
- [DomainValidator("USD","EUR","JPY")]
- public string Currency
- {
- get { return currency; }
- set { currency = value; }
- }
- }
現(xiàn)在,當(dāng)你在一個(gè)服務(wù)契約中傳遞它的時(shí)候,你沒有必要指定基于參數(shù)的驗(yàn)證,因?yàn)樵趥鬟f數(shù)據(jù)契約的時(shí)候它從數(shù)據(jù)契約中進(jìn)行驗(yàn)證。
- [OperationContract]
- OrderInfo CreateOrder(OrderData orderData);
為了驗(yàn)證一個(gè)業(yè)務(wù)對象,其實(shí)用屬性并不是唯一的方法。如果你需要更多的彈性,你還可以通過配置文件完成同樣的功能。以上就是對WCF服務(wù)驗(yàn)證的相關(guān)介紹。
【編輯推薦】