0
我对WCF中的一个场景感到困惑。基于客户端的暴露操作
我有WCF服务“SERVICE1”,它暴露两个操作“OP1”和“OP2”。
有两个客户端使用服务“CLIENT1”和“CLIENT2”。
条件是“CLIENT1”只能调用“OP1”,而“CLIENT2”仅限于“OP2”。
我对WCF中的一个场景感到困惑。基于客户端的暴露操作
我有WCF服务“SERVICE1”,它暴露两个操作“OP1”和“OP2”。
有两个客户端使用服务“CLIENT1”和“CLIENT2”。
条件是“CLIENT1”只能调用“OP1”,而“CLIENT2”仅限于“OP2”。
重构您的服务合同,以公开两个端点,接口,其中只有到被消耗它的客户端相关:
[ServiceContract]
public interface IService1
{
[OperationContract]
void OperationOne();
}
[ServiceContract]
public interface IService2
{
[OperationContract]
void OperationTwo();
}
public class MyServcie: IService1, IService2
{
//Implementation here...
}
这样的IService1
客户甚至不知道的方法IService2
存在。
这不限于WCF - 这是OOP不太好做法....
非常感谢......但我们是否有任何其他的方式,因为一个终点将被暴露在客户端? ..合同也将是相同的..我们不能通过相同的终点揭露两个合同... – Gopal
首先 - 为什么你想要暴露的操作,以不能使用的客户端?这似乎是在寻求麻烦。如果您真的想这样做,您可以在每次执行这些操作时都放置授权逻辑,以确保只有经过授权的客户端才能使用它们。 (http://msdn.microsoft.com/en-us/library/ff647503.aspx) – Lawrence
非常感谢......但是假设我们有一个合同,其中client1有6个操作,并且明天client2出现并说他只需要4个操作现有10个..我应该去为他创建一个单独的合同.means是否有必要为每个客户分别签订合同?有什么方法可以重用现有的合同吗? – Gopal