web-dev-qa-db-ja.com

アプリケーションのシングルテナントとマルチテナンシーのレベルを決定する方法

次のテクノロジーを使用してマルチテナンシーアプリケーション構造を実装するにはどうすればよいでしょうか。

  • 複数のSQLServerデータベース(テナントごとに1つ)
  • Asp.Net
  • エンティティフレームワーク
  • Active Directoryと、場合によっては承認用のカスタムロールプロバイダー。
1

それはすべて測定になります:

  • これらの8つのサイトのコード間のギャップはどのくらいですか?

  • このギャップは時間の経過とともにどのように進化しますか。

Webサイトがほぼ独立して進化すると予想される場合、8つのプロジェクトを持つことは理にかなっています。ただし、変更の多くが8つのWebサイトすべてに適用される場合、変更を8回行うのは残念です。

データベーススキーマを変更できないという制約があるため、とにかく1つのデータベースを持つことはできません(これが最初の選択であり、スキーマの違いがあまりにも露骨でリードできない場合にのみデータベースを分割する必要がある場合) switchステートメントを極端に使用して、共通スキーマを8つのケースすべてに適合させます。

これは、Entity Frameworkの使用と相まって、データアクセスレベルで8つのプロジェクトがあることを意味します。ここで、違いがほとんどない場合は、8つのデータプロバイダーのいずれかを使用して共通のWebサイトを作成することが理にかなっている場合があります。違いが多すぎると、最終的に8つのWebサイトプロジェクトにつながります。この場合でも、共通のライブラリにできるだけ多くのビジネスコードをエクスポートするようにしてください。

組織ごとに1つずつ、8つのWeb MVCWebサイト。ここに特定のビジネスロジック。

あなたの質問によると、ウェブサイトは90-95%似ているので、これはそれらのビジネスルールの90-95%が何度も何度も複製されることを意味します。他の複製と同様に、これは、誰かが1つのサイトのルールを変更するたびに、他の7つのサイトに同じ変更を加えるのを忘れるか、または1つのサイトの特異性を忘れたために、すべきでない場所にルールを作成するか、リグレッションを作成することを意味します。サイトの。

1