WCF开发工具功能强大,可以帮助我们实现许多功能需求。在这里我们会为大家介绍一下WCF服务验证的相关内容,主要包括对其参数以及消息等的验证。希望初学者们能从中获得一些帮助。
如果你的服务操作接受一些基本类型的参数,譬如:
- [ServiceContract]
- public interface IOrdersService
- {
- [OperationContract]
- int CreateOrder(string currency, double amount);
- }
并且你想要通过WCF服务验证它们,你可以在服务契约中使用基于参数的验证。
- [ServiceContract]
- public interface IOrdersService
- {
- [OperationContract]
- int CreateOrder(
- [NotNullValidator] string currency,
- [RangeValidator(1.0, RangeBoundaryType.Inclusive, 2.0,
- RangeBoundaryType.Inclusive)] double amount);
- }
请注意在服务操作的每一个参数前面的验证属性的用法。这些属性指定了参数验证的必须条件,只有表注了这些属性,Validation Application Block 才能在运行时给予验证。
验证传递给服务操作的消息契约或者数据契约.如果你的服务操作接受一个数据契约参数或者消息契约参数,你事实上可以利用基于契约的验证。譬如,如下的定单数据的数据契约有验证逻辑那确保Currency属性的值是预先定义的值。
- [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; }
- }
- }
现在,当你在一个服务契约中传递它的时候,你没有必要指定基于参数的验证,因为在传递数据契约的时候它从数据契约中进行验证。
- [OperationContract]
- OrderInfo CreateOrder(OrderData orderData);
为了验证一个业务对象,其实用属性并不是唯一的方法。如果你需要更多的弹性,你还可以通过配置文件完成同样的功能。以上就是对WCF服务验证的相关介绍。
【编辑推荐】