1

サービスレイヤー、エンティティ、DTOSがCCL.Dataという個別のアセンブリに含まれています

問題:

すべての私のアプリケーションは、インターフェイスとIoCを使用してサービスレイヤーを直接参照しています。

たとえば、CCL.DataアセンブリにICustomerServiceというインターフェイスがあり、MyContextに依存するICustomerRepositoryに依存しています。私のアプリケーションはすべて、ICustomerServiceを参照してそのメソッドを呼び出しています.......これまでのところ問題はありません。

そこで、WCFプロジェクトを作成しました。このプロジェクトでCCL.Dataを参照しています。

新しいサービスを作成しますが、以下の場合、ICustomerServiceをWCFCustomerServiceClientに呼び出すアプリケーション内のすべてのポイントを変更する必要があります。プロジェクトに大きな影響を与えることなく、より良い方法が存在しますか?

    [ServiceContract]
    パブリックインターフェイスIWCFCustomerService
    {{
        【OperationContract】
        CustomerDTO GetCustomerById(int id);
    }

    パブリッククラスWCFCustomerService:IWCFCustomerService
    {{
        ICustomerService _customerService;
        public WCFCustomerService()
        {{
            MyContext context = new MyContext();
            ICustomerRepository customerRep = new CustomerRepository(context);
            _customerService = new CustomerService(customerRep);
        }

        public CustomerDTO GetCustomerById(int id)
        {{
            return _customerService.GetCustomerById(id);
        }

    }


Tks、ウィリアム

4

1 に答える 1

0

ICustomerServiceの代わりにIWCFCustomerServiceを再定義する必要がありますか?ServiceContract属性を元のICustomerServiceインターフェイスに追加するだけでは不可能ですか(WCF以外のコードでは無視されます)。(これはServiceModelへの依存を与えることは事実ですが、それから抜け出す方法はわかりません)。

ServiceRefernceを使用してプロキシコードを生成する場合、生成されるコードには、クライアント側で使用するための異なる名前空間のサービスインターフェイスが含まれることにも注意してください。そのバージョンのインターフェースを使用する義務はありませんが(プロキシがあり、プロキシの実装がない場合は煩わしいかもしれません)、dllからまたはクライアントにコンパイルされた組織インターフェース定義を使用できることに注意してください。

于 2012-04-24T15:56:30.153 に答える