【发布时间】:2009-12-07 12:58:11
【问题描述】:
如果我有一个包含 2 个操作的服务合同,是否可以有一个只有其中一个操作的客户端服务合同(.NET 接口)?更一般地说,是否可以只在客户端使用服务操作的子集,甚至不必为其他操作(及其相应的数据合约)生成代码?
【问题讨论】:
如果我有一个包含 2 个操作的服务合同,是否可以有一个只有其中一个操作的客户端服务合同(.NET 接口)?更一般地说,是否可以只在客户端使用服务操作的子集,甚至不必为其他操作(及其相应的数据合约)生成代码?
【问题讨论】:
执行此操作的正确方法是创建一个新的 OperationContract,其中仅包含您希望公开的方法,然后将该 OperationContract 绑定到新端点并将该端点公开给您的客户端。
【讨论】:
是的,这绝对是可能的。由于您提到生成的代码,我猜您正在使用 Visual Studio 中的服务引用。如果是这样,您可以简单地编辑生成的接口和类以省略您希望排除的操作。但是,每次更新客户端项目中的服务引用时,您都需要执行此编辑,因此除非预计服务接口不会更改,否则您可能不希望采用这种方法。
无论服务更改的频率如何,一种更优雅的方法是创建您自己的适配器,您的所有服务客户端代码都可以与之交互。
【讨论】: