Wcf不同的客户端不同的方法相同的接口

时间:2011-08-31 19:51:41

标签: wcf

我有一个tcpbinding的服务。我有一个包含20个方法的接口。我有不同类型的客户端。其中一个可以访问这20个方法的10个方法,我有另一个客户端可以访问所有20个方法和另一个谁只能访问15.so我怎样才能实现这个?我怎样才能进行操作合同的认证?哪个属性?有没有其他方法可以实现这个?你能说明我们有多少种方法可以实现这个目的吗?

2 个答案:

答案 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,否则他可以使用所有方法。