6

この問題にどのようにアプローチし、ドメイン駆動設計が本当にここで最高のパターンであるかを理解するための提案を探してください。エンタープライズ規模のDDD?

私のクライアントは、近々廃止されたツールとサービスのスタックを再構築中です。クライアントは急速に拡大しているeマーチャントです。それは、その大規模な電子商取引のウェブサイトです。このWebサイトの周りには、パートナーに公開されるさまざまなデータフィードがあります。マーケティング、販売、レポート作成などを支援する数多くの内部アプリケーションです。ユーザーサポートやパートナーサポートアプリケーションが数多くあります。さまざまなデータ同期、ETLジョブなどの優れた量...あなたは画像を取得します。

データストアとデータプロバイダも豊富です。 NOSQLのクラウドベースの大規模スケーラブルなストレージは、公開されているWebサイトのほとんどを提供します。多数のデータベースを持つSQLサーバは、内部アプリケーションにデータを提供します。メガカザブルな検索機能を提供するための特別な検索専用サーバーや、サードパーティーのさまざまなベンダーからアプリが消費するその他のフィードもあります。 DDDが採用されている場合、データストア固有のリポジ​​トリベースクラスから継承したリポジトリオブジェクトのさまざまなグループを作成する計画になります。

クライアントでは、ビジネスエンティティの大部分を"ジェネリック"レベル:エンティティ名と関係。その "一般的な"レベルの外には、アプリケーションに応じてさまざまな具体的なオブジェクトを適切に再利用するだけでなく、その実装が異なるかなりの量のエンティティがあります。例えば

:私は上の提案を探していますYのようなサポートコールを扱うアプリケーションのためながら、さらにZ.

のような詐欺分析をやって誰かのためにeコマースのウェブサイト上のOrderエンティティは、Xのように見えるかもしれませんこの巨大な混乱を処理するためにDDDやその他のアーキテクチャパターンを適合させる方法:再利用を容易にし、必要に応じてロジックを分離することができる堅固な企業戦略を持つ。通常の(拡張性、柔軟性、適応性、ユニットテスト可能、シンプルなど)の基準に加えて

異なるデータストアのため、DTOの構造は、データストアとデータストアとで大きく異なります。さまざまなビジネスニーズのために、さまざまなアプリには特定のエンティティの異なるバージョンが必要です。会社が急速に拡大しているため、未来は非常に不安定であり、柔軟性が最も重要です。

私の最大の問題は、ビジネスモデルを別のドメインに分けて、共有や再利用の量が多い場合でも、高いレベルの変更に対応できるようにすることです。

ありがとうございます。ご意見ありがとうございます。

P.S.このショップはマイクロソフトのショップです。 VS2010/.NET/SQL/Azureの

答えて

4

を使用すると、ドメイン駆動設計(DDD)と一緒にサービス指向アーキテクチャ(SOA)を考慮しなければならないように見える表面に

SOA + DDDを考えてみましょう。 NServiceBusの行に沿った何か。

のUdi漢はこちらから入手できDDD + NServiceBus上の偉大なビデオを持っています

DDDはその中核に*

DDDビジネスロジックを分離する程度である隔離されましたビジネスロジックを正しくモデリングできるように、アプリケーションとフレームワークのドメインロジックを使用します。 DDDはすべてのプロジェクトに適用されるわけではありませんが、DDDを維持するコストが得られるメリットよりも高い中小企業アプリケーションには適していません。

あなたの場合

あなたはIMOがDDDから非常に有益であろう、かなり複雑なビジネス・ルールセットを説明してきました。しかし、私はまた、ユニバーサル・メッセージング・システムを使用して複数のアーキテクチャーを1つのエンタープライズ・レベルのフレームワークに統合できるようにするSOAを検討することもできます。

NServiceBus SOA

  • http://www.udidahan.com/2009/02/07/nservicebus-19/
  • 使用は

    分散.NETエンタープライズシステムを設計するための強力で、軽量でありながら、オープンソースメッセージング フレームワークです。 プラグイン可能でありながら使いやすいNServiceBusは、堅牢でスケーラブルで保守しやすい サービスレイヤーと長時間実行されるビジネスプロセスを開発する際に、プログラマーに が頭角を現してくれます。

+0

+1「DDDはビジネスロジックを分離することです」 @イゴレク、あなたが見ているものの規模はそれを超えています。 (しかし、私はあなたがすでにそれを考えていたと思う) –

+1

@Igorek RE: "私の最大の問題を抱えていると思います..."是非、より大きな画像を "モデル化"(理解)しようと思うが、単一の "モデル"実装。彼らはまだマクロレベルで適用されるので、物事をシンプルにしようとし、良い古いOOの原則(懸念の分離のような)を忘れないでください。 –