クライアントが Windows フォーム アプリであり、サーバーが Windows サービスでホストされる WCF サービスであるクライアント/サーバー アプリケーションを作成しています。アプリケーションの両側を制御していることに注意してください。
インターフェイスに対するコーディングの実践を実装しようとしています。つまり、クライアント アプリケーションによって参照される共有アセンブリがあります。このプロジェクトには、クライアントに公開される WCF ServiceContracts とインターフェイスが含まれています。インターフェイスのみをクライアントに公開しようとしているため、特定の実装ではなく、コントラクトのみに依存します。これを行う理由の 1 つは、クライアントを再コンパイルおよび再デプロイすることなく、いつでもサービスを実装してドメインを変更できるようにするためです。この場合、インターフェース/コントラクトは変更されません。WCF サービスを再コンパイルして再デプロイするだけです。
私が今直面している設計上の問題は次のとおりです。たとえば、クライアントが具体的な実装ICustomer
について知らない場合、クライアントでオブジェクトの新しいインスタンスを作成するにはどうすればよいですか? Customer
DB に保存する新しい顧客を作成する必要があります。
依存性注入または Factory クラスを使用して新しいオブジェクトをインスタンス化する必要がありますか? それとも、クライアントが具体的な実装の新しいインスタンスを作成できるようにする必要がありますか?
私は TDD を行っていません。通常は、ICustomer
またはその他の公開されたインターフェイスを 1 つだけ実装します。