Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net WCF中客户端上服务操作的子集_.net_Wcf - Fatal编程技术网

.net WCF中客户端上服务操作的子集

.net WCF中客户端上服务操作的子集,.net,wcf,.net,Wcf,如果我有一个包含2个操作的服务契约,是否可能有一个客户端服务契约(.NET接口),它只包含其中一个操作?更一般地说,是否可以只在客户机上使用服务操作的子集,甚至不必为其他操作(及其相应的数据契约)生成代码正确的方法是创建一个新的OperationContract,它只包含您希望公开的方法,然后将该OperationContract绑定到一个新端点,并将该端点公开给您的客户。是的,这是绝对可能的。既然您提到了生成的代码,我猜您正在VisualStudio中使用服务引用。如果是这样,您可以简单地编辑

如果我有一个包含2个操作的服务契约,是否可能有一个客户端服务契约(.NET接口),它只包含其中一个操作?更一般地说,是否可以只在客户机上使用服务操作的子集,甚至不必为其他操作(及其相应的数据契约)生成代码正确的方法是创建一个新的
OperationContract
,它只包含您希望公开的方法,然后将该
OperationContract
绑定到一个新端点,并将该端点公开给您的客户。

是的,这是绝对可能的。既然您提到了生成的代码,我猜您正在VisualStudio中使用服务引用。如果是这样,您可以简单地编辑生成的接口和类,以省略希望排除的操作。但是,每次更新客户机项目中的服务引用时,都需要执行此编辑,因此,除非服务接口预计不会更改,否则这可能不是您希望采用的方法


不管服务的更改频率有多高,一种更优雅的方法是创建您自己的适配器,您所有的服务客户端代码都可以与之交互。

我有自己的客户端代码生成器(类似于svcuti)。我将只添加一个选项,在生成服务引用时,可以取消服务合同的某些操作。非常感谢您这么快的回复。