22

パレルモ(http://jeffreypalermo.com/blog/the-onion-architecture-part-3/)が提案したタマネギのアーキテクチャを試験する、今後の内部アプリケーションのプロジェクト構造を設定しています。タマネギのアーキテクチャ

私は彼のガイドラインに従っていますが、これまでのところプロジェクトの構造について何らかの検証が必要です。図の前に

質問:

  1. 私は参照はすべて (矢印は「はへの参照を持っている」という意味の図のとおりに設定)が正しいですが、いくつかの検証は良いことだと思います。

  2. 依存関係解決レイヤーには何を入れる必要がありますか?これはどこですか? 助手が行くのですか?これには他のすべてのプロジェクトへの参照がありますか?

  3. Webサービスはどのようにして& UI、DALと通信しますか? (コアを通して?)

  4. どうすればよいですか? [私が知っている幅広い質問...]

次のように単純化された概念図は、(フォルダの名前空間を表す)である:

enter image description here enter image description here

+6

「インフラストラクチャ」の内部に「インタフェース」を置くことは間違っていると思います。それは 'コア'の一部でなければなりません。 – Jaider

答えて

7

私は、参照は、すべてが、いくつかの検証が良いでしょう(矢印は「はへの参照を持っている」という意味の図のとおりに設定)が正しいと思います。

1これは正常に見えますが、ダイアグラムに依存性の解決を挿入することをお勧めします。

依存関係解決レイヤーにはどのような設定をする必要がありますか?ヘルパーが行く場所ですか?これには他のすべてのプロジェクトへの参照がありますか?

2私は依存性注入物がここにあると信じています。

ウェブサービスはどのようにして& UI、DALと通信しますか? (コアを通して?)

3パレルモの図によればコアです。コアでは、リポジトリとドメインモデル、およびリポジトリとドメインモデルを扱うサービス(Webサービスではない)との対話を行います。また、UI/Webサービスは主にサービスと対話します。

どこに行く必要がありますか? [私が知っている広い質問...]

4答えはパレルモの図であると思います。しかし、私の考えでは、アーキテクチャを完全に理解しているときには、プロジェクトを組織することが異なることがあります。

私はDDDとMVC、依存性注入、リポジトリ/サービス、ORMなどの必要なデザインパターンを理解すると、オニオンアーキテクチャがわかりました。

6
  1. はい彼らは、依存関係のために期待解決。これらの依存関係は、逆になります。
  2. 名前(および修正された参考文献)は、 のIoCコンテナソリューションをホストすることを目的としていることを示しています。ヘルパーのための場所ではありません クラスは、解決のためのヘルパークラスを期待しています。
  3. コアでは、DALまたはドメインサービスのインターフェイスが定義されています。 DALお​​よび WebServicesはこれらのインターフェイスを実装しています。 UIの内部では、定義されたインターフェイスを通じて DALまたはサービスの実装を使用します。 正しい実装は、 依存関係解決コンポーネント( "Inversion Of Control"または "Dependency Injection"の概念を見てください)の助けによって解決されます。
  4. 3で説明したように、コアでは、DALとWebサービスの内部で実装されるインターフェイスを配置します。コアでは、あなたの実際のビジネスモデルを実装します。このモデルは、(依存関係解決コンポーネントの助けを借りて)定義されたインタフェースを介してDALとWebサービスを利用することができます。
+0

依存関係の解決については確かですか?もしそうならば、その依存関係は外側ではなく、タマネギの内側にあることを意味しないでしょうか?これは、コアが依存関係解決アセンブリに依存していることを意味します。 – Darbio

+0

右は、コアがDRに依存していないはずです。しかし、他の人は、UIの例:{DR.Resolve ()。CallserviceMethod();のようなコアインタフェースの実装を取得するためにDRが必要です。 } – rObiwahn

+3

私は依存関係解決に同意しません、rObiwahn。 DRは外層にあり、内層を参照する必要があります。 'DR.Resolve(ISomeService) 'と言うと、サービスロケータのアンチパターンのように聞こえる。依存関係解決では、必要なときに解決できるように、すべての実装がどこにあるかを知る必要があります。 –

関連する問題