设计WCF接口:没有out或ref参数
我有一个WCF服务和Web客户端。 Web服务实现一种方法SubmitOrders。 此方法采用订单集合。 问题是服务必须为每个订单返回一个结果数组 – true或false。 将WCF参数标记为out或ref毫无意义。 你会推荐什么?
[ServiceContact] public bool SubmitOrders(OrdersInfo) [DataContract] public class OrdersInfo { Order[] Orders; }
将WCF参数标记为out或ref毫无意义。
out参数在WCF中有意义。
你会推荐什么?
我建议使用参数。
注1:它会将你的out参数移动到你的第一个参数。
注意2:是的,您可以在WCF中返回具有复杂类型的对象。 使用[DataContract]属性和属性为[DataMember]的属性标记您的类。
使用复杂类型(具有DataContract属性的另一个类)作为回报。
喜欢
[ServiceContact] public OrdersResult SubmitOrders(OrdersInfo) [DataContract] public class OrdersInfo { Order[] Orders; } [DataContract] public class OrdersResult { ..... }
还可以在Order[] Orders;
上添加DataMember
Order[] Orders;
好吧,如果你想避免out和ref参数,你总是可以返回成功提交的订单的ID数组。
是的,在WCF操作上返回out参数是有意义的。 响应时,SOAP消息将包含传回的元素。
MSDN上有关于数据传输的好内容: 在服务合同中指定数据传输
此外,您需要在SubmitOrders上使用OperationContractAttribute (而不是ServiceContractAttribute)。
持有订单和真/假的特殊类,或者一系列的tupels。
该方法看起来像:
public OrdersInfo SubmitOrders(OrderInfo orders){ }
OrderInfo中的每个项目都有一个SubmissionStatusInfo,如:
class SubmissionStatusInfo{ enum Status { get; set; } string Message { get; set; } }
Status : Submitted, Failed, Error
等
Message
:一个字符串,提供有关状态的一些其他信息……
HTH