2

私は2つのインターフェースを持っています

public interface IServer1
{
[OperationContract(IsOneWay = false)]
void Subscribe();

[OperationContract(IsOneWay = false)]
[ServiceKnownType(typeof(ABC))]       
List<ABC> GetActiveData();
}

そして別のインターフェース

public interface IServer2
{
void Subscribe(IClient client);

List<ABC> GetActiveData(IClient client);
}

1 つのインターフェイスは WCF 通信に対応し、もう 1 つはリモート処理に対応します。このために 2 つのインターフェイスを作成するのは面倒です。これらのインターフェイスを実装するために、2 つの異なるプロキシが存在します。

これは 1 つのインターフェイスだけで実行できますか? あるいは、これには 2 つのインターフェースを用意するのが最善かもしれません。また、将来的には、WCF やリモート処理とは別のプロセス間通信モードが登場する可能性があるため、そのための別のインターフェイスも作成したくありません。

リモート処理の削除とWCFの使用に関しては、巨大なコードベースとしてそれを行うことしかできません. テストなどの追加の労力を必要としません。

ありがとう

4

1 に答える 1

2

さまざまな概念をカプセル化するというアドバイスに従います。あなたの場合、サービス インターフェイスは一貫しているように見えますが、通信モードが変わる可能性があります。

クライアント用のインターフェイスを 1 つ作成し、ファクトリ経由でインターフェイスを公開します。Factory 内で、使用中の通信モードに応じて、プロキシ オブジェクトを作成し、呼び出しをプロキシ オブジェクトに委譲します。これにより、サービス インターフェースもカプセル化されます。つまり、サービス インターフェースは 1 つでも異なっていてもかまいません。サービス インターフェースが同じ操作を提供しない限り、クライアントを変更する必要はありません。新しい通信モードの導入には、Factory クラスの単体テストのみが必要です。クライアント コードは単体テストする必要はありません。

于 2012-10-25T06:41:31.097 に答える