私は現在作業しているASP.NET MVC 3アプリケーションを持っています。私は、ビジネスロジックを含み、コントローラによって利用されるサービスレイヤを実装しています。サービス自体はデータアクセス用のリポジトリを使用し、リポジトリはエンティティフレームワークを使用してデータベースと通信します。私のサービス層のサービスは、別々のプロジェクト/ DLL /アセンブリに存在する必要がありますか?
コントローラ>サービスレイヤ>リポジトリ(各サービスレイヤは、1つの注入可能なリポジトリに依存します)> Entity Framework>単一データベースです。
ChargePaymentCard(int cardId, decimal amount)
( PaymentServiceの一部):私は自分自身がサービス層ではなどUserServiceの、のEventService、PaymentService、などの項目
を作る見つける午前、私は、次のような機能を持っています
ActivateEvent(int eventId)
(のEventServiceの一部)SendValidationEmail(int userId)
(UserServiceの一部)
また、これを使用している第2の場所の例として、これらのサービスを利用する、別の単純なコンソールアプリケーションがスケジュールされたタスクとして実行されています。これらのサービスの複数のを使用する必要がある次の第2のWebアプリケーションもあります。
さらに、私たちは物事を分割して(例えば、単一のデータベースなど)、サービス指向アーキテクチャーに移行し、これらのいくつかをWebサービスに分解することをお勧めしたいと思いますいつか非.NETアプリで使用される)。私は、SOAへの飛躍をより苦痛の少ないものにしてくれるかもしれない歩みを目の当たりにしてきました。
サービスごとに別々のアセンブリ(DLL)を作成する作業を開始しましたが、間違ったパスを開始したのかどうか疑問に思っています。私は柔軟性を持ち、物事を疎結合させようとしていますが、(SOAや一般的な方向へ)私を助けてくれる道でしょうか、あるいは単に複雑さを加えるだけですか?代わりに、サービスレイヤー全体を含む単一のアセンブリ/ dllを作成し、使用する必要のあるサービスがあればそのアセンブリを使用する必要がありますか?
私が開始している経路の意味は分かりませんので、これに関する助言をいただければ幸いです。
WOW、今これは大きな質問です:) - いくつかの項目が必要です:アプリケーションはどれぐらいですか?あなたはどれくらいの負荷を期待していますか?これはどんなアプリケーションですか?多くの答えはプロジェクト全体の一般的な情報に依存するので、... – Sunny