クライアントソフトウェアをリモートで更新するサーバーアプリケーションを実装します。クライアントは主に、更新されたソフトウェアを受信するためにプルメカニズムを使用します。
初心者として、このアプリケーションを実装するためのアーキテクチャを探しています。そして、OSGiのライフサイクルレイヤーがそのようなサービスを提供することを私は知っています。
クライアントに同様のサービスを提供する他のアーキテクチャはありますか?
1 に答える
Eclipseベースのアプリケーションを作成している場合は、おそらくp2が最も簡単な方法です。ただし、アプリケーションがMavenで構築されている場合、または他のOSGiコンテナー(Karaf、Felixなど)でより一般的に実行する場合は、 Felix実装などのOSGiバンドルリポジトリ(標準仕様を参照)を検討する必要があります。OBRが希望どおりに機能しない場合は、APIが公開されているため、操作できます。
参照するOSGiライフサイクルは、真のホットデプロイ(およびモジュール性の他の「特典」)を提供しますが、自動更新機能ははるかに高レベルであり、フレームワークコアの一部ではありません(コンテナーは実装する必要はありません)準拠するリモート更新メカニズム)。
私が働いているところでは、Mavenビルドの一部として作成されたKaraf XML機能(機能またはアプリケーション全体を構成するバージョン管理されたバンドルのセット)を使用しています。OSGiシェルから、コマンドを使用して、これらの機能を見つけてインストールするようにOSGiコンテナーに指示できます。これは、制御されたデプロイの観点からは非常に優れていますが、完全に自動化された更新が必要な場合は、OBRが必要です。
質問が更新メカニズムの基礎としてOSGiの代替案に言及している場合は、Webstart(JNLP)などのようなものを検討しています。これは起動時にのみ更新を提供します。
IMO OSGiは、コーディングとデプロイが非常に快適であるため、調査する価値があります。更新/プラグインメカニズムとして、それを打ち負かすことはできず、フレームワークを埋め込んだり、簡単にカスタマイズしたりできます。