問題タブ [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.
domain-driven-design - ドメイン駆動設計の優れたリソースはどこにありますか?
初心者から上級者まで、ドメイン駆動設計について知っておくべきことをすべて見つけるのに最適な場所はどこですか。
- 書籍
- ウェブサイト
- メーリングリスト
- ユーザーグループ
- カンファレンス
- 等
domain-driven-design - Linq to Sql と C# によるリポジトリ パターンの実装例
ASP.net MVC アプリケーションのドメイン駆動設計原則に従うリポジトリ パターンの実装例/リソースを探しています。誰かが共有できる良い例や学習リソースを持っていますか?
c# - DDD (ドメイン駆動設計) を使用するオープン ソース プロジェクトはありますか?
DDD の背後にある概念を理解しようとしていますが、本を読んだだけでは理解するのが難しく、トピックについてかなり抽象的な方法で議論される傾向があります。コード、できれば C# での DDD の優れた実装をいくつか見てみたいと思います。
オープンソースの世界で DDD を実践しているプロジェクトの良い例はありますか?
c# - ドメイン固有言語 (DSL) とドメイン駆動設計 (DDD)
ドメイン固有言語 (DSL) とドメイン駆動設計 (DDD) の違いと類似点は何ですか?
domain-driven-design - 不十分なドメイン層を回避しながら、充実した検証とビジネス ルールを維持する方法
ドメイン オブジェクトがあり、それが有効であることを確認するなど、そのドメイン オブジェクトの責任の中心となる便利なことをしたい場合、この検証を実行するために、関連するオブジェクトの状態にアクセスする必要がある場合があります。
ドメイン オブジェクトがリポジトリまたはデータ アクセス レイヤーを呼び出す必要がないようにするにはどうすればよいですか? パフォーマンスのために、遅延読み込みを使用しても常にコレクション関係をたどることができるとは限らず、ドメイン オブジェクトでクエリを実行したいことがよくあります。リポジトリの実装をドメインに依存性注入することはできますが、実際には純粋ではなく、テストが複雑になります。
私は常に物事を緩和し、DI を使用してドメインからリポジトリへのアクセスを許可してきました。複雑なアプリケーションで「純粋な」ドメイン層を使用する方法の明確な例は見たことがありません.
apache-flex - DDD および非同期リポジトリ
RMI と JMS の両方を使用して、Java バックエンドに接続されたリッチ クライアント (Flex で記述) に取り組んでいます。クライアントを DDD 方式で実装して、ドメイン オブジェクトに対する CRUD 操作用のリポジトリを作成することを考えていました。
ただし、問題は、すべてのバックエンド通信が非同期で発生し、クライアントが応答を受信するまで強制的に続行を待機させる方法がないことです。つまり、低レベルでは、リモート オブジェクトのメソッドを呼び出すことができ、戻り値として AsyncToken を取得できます。その後、asynctoken のイベントをリッスンして、呼び出しが成功したか失敗したかを確認できます。ただし、これはリポジトリの背後にある主なアイデアを壊し、技術的な詳細をクライアントから隠します。
私が推測する2つのオプションがあるかもしれません:
- リポジトリのメソッドが asynctoken を返すようにします。これは面倒な解決策のように思えます。
- メソッドが空のコレクション (たとえば、findAll の場合) を返すようにします。このコレクションは、応答を受信したときに満たされます。
どちらも一長一短ありますので、皆様のご意見をお聞かせいただければと思います。
(これをさらに進めると、適切なキャッシュ戦略は何でしょうか?状況によっては、リポジトリからすべてのエンティティを要求するたびにリポジトリがサーバーを呼び出すことは望ましくありません。リポジトリのメソッドの署名にどのように影響しますか? )
c# - ドメイン駆動設計-論理的削除
だから、私は素晴らしいドメインモデルを構築しました。リポジトリはデータアクセスとそうでないものを処理します。理由を削除とともにログに記録する必要があることを示す新しい要件がポップアップ表示されました。これまで、削除はかなり単純でした=> Entity.Children.Remove(child)。ORMツールが状態管理を処理していたため、内部変更の追跡は行われませんでした。ただし、これをどのように処理するかは正確にはわかりません。
1)削除された子コレクションを親エンティティに保持し、変更追跡をnHibernateから引き出して、自分で処理することができます。
2)??????
dns - エンティティの視点
コンテキスト: だから、とてつもなく複雑なドメイン モデルを構築しようとしています。ユーザーと話すと、システムの使用方法は複数あります(たとえば、従業員の観点からの方法と、雇用主の観点からの方法など)。実際には、コア ドメインを再利用する複数のアプリケーションです。
質問: 複数の観点からドメインを作成するのは間違っていますか? たとえば、ビジネスの運営に合わせてドメインを構築するということは、エンティティなどに関する追加情報を保持するあらゆる種類の関係クラスを作成することを意味します。リレーションシップ クラスは、親エンティティにロールバックできます。
アイデア?反論?私は完全に基地外ですか?
orm - 意見募集: ドメイン モデル内のエンティティを接続するのと切断するのとではどちらが良いですか?
新しいプロジェクトを開始しています。私はDDDのアプローチに従いたいと思っています。私たちはビジネスと話し、ドメインについてある程度の詳細な洞察を得ることができました (インターネット TV)。
チームは 5 人で分散しています。データアクセスにはリポジトリパターンを採用しています。私たちは全体的にサービスベースのアプローチに従っています。一部の操作は REST API を介して公開し、一部は独自のクライアント アプリケーションを介して公開します。
ORM の経験がない人 (私も現時点では大量に持っているわけではありません) は、エンティティ間の関係を持たないエンティティをモデル化したいと考えています。これは、リポジトリを使用する開発者が ORM がどのような影響を与えるかを正確に知る必要があるという理論的根拠があります。データベースに持っています。私が指摘したいのは、これは非常におしゃべりな一連のサービス、維持およびテストするコードの増加、そして根本的に要点を逃したドメイン モデルになるということです。私はこれが良いアプローチだとは思いませんし、私が話をした人もそうではありません。
このアプローチの実装に対する彼らの望みは、リポジトリ ファサードの下の Linq2SQL です。これには、2 番目のモデル、モデルとドメイン モデル間のマッピング クラス/レイヤー、および汎用リポジトリを作成することが (これまで見てきたように) 不可能であるように見えるため、リポジトリ内で多くの複製が必要です。また、継承を利用する L2S エンティティをマップすることもできません (つまり、すべてのエンティティには、作成者、作成者などのプロパティが必要です)。
1 番目の質問: 考えを変える方法について誰かアドバイスをもらえますか? 私は、NHibernate を使用するサイド プロジェクトを作成中です。これはもちろん DDD アプローチをサポートしていますが、これは「コードを見せてください」が強力な議論であることに基づいています。
2 番目の質問: NHibernate を使用した on-my-own-time サイド プロジェクトで、どのようなことをデモンストレーションする必要がありますか? 私はそれに慣れていません。彼らが NHibernate を嫌う理由の 1 つは、学習曲線と XML の要件です。私の反論は、これは強力なツールであり、Fluent NHibernate は XML の必要性を排除するというものです。彼らはまだそれが好きではありません。
c# - 文字列セットをプレゼンテーション層に取り込む
私たちは、C#で記述され、NHibernateを使用してオブジェクトをデータベースにマッピングしている病院情報システムに取り組んでいます。MVCパターンは、ビジネスロジックをUIから分離するために使用されています。ここに問題があります、
可変サイズの異なる文字列のセットをUIにどのように取得しますか?
たとえば、Contact
オブジェクトには、City
どの都市の連絡先が存在するかを保持するという名前のプロパティがあります。アプリが作成されている国には、80を超える都市があります。これらの都市をコンボボックスにどのように書き込むことができますか?(またはデータグリッド、テーブルなど)この例では、都市番号は固定されています。長い間、別の都市を追加する必要はありません。(都市リストが変更された場合、再コンパイルは問題になりません)
たとえば、Contact
オブジェクトにはFooBar
1000の異なる文字列値を保持するという名前の別のプロパティがあり、これらの値はそのプロパティのコンボボックスから選択されます。また、このセットは、ユーザーが必要に応じて拡張できます。これらの値をコンボボックスにどのようにロードしますか?(文字列リストがコンボボックスオブジェクトに静的に書き込まれる場合、再コンパイルは問題になります)
私は以下のようにさまざまな解決策を持っています
- コードまたはデザイナーのコンボボックスに静的に書き込まれるすべての文字列値
- リソースファイルから値を取得します
- これらの値をXMLファイルに書き込みます(実際には上記と同じですが、再コンパイルする必要はありません)
City
オブジェクトを作成し、NHibernateを使用してテーブルからリストに値を取得しCITY
ます- andプロパティ
StringHolder
を持つという名前のクラスを作成します。すべての文字列値(およびを含む)は、。という名前の1つのテーブルにのみ書き込まれます。そして、NHibernateで「CITY」や「FOOBAR」などのキーを使用してこれらの値を取得します。Type
Value
City
FooBar
STRINGHOLDER
どちらを選びますか?それとも私に別のものを提案してもらえますか?
皆さんありがとう