【问题标题】:Is it possible to have one service class with multiple contract in WCF是否可以在 WCF 中拥有一个具有多个合同的服务类
【发布时间】:2014-05-25 11:57:34
【问题描述】:

有人说有可能是“具体类(甚至可能实现多个服务合同)”

链接在这里WCF: Why is Contract on Endpoint and not on Service?

我知道一个服务只能有一个服务合同,但从未听说过单一服务类的多个服务合同实现。告诉我这可能吗?如果是的话,任何人都可以将我重定向到一个完整的示例代码,我可以从中看到具有单个服务类的多个服务合同实现。谢谢

【问题讨论】:

    标签: wcf


    【解决方案1】:

    同意之前的回答,这就是实现两个合约的方式。 它可以用于安全目的,限制每个端点的责任区,为不同的端点共享资源。 点击链接,您可以找到详细说明:

    Host multiple contracts in one WCF service

    Run WCF ServiceHost with multiple contracts

    WCF how to bind multiple service contracts?

    来自 MSDN 的配置示例:

    http://msdn.microsoft.com/en-us/library/ms751424(v=vs.110).aspx

    【讨论】:

    • 我知道一项服务只能签订一份合同……是不是错了?人们何时以及为什么会为一项服务编写多个服务合同。请讨论情况。谢谢
    • 不要求你只能实现一个接口。此外,还有一种情况是您需要实现的接口很少。 1.它可以用于视觉。如果你想扩展你当前的服务,不建议改变接口。更好的选择是添加新的。 msdn.microsoft.com/en-us/library/ff384251.aspx

      msdn.microsoft.com/en-us/library/ms731060(v=vs.110).aspx(附录部分)

    • 2.您在逻辑上具有相同的操作。让我们说一些与订单有关的事情。但是您想向第一个客户端操作 1、操作 2 公开,而对于客户端 2,您想公开操作 3、操作 4。实现几个接口将允许您为每个接口声明一个端点。
    • 3.您拥有一个控制点的独特资源。假设您有一个缓存,您的服务的实例化类型是单例(或者更多生产版本是您有一个用于创建实例的工厂并注入单例缓存实例)。在这种情况下,您将可以从两个接口的实现中访问这个独特的资源。
    【解决方案2】:

    是的,这是可能的,这里有一个来自优秀的Programming WCF services 书籍的例子:

    [ServiceContract]
    interface IMyContract
    {
       [OperationContract]
       string MyMethod();
    }
    [ServiceContract]
    interface IMyOtherContract
    {
       [OperationContract]
       void MyOtherMethod();
    }
    
    class MyService : IMyContract,IMyOtherContract
    {
       public string MyMethod()
       {...}
       public void MyOtherMethod()
       {...}
    }
    

    【讨论】:

    • 那么配置文件会是什么样子,因为在配置文件中我们总是提到合同名称。给我一个适用于我的场景的有效配置条目。
    猜你喜欢
    • 1970-01-01
    • 2019-06-09
    • 2014-06-06
    • 1970-01-01
    • 2012-08-21
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 2018-04-23
    相关资源
    最近更新 更多