我会尝试在代码中解释我想要的内容,因为无法用文字表达。
我有一些资源,我将其用法封装在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服务?
答案 0 :(得分:0)
请记住,从服务操作返回的对象只是数据。在通信通道的另一端,这些对象将“死”(仅包含数据,不包含任何方法)。解决问题的唯一方法就是解决问题。客户端包装听起来不错,我认为这是合理的解决方案。