0

正直に言うと、これが可能かどうかはわかりませんが、

クライアントプロキシの作成を上書きせずに、構成ファイルの使用を削除する方法があるかどうか疑問に思っています。例を挙げましょう:

クライアントアプリには、WCFDALプロジェクトがあります。これは、クライアントアプリが使用するWCFサーバーのラッパーです。現在、クライアントアプリは、構成ファイルで指定されたすべてのバインディングとエンドポイントを必要とし、通常(プロジェクトでは)WCFサービスをラップするために次のようなことを行います。

public MyObject GetMyObject(int id)
{
    using(var service = new MyObjectDataServiceClient())
    {
         return service.GetMyOBject(id);
    }
}

これにより、サーバーへの呼び出しが作成され、オブジェクトが返されます。クライアントアプリにバインディングとエンドポイントがない場合は、爆発します。データサービスクライアントの作成ごとにバインディングとエンドポイントを作成するか、独自のチャネルファクトリを作成してこれを行うことができますが、これは現在のWCFDALレイヤーコードを変更することを意味します。

私の目標は、構成ファイルの必要性を排除しながら、コードを変更することなくバインディングとエンドポイントを処理するプロセスをWCFDALレイヤーに挿入する方法を作成することです。

これまでの私の考えは、TTファイルを使用して、データサービスクライアントの部分的なクラスを作成し、チャネルファクトリ部分をオーバーライドすることでした。これは、データサービスクライアントのコンストラクター呼び出しが抽象クラス(System.ServiceModel.ClientBase <T>)に直接入り、構成を取得しようとするために失敗しました。この部分的なクラスを介して構成を調べ、WCFDALサービスレイヤーを変更しないことを停止する方法を見つけることができませんでした。

4

1 に答える 1

1

DALにバインディングとエンドポイントがある場合は、クライアントクラスの別のコンストラクター(バインディング+エンドポイントアドレスを取得するコンストラクター)を使用できます。そのコンストラクターは構成を完全にバイパスするため、構成に何も含める必要はありません。

于 2011-06-30T21:17:27.587 に答える