如何实现封装其他WCF服务的WCF服务的概念?

时间:2011-12-20 11:44:57

标签: c# wcf

我会尝试在代码中解释我想要的内容,因为无法用文字表达。

我有一些资源,我将其用法封装在WCF服务中,我有一个资源管理器来控制对这些资源的访问,这也是一个WCF服务,如下所示:

//Allows only one client to use it at the same time...
public interface IResource
{
    string GetResourceDescription();
    void DoWork();
    void BeginWork();
    void EndWork();
}

//Governs access and location of resources
public interface IResourceManager
{
    IEnumerable<string> GetResourcesDescriptions();
    bool IsResourceAvailable(string resourceDescription);
    void BeginWorkWith(string resourceDescription);
    void DoWorkWith(string resourceDescription)
    void EndWorkWith(string resourceDescription);
}

我在此代码中不喜欢的是,在使用IResourceManager时,我需要始终告诉我要用于服务操作的资源,因此基本上IResourceManager具有与IResource相同的服务操作IResource但需要额外的public interface IResourceManager { IEnumerable<string> GetResourcesDescriptions(); //I want it to return service proxy (ICommunicationObject) IResource GetResource(string resourceDescription); } 标识符作为参数。

我想要的是:

IResource

首先这是不可能的,其次,客户端无法直接在网络层与{{1}}通信(没有直接连接)。

到目前为止,我发现只有一个不丑的解决方案,就是创建一个模仿这种行为的客户端包装器。如何实现和使用这样的WCF服务?

1 个答案:

答案 0 :(得分:0)

请记住,从服务操作返回的对象只是数据。在通信通道的另一端,这些对象将“死”(仅包含数据,不包含任何方法)。解决问题的唯一方法就是解决问题。客户端包装听起来不错,我认为这是合理的解决方案。