7

私はちょうどこの概念に頭を包み込もうとしています。私はいくつかの異なる Web API を作成しましたが、それらは常に Web サイトによって使用され、JSON を介してやり取りされてきました。Web API が Windows サービスによって使用される場合、実装をどのように構成するかについて質問があります。

この場合、既存のデータベースが既に存在するため、Entity Framework の Database First アプローチを使用したいと考えています。

モデルのクラス ライブラリ プロジェクトを作成し、Entity Framework を使用して既存のデータベースを調べ、必要なすべてのクラスを生成します。

次に、Web API プロジェクトを作成し、すべてのモデルを含むクラス ライブラリを追加します。ここまでは元気です。

私の質問は、Web API と対話する Windows サービスを構築するときに、クラス ライブラリ モデル プロジェクトからクラスにアクセスするにはどうすればよいかということです。そのプロジェクトを Windows サービスに追加できることはわかっていますが、Web API をほとんどバイパスするため、正しいアプローチとは思えません。

私の質問は、Windows サービスから Employee オブジェクトを作成して Web API に渡したい (データベースに挿入できるようにする) 場合だと思います。クラス ライブラリをWindows サービス プロジェクト?

4

2 に答える 2

10

n 層ソリューションでは、物理的な境界を越えてドメイン オブジェクトを渡すことはありませんが、消費者/呼び出し元が必要とする情報のみを保持するデータ転送オブジェクト(DTO) を実装します。

通常、データ転送オブジェクト全体を含む共有ライブラリを作成し、これをサーバーとクライアントの両方から参照します。

その後は、JSON シリアライザーを使用してデータ転送オブジェクトをシリアライズおよび/またはデシリアライズします。

ドメイン オブジェクトは、完全なオブジェクトより軽量であるため、常にデータ転送オブジェクトにマップされます。自問してみてください: 消費者が誰かの名前セカンド ネームしか必要としない場合、なぜネットワーク経由でより多くのデータを送信する必要があるのでしょうか?

さらに、クライアント アプリケーションとサービスでサーバーの依存関係を回避することが重要です。

役立つヒント:

于 2013-02-18T14:06:02.060 に答える
0

通常、Web API に使用される追加のモデル クラスを作成します。これらのモデル クラスには、多くの場合、エンティティのデータのサブセットのみが含まれます。さらに、この違いにより、真の RESTful API を作成できます。
Web API コントローラー クラス内で、Model と Entity の間のマッピングが行われます。
Windows サービスは、プロジェクトをモデル クラスで参照するだけで、エンティティ クラスでは参照しません。

于 2013-02-18T14:00:25.857 に答える