問題タブ [domain-driven-design]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
nhibernate - データ層で複数のデータ プロバイダーにアクセスする
私は、DDD の哲学を使用して開発されているビジネス アプリケーションに取り組んでいます。データベースは NHibernate を介してアクセスされ、データ層は DAO パターンを使用して実装されます。
UML クラス図を以下に示します。
UML クラス図 http://img266.imageshack.us/my.php?image=classdiagramhk0.png http://img266.imageshack.us/my.php?image=classdiagramhk0.png
デザインの良し悪しはわかりません。どう思いますか?
でも問題はデザインの良し悪しではありません。問題は、アプリケーションを起動した後IDaoFactory
、プレゼンテーション層でインスタンス化され、以下のように (MVC パターンを使用して設計された) プレゼンター クラスにパラメーターとして送信されます。
1 つのデータ プロバイダー (1 つのデータベース) だけを使用するのは簡単でした。しかし、XML からもデータを取得する必要があります。そして、開発の次の段階では、さまざまな Web サービスに接続し、受信データと送信データを操作する必要があります。
XML からのデータは、列挙型であるキーを使用して取得されます。という名前のクラスXMLLoader
をデータ層に追加し、インターフェイスILoader
をドメインに追加します。XMLLoader
署名が
以下のように、プレゼンテーション層で XMLLoader を使用して ILoader をインスタンス化する場合、データ層から XML データを取得するオブジェクトにそれを送信する必要があります。
Web サービス アクセス クラスの実装後
パラメータは時間の経過とともに大きくなります。クラス内のデータ アクセス オブジェクトのすべてのインスタンスを保持し、必要なプレゼンターに渡すことができると思います (シングルトン パターンも役立つ場合があります)。ドメイン層には、次のようなクラスが必要です。
メイン クラスでは、次のようにこの設計でインスタンス化を行うことができます。
このデザインについてどう思いますか、それとも別のデザインを提案してもらえますか?
回答者の皆様ありがとうございます...
domain-driven-design - 私たちは皆、同じIRepositoryを探していますか?
私は、さまざまなデータストアに対して機能する汎用リポジトリを作成する方法を考え出そうとしてきました。
それぞれの同じPOCOドメインクラスに対して作業したいと思います。同様のアプローチも検討しています。各ドメインクラスには独自のリポジトリがあります。
私の質問:1)最初のアプローチは実行可能ですか?2)2番目のアプローチに利点はありますか?
domain-driven-design - データ転送オブジェクト、ドメイン オブジェクト、およびリポジトリ
これらすべてがどのように連携するかを理解しようとしています。DTO は基本的に、ドメイン オブジェクトがフォームなどとやり取りするための単なるデータのコンテナーであることを知っています。Domain オブジェクトには DTO が含まれていますか?それとも、DTO と Domain オブジェクトには、手動でマップされる同じプロパティがすべて含まれていますか?
サービスで DTO 型を公開している場合、クライアントで get/set 操作ごとにラウンド トリップを作成せずに getter と setter を使用するにはどうすればよいですか? 1 つの長いコンストラクターを使用できることはわかっていますが、7 つを超えるプロパティがある場合は見苦しくなります。
リポジトリ パターンを実装する場合、DTO またはドメイン オブジェクトを渡しますか?
.net - ドメイン駆動設計のサンプル (特に .NET 中心)
わかりましたので、 Applying Domain-Driven Design and Patterns: Using .Net を注文しましたが、それが届くのを待っている間、現在のプロジェクトでテクニックを適用し始めようとしています。今ではコンセプトをかなりよく理解していますが、それを適用しようとすると、実行に追いついてしまい、さまざまなプロジェクトで自分の責任が漏れてしまいます。そのため、正しい方向に導くことができるリソース、特に作業できる実際のコードを含むサンプル プロジェクトを探しています。Alt.Net の世界にあるサンプル サイトを覚えていますが、実際に動作するプロジェクトがあり、人々はそれを参照できましたが、それを見つけることができませんでしたか? そのリンク、または共有できる他のリンクを持っている人はいますか??
編集: DomainDrivenDesign.org サイト (Java ベースですが) からこのサンプル アプリケーションと、以下に概説する例を見つけました。
Alt.Net サンプル アプリケーションを探していますが、どこにあるか知っている人はいますか?
agile - BizTalk で DDD、TDD を引き続き使用するにはどうすればよいですか?
仕事で BizTalk を使い始めたばかりで、DDD や TDD などについて学んだことをすべて使い続けたいと思っています。パイプラインやオーケストレーションなどを作成するとき、これは可能ですか、それとも常に Visio のようなエディターを使用する必要がありますか? ?
oop - ヘルプ!邪悪なサービスが私のオブジェクトを殺している
カプセル化とポリモーフィズムについてのアメリカンドリームを信じていたとき、Webサービスの侵入がRPC呼び出しでオブジェクトを洗い流しました...
復活したPONOを大事にしたとき、プロキシオブジェクトと呼ばれる醜い野蛮人の軍隊が私の土地を征服しました...
その後、サーバー側のDDDとNHibernateで平和が戻ってきたように見えましたが、SilverLightningが私の城を襲いました。今や再び飢えがあり、おいしい遅延読み込みは私の記憶にしかありません。そして何年もの間、私の貧弱なオブジェクトは古いサービスを再び消費する必要があります..。。
そして、私は恐怖に満ちています...世界は他の恐ろしい手続き型モンスターについてますます話し合っています...彼らはそれらを「ワークフロー」と呼んでいます...
オブジェクトを保存するにはどうすればよいですか?文字通り、私は誰にもサービスを提供しません。私は単純な小さなシステムを構築しています。データを見つけるためにサービスを使用したくありません。WebインターフェイスからWebインターフェイスへの通信にサービスを使用したくない...同僚との通信にカタツムリメールを使用したくないため。
何か案は?オブジェクトを保存できましたか?ドメインモデルよりも多くを節約できましたか?(うまくいけば、後者を管理しました...)
更新: これが明確でない場合...すべてがWebサービスベースを使用しているため、アーキテクチャが強制終了されました。「OO-死んでいる」というファッションがありました、サービスルール。SOAでは、すべてが動詞(「操作コントラクト」)に焦点を合わせている場合でも、オブジェクトに焦点を合わせるのは非常に困難です。デザインの面倒を見るのは難しいと思います。
architecture - ドメインクラスに「最後の20件」プロパティを実装する方法は?
StackOverflow のドメイン モデルを実装する必要があるとしましょう。
ORM を行っている場合、「最後のコメント」やその他の「最後の」ものを取得するためのプロパティを定義 (およびマップ) するにはどうすればよいですか? これはドメインモデルに反映されるべきだと私には思えます。
「すべてのコメント」が必要な場合もありますが...
silverlight - ASP.NETアプリのHibernateDAOレイヤーを再設計してSilverlightに移動するにはどうすればよいですか?
最後に、これについて答えを得てみてください。
データアクセスにHibernateを使用する単純なASP.NETアプリがあります。GUIは、「CalculateTotalSumOfOrders()」のようなCustomerオブジェクトのメソッドを呼び出すことができます。遅延読み込み(最適ではありませんが)は私にとってはうまくいきます。OrdersおよびOrderLinesコレクションがドメインオブジェクトで参照されると、データベースから自動的にフェッチされます。
ここで、ASP.NETよりも見栄えが良いため、同じアプリをSilverlightに書き直していると仮定します。Silverlightクライアントがブラウザーで実行されているため、遅延読み込みやデータアクセスを実行できなくなりました。Silverlightクライアントにデータを取り込むために使用するサービスの種類についてあまり考えずに、これを解決するにはどうすればよいですか?
domain-driven-design - ドメイン駆動型開発とデータベース駆動型開発をいつ使用するか?
データベース駆動型開発をいつ使用する必要があるか、ドメイン駆動型開発をいつ使用する必要があるかについて、誰でも良い答えを得ることができますか? これらの両方の開発アプローチは、それぞれの分野で重要です。しかし、どのような状況でどのアプローチが適切であるかは明確ではありません。推奨事項はありますか?
constructor - DDD +パブリックパラメーターレスコンストラクター-それらは存在する必要がありますか?
DDDのテナントの1つは、オブジェクトが無効な状態にならないようにすることです。私にとってこれは、99%の確率で無効な状態のオブジェクトになるため、パブリックパラメーターのないコンストラクターがあってはならないことを意味します。
これは前進するための良い方法ですか?クラスをすぐに新しくしたいだけの場合、それは巨大なPITAになります。