1

マルチテナンシーを含む新製品を設計しています。ASP.NET と C# で記述され、Windows Azure またはその他のクラウド ホスティング ソリューションでホストされる場合があります。

私たちは MVC やその他のテクノロジを検討してきましたが、正直なところ、さまざまな頭字語 (MVC、EF、WCF など) に行き詰まりつつあります。

アプリケーションの特定の要件が頭痛の種です。ユーザーはデータベースにフィールドを追加したり、まったく新しいモジュールを作成したりできます。

その結果、各テナントは、システムを使用する他のすべてのテナントとは異なる構造のデータベースを持つことになります。データベースを共有するのではなく、すべてのテナントが独自のデータベースを持つことを想定しています。

(システムへのフィールドなどの追加は、Web インターフェイスを使用して実行されます)。

問題はありませんが、MVC のデータ モデルを作成するときに問題が発生します。このリンクによると、テーブルにフィールドを追加するためにプログラムでデータ モデルを変更することは不可能のようです。

実行時に EDM を作成しますか?

これは私たちにとって大きな頭痛の種です。MVC を使用しない場合でも、データ モデルを作成する必要があると思います (おそらく LINQ to SQL で使用するため)。

多数のフィールドを含むテーブルを用意することを検討しています。ユーザーがフォームにフィールドを追加したい場合、データベースにフィールドを追加する代わりに、テーブルに既存のフィールドを割り当てます。でも、そのアイデアが好きかどうかはわかりません。

もちろん、MVC や Entity Framework を使用する必要はありませんが、Microsoft が今後の開発に向けて私たちを導くのは、これらの種類のテクノロジであるように私には思えます。

何かご意見は?ユーザーがカスタマイズ可能なアプリケーションというこのアイデアを検討したのは、私たちが世界で初めてではないと思います。

4

3 に答える 3

0

ここで説明されているように、「名前と値のペア」タイプのテーブルを作成するオプションを十分に検討したことを確認して くださいhttp://msdn.microsoft.com/en-us/library/aa479086.aspx#mlttntda_nvpカスタマイズ可能なスキーマで。また、SQL アカウントがその場でテーブルを作成できるようにするには、より高い権限を SQL アカウントに付与する必要があることも忘れないでください。カスタマイズ可能なスキーマは、SQL アカウントにもより高い権限が必要になることを意味します。これらのより高いアクセス許可をテナント アカウントに割り当てるのではなく、これらのタスクを実行できる別のプロビジョニング アカウントに割り当てることをお勧めします。

また、EF に労力を費やす前に、「EF の不信任投票」をグーグルで検索してみてください。これは主に以前のバージョンへの反応として作成されたものですが (私は信じています)、読み進める価値があることは間違いありません。nHibernate は調査する価値のある代替手段です。

于 2010-11-18T03:30:15.013 に答える
0

ユーザーがデータベース スキーマを変更できるようにするのは悪い考えのように思えます。抽象化の層が欠けていると思います。私の考えでは、データベースを使用して、顧客のデータの形式を記述するデータを保持する方が正しいでしょう。実際のデータは、バージョン情報を含むテキスト列に xml として保存されます。このソリューションはニーズに合わないかもしれませんが、プロジェクトの詳細はわかりません。ですから、それを私の5セントと考えてください。

于 2010-10-07T14:58:22.197 に答える