あたりOSGiサービスへ:どのように提供私たちは、次のニーズを特定しているため私たちは、(イメージバンクそれを呼び出すことができます)は、Webアプリケーションを開発しているクライアント
- アプリケーションがのセットで構成され、顧客の食料調達をユーザー。
- 新規顧客 を動的に作成することができ、顧客はそれが
- お客様が独自の機能を開発し、それらを展開することができ、動的に
- お客様を変更することができますさまざまな機能セットを持つユーザーです管理します。
- アプリケーションは同種で現在のバージョンですが、顧客のバージョンリフトは引き続き個別に処理できます。
- アプリケーションは全体として管理する必要があり、顧客は拡張しやすいリソースを共有する必要があります。
質問:は、我々は標準OSGiフレームワーク上でこれを構築すべきか、私たちは新興のアプリケーションフレームワーク(乙女座、牡羊座や次期のOSGi標準)のいずれかを使用する方が良いでしょうか?
詳しい背景や、いくつかの初期の考え:
我々はすぐに、ユーザーごと(従業員)の何百もの顧客(企業)の数百を持っています思い描くウェブアプリを構築しているが、そうでない場合は、なぜわざわざ;)。 OSGiをモジュール化したいのです。将来、顧客自身がアプリケーションにコンポーネントを開発してプラグインして、顧客を分離する必要があります。また、異なる顧客が異なる機能セットを得ることを望むかもしれない。
異なるクライアントが同じバンドルを共有しているときに、異なるサービス実装をアプリケーションの異なるクライアントに提供する "正しい"方法は何ですか?
app-serverアプローチ(私たちはVirgoを見てきました)を使用して、各バンドルを顧客ごとに一度自分の「app」にロードできます。しかし、OSGiを採用する気がしません。私たちは多数のアプリケーションをホストしていません。サービスの99%は同じインプリメントを共有します。すべてのお客様に。また、アプリケーションを管理(構成、監視など)したいと考えています。
各サービスは、顧客ごとに1回、「顧客トークン」プロパティと共に登録(適切に構成)することができます。それはちょっと面倒ですし、エクステンダーパターンやManagedServiceFactoryで処理する必要がありますか?また、顧客Aのサービスを登録する前に、それぞれの依存関係のAバージョンを取得する必要があります。
「現在の」顧客は各要求に知られており、スレッドにバインドすることができます。サービスを検索するたびに顧客トークンを提供しなければならないのはちょっと難しいことです。それは青写真のようなコンポーネントフレームワークを使用するのを難しくします。この問題を回避するために、サービスフックを使用して登録済みの各サービスタイプをプロキシし、現在の顧客(スレッド)に応じて適切なインスタンスにプロキシをディスパッチさせることができます。
上記の回避策(ハック?)を実装して私たちのOSGi全体の経験を始めることは、私たちが間違った方向にいることを実際に感じるように感じます。だから何をすべきか?乙女座に戻る?上に概説したものと同様のものを試してみてください。何か全く違う?
ps。ここまで読んでくれてありがとう!;)溶液への側面がいくつかあります
私はそれがより具体的な作るために、質問を編集したので、私が本当にやりたいの答えを、受け入れることを容易にする必要があります!私はかなりstackoverflowに新しいので、少し不器用であるために私を失礼に... –