2011-12-20 8 views
0

私はコードで欲しいものを説明しようとしますが、原因は言葉でそれを公式化することはできません。他のWCFサービスをカプセル化する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という識別子を追加します。

は、私が欲しいのです:これは2番目、クライアントが直接ネットワーク層上IResourceと通信できない、不可能である

public interface IResourceManager 
{ 
    IEnumerable<string> GetResourcesDescriptions(); 
    //I want it to return service proxy (ICommunicationObject) 
    IResource GetResource(string resourceDescription); 
} 

まず(直接接続はありません)。

これまでのところ、この動作を模倣したクライアント側のラッパーを作成するには醜い解決策しか見つけられませんでした。どのように実装し、そのようなWCFサービスを使用する?

答えて

0

サービス操作から返されるオブジェクトはデータのみであることに注意してください。通信チャネルの反対側では、これらのオブジェクトは「死んでいる」(データのみを含み、方法は含まれない)である。それに対処する唯一の方法は、あなたがそれを解決する方法です。クライアント側のラッパーはいいと思うし、それは合理的な解決策だと思う。

関連する問題