我有一个tcpbinding的服务。我有一个包含20个方法的接口。我有不同类型的客户端。其中一个可以访问这20个方法的10个方法,我有另一个客户端可以访问所有20个方法和另一个谁只能访问15.so我怎样才能实现这个?我怎样才能进行操作合同的认证?哪个属性?有没有其他方法可以实现这个?你能说明我们有多少种方法可以实现这个目的吗?
答案 0 :(得分:5)
您可以通过任何类型的协议绑定公开任何服务和所有方法。
你不能但是只公开你的一些方法 - 例如您将无法与20种方法签订单一服务合同,然后只将10种方法暴露给某组客户。
基本上,您需要为要公开的每组方法创建一个服务接口。
您可以做的是让服务类实现前10个方法,并将该服务公开给所有可以访问这10个方法的客户端。
然后,您可以拥有另外5个方法的第二个服务接口,并拥有第二个服务实现类,它实现了总共15个方法的第一个和第二个接口 - 并通过一些绑定将该服务公开给另一组客户端 - 依此类推......
答案 1 :(得分:-1)
今天我遇到了同样的问题而且实际上只是实现了。基本上你有N个不同的接口和N个不同的.svc文件。 主代码位于具有ALL功能的接口/ svc中。在其他interfaces / svc文件中,您必须声明方法,并且作为实现,您可以简单地声明主对象,然后调用其方法。例如:
主界面/ SVC - IMainInterface - Main.svc
class MainSVC
{
public void functionA()
{
//code
}
public void functionB()
{
//code
}
}
在其他界面中,只声明您需要的内容: 客户接口/ SVC - ICustomer - Customer.svc
class MainSVC
{
public void functionA()
{
Main main = new Main();
main.functionA();
}
}
当然,您的客户必须使用Customer.svc而不是Main.svc,否则他可以使用所有方法。