我具有由一个单一的WCF服务用2个端点(EPA&EPB)。实施2个合同(CA&CB)

这是不可以出于安全目的,而纯粹是为了清晰/组织的原因,我想只有“看” ContractA的操作时,我发现通过endpointA服务;同样地,仅看到通过endpointB ContractB的操作。

我不需要“保护”这些本身操作。该方案是这样的,任何给定的客户端只需要该服务的一个“面”,不能两个(但是,在操作本身共享资源,因此是很有意义有一个单一的服务,而不是2个服务)。

似乎任何给定的服务基本上得到1个WSDL,ERGO所有的操作都暴露在所有端点。是,它的工作方式,或者是有办法“形”通过堵塞不是由端点合同规定操作的终点?

有帮助吗?

解决方案

默认情况下,你是对的 - 一个服务实现类获取一个WSDL,其中包含所有服务方法(从所有服务合同),此服务类实现

有没有办法目前(据我所知),以“形”任何(容易)的方式WSDL - WCF确实提供方式进入创建WSDL(静态或动态)的过程中,但那些AREN “吨微弱的心脏。这将是更容易为你刚刚拆分服务合同的执行分为两个独立的类,然后你有两个不同的服务,不同的WSDL的全部。

其他提示

马克是absolutelly右。我只是加入为什么发生这种情况在WCF。在WCF所有相关的元数据功能都是基于服务元数据行为和MEX终结。这两个功能是服务水平定义。所以你不能承担更高的granuality(除非你写了大量的自定义代码),并指定每个元数据端点。

WCF服务(类)直接映射到的wsdl:暴露每个合同作为单独的WSDL服务元素:(称为端点在WCF)端口。这是回答你的问题的重点。如果你不想在你的WSDL第二份合同:服务不能在同一个类实现它。

您刚才提到您的服务合同共享资源。在这种情况下,你的WCF服务可能还包含业务逻辑。这是你的问题的一个原因。良好的设计实现WCF服务是创建只能将其用作周围独立的业务逻辑类包装。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top