设计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