私は、WCFサービスがデータレイヤーを呼び出し、返されたデータを含むオブジェクトを持っていて、それをデータコントラクトに入れることをお勧めします。私の質問は、データコントラクトをデータレイヤーに貼り付けずに代わりに返すのはなぜですか?それには不利な点はありますか?理由は私のデータ層は単なるクラスライブラリであり、私はWebサービスを使用していないかもしれない複数のプラットフォームから呼び出せるようにしたいと考えています。私はこれに関してベストプラクティスを見つけることができないようです。何か案は?データコントラクトWCFはどこに置くのですか?データレイヤーに入れてもよろしいですか?
2
A
答えて
5
契約者をデータレイヤーに置くことの欠点は、データレイヤーをサービス契約に結び付けていることです。実際には互いに関係する必要はありません。理想的には、あなたのデータ担当者は、スズについて何を言っているのかを担当しなければなりません。あなたが探しているものはData Transfer Objects(DTO's)です。彼らはあなたのクライアントにデータを転送するだけです。サービス層では、必要なことを行うためにこれらをそれぞれのエンティティに変換することができます。これはオーバーヘッドを引き起こしますが、DTOとエンティティを前後にマッピングする方法が必要です。例えば、AutoMapper
関連する問題
- 1. WCFデータコントラクトにクラスインスタンスを含めるにはどうすればいいですか?
- 2. 一度しか走らないものはどこに置くのですか?
- 3. DJango Adminアクションはどこに置いてもいいですか?
- 4. ARIAの参考にしてもよろしいですか?
- 5. バッチファイルはどこに保存してコンピュータのどこにでも置くことができますか?
- 6. Magento - Mage_Downloadableを無効にしてもよろしいですか?
- 7. どのように水平線をボタンの後ろに置くのですか?
- 8. このコードを最もよく表しているパターンはどれですか?
- 9. バックグラウンドはありませんか? divの後ろにスライドするかもしれませんか?どのようにそれを置くかわからない
- 10. WCF "ArrayOfstring"データコントラクトのシリアライゼーションエラー
- 11. WCFはデータコントラクトを無視します
- 12. NETがどのように再びフレーズこれを、しかし...これは私がやろうとしているものですわからないネットワーク
- 13. behatでリポジトリをテストしてもよろしいですか?
- 14. カーソルがあるところにテキストを挿入するにはどうすればよいですか?
- 15. どうすればこのページから移動してもよろしいですか?新しく、onbeforeunloadのたくさんのソリューションを試しました
- 16. このページの警告を残してもよろしいですか?
- 17. ファイルライターを常に開いたままにしてもよろしいですか?
- 18. Symfonyでは、コントローラもモデルでもないクラスはどこに置くのですか?
- 19. SVProgressHUDをviewWillDisappearで閉じてもよろしいですか?
- 20. HibernateTransactionManagerではなくORM永続性のためにDataSourceTransactionManagerを使用してもよろしいですか?
- 21. WCFサービスを使用してSQLテーブルに値を挿入するにはどうすればよいですか?
- 22. Actionscript 3 - イベントリスナーハンドラの内部に一連のコードを入れてもよろしいですか?
- 23. 受け入れテストで実行中のプログラムでデータベースをリセットしてもよろしいですか?
- 24. CURLOPT_WRITEFUNCTIONを2回設定してもよろしいですか?
- 25. 「続行してもよろしいですか? SQLコマンド?
- 26. OpenGL 1.1を使用してもよろしいですか?
- 27. Apple App Storeで[トリガーリロード]を有効にしてもよろしいですか?
- 28. 統合テストでデータベースにヒットしてもよろしいですか?
- 29. WCF /クライアントアプリ - ビジネスロジックはどこに行くべきですか?
- 30. Pythonはタブをどこにも置かないでください
ありがとう、私はこれを見ていきます。本質的に同じことをする2つのオブジェクトを作成しても、冗長性があります。 – KingOfHypocrites
同じように見えるかもしれませんが、同じことはしません。 DTOはただ一つのことを行い、データを転送します。彼らはあなたのプレゼンテーション層にデータを移送するためだけに使用されるので、彼らは "ダム"で、彼らは何も行動を含むべきではありません。エンティティ(またはPOCOのもの)は通常、ドメインモデルの外観を表します。 AutoMapperを使用すると、これを簡単に実行できるようになります。 – diggingforfire
死に至らないように...しかし、DataContractsには何の振る舞いもなく、データの格納にのみ使用されているとは言えませんか?これは彼らをDTOにしませんか?だから本質的に私は私のDALで定義された型を返すという事実はカップリングの問題だと言っているのですか?したがって、すべてのデータコントラクトをサービスレイヤと同じレイヤに定義しますか? – KingOfHypocrites