Wcf服务继承(扩展服务)

标签 wcf inheritance service callback servicecontract

我正在开发的程序使用 wcf 公开回调和服务。 基本上,服务所做的只是返回一些变量值。至于回调,他们只是更新这些变量。

我希望能够公开一个仅包含服务的类以及一个包含服务和回调的类。

例如:

[ServiceContract]
[ServiceBehavior(InstanceContextMode=InstanceContextMode::Single, ConcurrencyMode=ConcurrencyMode::Multiple)]
public ServiceClass
{
  [OperationContract]
  public int getValue()
  {
    return mValue;
  }

  protected static int mValue;

};

[ServiceContract]
[ServiceBehavior(InstanceContextMode=InstanceContextMode::Single, ConcurrencyMode=ConcurrencyMode::Multiple)]
public ServiceAndCallbackClass : ServiceClass
{
  [OperationContract]
  public bool subscribe()
  {
    // some subscribing stuff
  }

  public void MyCallback()
  {
    ++mValue;

    // Notify every subscriber with the new value
  }

};

如果我只想要服务,我可以使用基类。但是,如果我想订阅回调并使用该服务,我可以使用ServiceAndCallbackClass。

这可能吗?

最佳答案

我发现的一个解决方案:

制作2个接口(interface)。第一个仅包含服务,第二个继承第一个并添加回调。

一个实现类将实现这两​​个接口(interface)。

示例:

[ServiceContract]
[ServiceKnownType(typeof(ICallback))]
public interface IService
{
  [OperationContract]
  int GetData();
}

[ServiceContract]
public interface ICallback : IService
{
  [OperationContract]
  public bool subscribe();
}

[ServiceBehavior(InstanceContextMode=InstanceContextMode::Single, ConcurrencyMode=ConcurrencyMode::Multiple)]
public ServiceClass : IService, ICallback
{
  public int getValue()
  {
    return mValue;
  }

  public bool subscribe()
  {
    // some subscribing stuff
  }

  public void myCallback()
  {
    ++mValue;

    // Notify every subscriber with the new value
  }    

  protected static int;
};

[ServiceBehavior(InstanceContextMode=InstanceContextMode::Single, ConcurrencyMode=ConcurrencyMode::Multiple)]
public ServiceAndCallbackClass : ServiceClass
{
  // Dummy implementation used to create second service
};

从那里,我们可以创建 2 项服务。一种基于实现类,一种基于“Dummy”类。每个服务都将从不同的接口(interface)创建,从而公开不同的方法。

关于Wcf服务继承(扩展服务),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10249137/

相关文章:

java - 存在原始打字问题

c# - 将现有服务设置为 "Auto (Delayed start)"

service - 构建可配置的用户通知服务

c# - .NET 框架中是否有针对不同 Web 方法类型(GET、PUT、POST、DELETE、HEAD)的常量?

.net - 如何使用 Net.TCP 从 1 个客户端实现对 WCF 服务的并发请求

c++ - 此C++代码将如何工作?

javascript - (Angularjs) 共享一个 Controller 的 View 之间的数据不同步

wcf - 在WCF服务/登台中调试HTTP 500(内部服务器错误)

wcf - 如何从配置中动态传递端点详细信息?

Java从抽象类访问子类方法/变量