2009-05-02 14 views
1

私は多くのメソッドとDataContractsを持つWCFサービスを持っています。これは通常、大規模なアプリケーション "A"によって消費されます。私は、非常に同じサーバーを使用する小さなアプリケーション "B"を作成したいが、サービスのほんのいくつかの方法しか作成していない。 XAPのサイズを小さくしたいのですが、クライアントがサービスで公開されているすべてのメソッドの一部を使用しているため、Visual Studioによって自動的に作成されたサービス参照ファイルよりも小さいサービス参照ファイルが必要です。私は手動では使用されていないメソッドを削除することができますが、実際にはupdate serviceコマンドを使用することはできません。WCFでトリミングされたサービスを作成する方法

どのようなソリューションですか?

多くのおかげで、 カロル

答えて

2

OK、あなたはMyGreatServiceクラスに実装されている方法の多くが付いている完全なIGreatServiceインタフェースを、持っています。

これについては、2番目のユーザーグループに公開するメソッドがほんの少ししかない新しい2番目のインターフェイスIMyServiceBを作成します。 - あなたは、のは言わせ

public class MyGreatService : IGreatService, IMyServiceB 
{ 
.. 
} 

サービスB基本的にはその後、ちょうどあなたが公開するサービスの実装では、それらのいくつかのメソッドを呼び出します:あなたはそれはので、あなたのサービスがIGreatServiceとIMyServiceB(つまり、何の問題絶対に可能だん)の両方を実装しますあなたにも(MethodBなど)IMyServiceB上で公開するIGreatServiceにMethodAを持っている - そのようにそれを実装:

public class MyGreatService : IGreatService, IMyServiceB 
{ 
    .... 
    // as defined on IGreatService 
    public void MethodA (....) 
    { 
    } 

    .... 
    public void MethodB (.....) // as defined on IMyServiceB 
    { 
     MethodA(); 
    } 
} 

その方法を、次の2つの別々のインターフェース(=サービス)を得るが、基本的に、あなたは、あなたのコードを書きます一度。

次に、IMyServiceBを個別のエンドポイントに公開することで、IMyServiceBのみを参照するようになっているユーザーは、別のエンドポイントに接続するだけで、サービスBの操作。

それは動作しますか?

マーク

+0

こんにちはマーク、それはかなりうまくいきます。私は同じサービスを使っていませんでした。なぜなら、それはシングルトンとして実装されていたのですが、プロキシのように機能する第2のサービスを作成しましたが、それでも私の問題は解決しました。 –

関連する問題