問題タブ [multi-tenant]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
asp.net - マルチテナントASPMVCアプリケーションを作成および管理するにはどうすればよいですか
ホスト名を使用して顧客を判別するマルチテナントアプリケーションを作成したいと思います。
例えば:
CustomerOne.myapp.com AnotherCo.myapp.comAndOneMore.myapp.com..。
データベースとセキュリティの面で問題なく実行できます。URLからホスト名を取得することもできますが、新しい顧客がオンラインでサインアップして提供できる基本的な配管を作成する方法を見つけるのに苦労しています。会社名、およびアプリケーションが新しいURLを作成するために、すぐに使用できるようにします。
誰か助けてもらえますか?
ありがとう、
ロブ。
asp.net - カスタムHttpHandlerを使用してパスを書き換える方法
http://www.tenant1.com/content/images/logo.gif
やのようなリクエストを受け取るマルチテナントアプリを書いていますhttp://www.anothertenant.com/content/images/logo.gif
。リクエストを実際にフォルダの場所にマップして/content/tenant1/images/logo.gif
、/content/anothertenant/images/logo.gif
私はasp.netMvc2を使用しているので、これを処理するルートまたはカスタムルートハンドラーを設定する方法があると確信していますか?助言がありますか?
ありがとう!
symfony1 - Doctrineを使用したSymfonyマルチテナントアプリでのデータ分離
マルチテナントアプリケーションを実装しようとしています。つまり、単一のデータベース内のすべてのクライアントのデータです。各共有テーブルには、tenant_id
データを分離するためのフィールドがあります。
すべてのSELECTクエリに{pseudoc-code}を追加してデータを分離したいのですが、where('tenant_id = ', $user->getTenantID())
事前に解決策を見つけることができませんでしたが、検討しているアプローチは次のとおりです。1)大雑把なアプローチ:すべてのクラスのすべてfetchAll
のfetchOne
関数をカスタマイズする(私は怒ります!)2)リスナーを使用する:preDqlSelect
イベントをコーディングし、すべてのクエリに「where」を追加する可能性があります3)override buildQuery
():の例を見つけることができませんでしたこれはフロントエンド用です4)実装contentformfilter
:ここでもポインタが必要です
誰かがこれらを検証し、効率性、適合性についてコメントしていただければ幸いです。また、誰かが別の戦略を使用してマルチテナンシーを達成した場合は、plシェアします。ありがとう
c# - asp.net MVCマルチテナンシー:User.Identity.IsAuthenticatedを上書き/影響する方法はありますか?
私はカスタム メンバーシップ プロバイダーを持っています。このプロバイダーは、asp.net Web フォーム アプリケーションに適していて、現在、新しい asp.net MVC マルチテナンシー アプリケーションで使用しています。
メンバーシップ プロバイダーは、Web フォーム内と同様に MVC で適切に機能しますが、ユーザーが特定の「テナント」に対して認証され、認証されているかどうかを確認できる追加の制約を追加する必要があります。現在、URL に基づいて現在の「TenantID」を追跡し、URL の変更を検出しています。User.Identity.IsAuthenticated を確認するだけでなく、Controller と View の基本クラスにこのようなものがあります。
User.Identity.IsAuthenticated をオーバーライド/置換して、直接使用できるようにするにはどうすればよいですか?
上記に関する提案やコメントは大歓迎です...
sql-server - SaaSマルチテナンシーアプリケーション:データのインポート/エクスポート/バックアップはどのように実装されていますか?
SaaSベースのマルチテナンシーアプリケーション、特に単一データベース設計でデータのインポート/エクスポート(またはバックアップ)を提供するアプリケーションはどのようになっていますか?
輸入:
物事をシンプルに保つ基本的なインポート、つまり仕様へのCSV(またはデータベース内のCSV列とフィールド間のマッピングを提供する方法)が役立つと思います。
エクスポート:
単一のデータベース設計で、データのXMLエクスポートとHTML(基本的なsitse生成)エクスポートを見たことがありますか?XMLの方が良いオプションだと思いますか?リレーショナルデータにどのように対応しますか?XML内のさまざまなものを参照し、関係のドキュメントを提供しますか、それともユーザーにこれを理解させますか?
ベンダーは、インポートして戻す/復元できるエクスポート/バックアップを提供していますか?
あなたのコメントはありがたいです。
c# - ASP.NET MVC アプリケーションで複数の顧客データベースを管理する
顧客ごとに個別の SQL Server データベースを必要とするアプリケーションを構築しています。
これを実現するには、新しい顧客フォルダーを作成し、そのフォルダーにプロトタイプ データベースのコピーを配置し、データベースの名前を変更して、それを新しい "データベース インスタンス" として SQL Server にアタッチできる必要があります。プロトタイプ データベースには、必要なテーブル、フィールド、およびインデックスの定義がすべて含まれていますが、データ レコードは含まれていません。SMO を使用して、データベースのアタッチ、デタッチ、および名前の変更を管理します。
プロトタイプ データベースを作成する過程で、Sql Server Management Studio を使用して、データベースのコピー (コンパニオン .MDF、.LDF ペア) を SQL Server にアタッチしようとしたところ、SSMS がデータベースが存在することを期待していることがわかりました。
これは SQL Server の "機能" ですか? 個々のデータベースを別々のディレクトリで管理する方法はありますか? それとも、すべての顧客データベースを同じディレクトリに配置する必要がありますか? (私はこれよりも少し良いコントロールを望んでいました).
注: 現在 SQL Server Express を使用していますが、テスト目的のみです。運用データベースは、SQL Server 2008、エンタープライズ バージョンになります。したがって、「ユーザー インスタンス」はオプションではありません。
php - マルチテナント データベースで使用するためにユーザー アカウントごとにデータベース接続をサポートする PHP フレームワーク (CodeIgniter など) はありますか?
マルチテナント SaaS アプリケーションの開発を検討していて、テナント ID と更新可能なビューを使用してデータを分離する確実な方法を説明しているサイトをいくつか見つけました。例:このブログ投稿
それはすべて、マスター ユーザー テーブルからユーザー アカウントを認証し、それぞれのデータベース接続でユーザー固有の資格情報を使用できるかどうかにかかっています。このようにして、ビューはユーザー ID を取得し、それをテナント ID にマップして、そのユーザーのビューを表示できます。ただし、ほとんどの PHP フレームワークは、データベース接続 (テキスト構成ファイルに格納されている) に関しては非常に静的になる傾向があります。彼らは対立しているようです。
誰も知っていますか: a) CodeIgniter がこれを適切に処理する方法を教えてください。b) 可能性のある別の PHP フレームワーク?
email - SaaS/マルチテナンシー アプリはどのように電子メール通知 (送受信) を実装していますか?
マルチテナント アプリケーションの場合、電子メール アカウントのセットアップとプログラミングの観点から、ベンダーはどのように電子メール通知を実装していますか?
電子メールの送信は、たとえば notifications@VendorName.com または noreply@VendorName.com などの一般的なアカウントから送信される可能性があります。これは、返信アドレスとリンクが電子メールの内容に含まれている可能性があることを考えると妥当と思われます。
電子メールの受信:たとえば、アプリケーションはどのように電子メールを受信しますか。サポート チケットを生成したり、電子メールでコメントをプロジェクト/タスクに割り当てたりします。件名内の ID と、アカウント名を含むアドレスへの返信を確認しました (例: notifications@AccountName.VendorName.com)。
プログラムで pop3 サーバーに接続して電子メールを受信し、件名の ID を検索できることは認識していますが、複数のサブホスト名の電子メール アドレスから単一のpop3 アカウントに電子メールを設定して受信する方法はありますか (よくわかりません)。そこの用語) 例: noreply@AccountName1.VendorName.com または noreply@AccountName2.VendorName.com アドレスからアカウント名を確認しますか? (URL のサブドメインをチェックするのと同様)
実践、経験、コメント、または提案はありますか?
(関連性はわかりませんが、C#asp.net-mvcおよびサービスなどを使用しています)
multi-tenant - マルチテナンシーソリューションとマルチユーザーソリューションの違いは何ですか?
私はこれをハードウェアの観点から理解していると思います。ハードウェアでは、複数の個人がソリューションの同じ処理とメモリを「共有」しています。しかし、私はgmailとfacebookを見てきました、それらのマルチテナントソリューションですか?私のソリューションが複数のユーザーをサポートできる限り、そのマルチテナントですか?
asp.net-mvc - マルチテナント アクセス制御: リポジトリまたはサービス層?
Rob Conery の MVC Storefront に基づくマルチテナント ASP.NET MVC アプリケーションでは、リポジトリまたはサービス層でテナントのデータをフィルタリングする必要がありますか?
1. リポジトリでテナントのデータをフィルタリングします。
2. サービスがリポジトリ データをテナント別にフィルター処理できるようにします。
私の直感では、サービス層でそれを行うように言っていますが (オプション 2)、各テナントは本質的に独自の「仮想リポジトリ」を持つべきであり (オプション 1)、この責任はリポジトリにあります。
- 最もエレガントなアプローチはどれですか: オプション 1、オプション 2、またはより良い方法はありますか?
アップデート:
リポジトリでフィルタリングするという提案されたアイデアを試しましたが、問題は、アプリケーションが (サブドメインを介して) テナント コンテキストを提供し、サービス レイヤーとのみ対話することです。リポジトリ層までコンテキストを渡すのが使命です。
代わりに、サービス層でデータをフィルタリングすることにしました。リポジトリは、サービス レイヤーで使用されるテナント固有のデータを取得するための適切なフィルターを使用して、リポジトリで物理的に利用可能なすべてのデータを表す必要があると思います。
最終更新:
不必要な複雑さのため、私はこのアプローチを断念しました。以下の私の答えを見てください。