3

EF 4.3と移行を使用してWebプラットフォーム(CMSの王)を構築しようとしています。だから私は電子ショップ、ニュースレター、ブログなどの他のプロジェクトからすべての仕事を分解したい。モデルを含む別々のClassLibraryプロジェクトに入れます(おそらく後でNuGetパッケージをいくつか作ります)。そして私はそれらを私のカスタムmvc3テンプレートに統合して、コントローラとビューのための高度な足場を使うことを望んでいました。EFを使用したモジュールを使用したWebプラットフォームの設計4.3

まず、私の認証モデル(いくつかのリポジトリと、2つのEntity Frameworkオブジェクトを持ついくつかのカスタムプロバイダ:UserとRole "BaseDataContext"を使用する)を含むClassLibraryプロジェクトを持つMVC3カスタムテンプレートがあります。 もう1つ、私のブログのモデル(すべてのEF POCO、いくつかのリポジトリと "BlogDataContext")を含むBlogという別のClassLibraryプロジェクトがあります。 私はIoCも使用しています。

私が遭遇した最初の問題は、CircularDependecyでした。私のBlog.AuthorにTemplate.UserとUser POCOを継承させたい場合は、私のブログから私のテンプレートへの参照とテンプレートからの私のブログへの参照が必要です。私の著者への言及を含んでいます。 私は、認証とブログモデルが同じ "レベル"にあり、同じクラスライブラリにあるはずですが、もっと多くのライブラリを後で追加することを許可しなければならないという事実に留意する必要があります(例えば、 "ニュースレター"ライブラリ)、私はエンティティを1つの単一のlibに分解することはできません。 私が考えている2番目の問題は、複数のDataContextを使用することですが、それは別の問題です。

結論として、私の質問はあまり具体的ではありません。これは建築設計上の疑問です。 達成しようとしていることは可能ですか?それとも、CircularDependencyの問題への回避策を見つけても安全ですか? 「CMS」をどのように設計すればいいのですか、私は自分の仕事を再利用するためにどのようにシンプルにするべきですか? (移行機能は面白いようでした。たとえば、働いている電子店舗があり、クライアントからブログを追加するようリクエストした場合)

ありがとうございます。

+0

こんにちは、それは真実ではありません。同じレベルのライブラリでなければなりません。もしあなたがEF 4.3について話すなら、あなたのエンティティモデルには別のクラスライブラリを使うことができます。 –

答えて

1

デザイン全体を切り離し、すべての論理ユニット(シングルサインオン、cms、e-comm、レポートなど)を互いに独立させ、それらの間で最小限の量で通信する方法を見つけますデータは可能です。たとえば、ユーザー全体のオブジェクトではなく、認証されたユーザーのGUIDをCMSに渡すことができます。 WCFWFを使用して、この通信を調整したり、ワークフローを作成したりすることができます。プラットフォームがプラガブルでスケーラブルで、必要に応じてコンポーネントを追加または削除できます。負荷に応じてリソースを削除します。

関連する問題