我是新手,但是阅读了一些关于 wcf 的文章后我才知道,如果我改变了,ServcieContrcat
那么我不仅要改变服务端,还要改变客户端端,这真的很难管理。
Example 1:
开发人员必须为订单处理创建 WCF 服务,具有以下功能:GetOrderById, GetOrdersByStatus, SaveOrder
ServiceContract 可能如下所示
[ServiceContract]
public interface IOrderService
{
[OperationContract]
Order GetOrderById(int orderId);
[OperationContract]
List<Order> GetOrdersByStatus(OrderStatus orderStatus);
[OperationContract]
void SaveOrder(Order order)
}
几个月后,例如,项目经理说:好的,我们的客户需要另一个功能:DeleteOrderById, GetOrdersByCustomerId
不再需要GetOrdersByStatus
,我们需要GetOrdersByStatusAndCustomerId
开发人员必须更新ServiceContrcat
和更新客户端。如您所见,任何更改ServiceContrcat
都非常困难
所以我正在寻找如何开发 wcf 服务的最佳指导,如果我们扩展功能或任何类型的更改,这不会产生任何问题,但客户端不会遇到任何问题。谢谢
一个人之前回答过同样的情况
这就是我所做的:我的所有 30 多个函数(并且列表不断增长)都将字符串、整数和字节()作为数据类型作为输入和输出参数,我创建了一个主单一端点和函数,用于接收,如一个输入参数,并作为输出返回一个简单的类。这个名为 HostInterface 的类只包含两个参数,一个字符串(我用它来封装我的所有字符串和整数)和一个 byte() 数组(我将所有二进制文件都填充到其中)
因此,无论客户是调用像 Ping() 这样简单的字符串参数,还是像 ResumeDownload() 那样使用 5 个字符串、2 个整数和一个字节数组的复杂函数,所有这些参数都封装在我的 HostInterface 类中,字符串并将整数放入一个字符串参数(如 XML)中,并将字节放入字节字段中。
我很欣赏他的回答,但真的不明白如何实施。所以如果有人去这个网址如何更改不影响客户端的 WCF 服务合同?
然后就知道他说了什么。
我正在寻找小的完整 wcf 服务代码,它可以帮助我可视化如何设计服务合同,如果我们稍后扩展服务合同的功能,那么将使用我的服务的客户将不会遇到任何问题。
并告诉我其他可能的指导方针来解决这种情况。谢谢