2

私たちのソフトウェアは現在多くの機能を備えています。フルソフトウェアの軽量バージョンで構成される無料の試用版を作成するように依頼されました。トライアルで利用できる特定の機能はごくわずかです。また、jarファイルは暗号化されていないため、ハードコードされた制限付きのフルバージョンをリリースすることを躊躇しました。私は2つのjarファイルを作成できるようにしたいと考えています。1つは基本機能を含み、もう1つは高度な機能を備えています。

機能はさまざまなメニューにあります。コードが起動時に追加機能を備えたjarをロードし、無料のユーザーが詳細メニューを選択したときにメッセージを表示しようとすると便利です(たとえば、この機能は試用版では使用できません)。一方、高度な機能のjarにアクセスできる有料ユーザーは、違いを知りません(現在、1つのjarと、新しい方法である2つの別々のjarの違いについて話します)。

  • 続行する方法に関するヒントはありますか?
  • 避けるべき一般的な間違いに関する警告はありますか?
  • 個別の瓶よりも優れた戦略はありますか?

編集:これまでのところ最良の提案は、私の機能限定を行う方法を説明していますが、機能限定を行わないように警告しています。では、どうすればよいですか?

4

3 に答える 3

2

あなたが言ったように、あなたはおそらく2つの瓶を持っているでしょう:

1には、基本機能と高度な機能のスタブが含まれています。1実際の高度な機能を備えています。

構成設定でファクトリクラスを使用して、スタブクラスを作成するか実際のクラスを作成するかを決定できます(例:「FancyFeatureClass」または「FancyFeatureClassStub」)。「FancyFeatureClassStub」は「lite」ディストリビューションに含まれますが、「FancyFeatureClass」は高度な機能jarにのみ含まれます。

構成設定を変更して、実際のクラスを含むjarを使用せずに実際のクラスを作成しようとすると、クラスが見つからないというエラーが発生するだけです。

アップグレードするときは、高度な機能jarをクラスパスに追加し、構成設定を変更して、スタブではなく実際のクラスを作成するようにファクトリクラスに指示します。アプリをそのように分割できると仮定すると、正常に動作するはずです。

よくある間違いについては、あなたはすでに間違いを犯していると思いますが、おそらくあなたのせいではありません:)

「機能限定」は製品を評価するための悪い方法です。不自由な製品をリリースするよりも、有効期限付きのフル機能バージョンまたはナグスクリーンをリリースする方が適切です。これらの高度な機能がないと、誰かが実際に製品を評価するのが難しくなる可能性があります。

于 2009-08-12T20:55:08.083 に答える
0

多くのテクノロジーでは、プラグイン可能な機能(通常はプラグインまたはアドオンと呼ばれます)が許可されています。

アイデアは、コアコード(またはフレームワーク)がいくつかのインターフェイスを宣言することです(よく考えられたAPIが理想的です)。プラグインは、インターフェースの新しい実装を提供し、それをフレームワークに登録できます。

そのブートシーケンスでは、フレームワークはプラグインがあるかどうかを(たとえばファイルで)調べ、登録で構成される独自のブートシーケンスを実行する機会を与えます。

起動フェーズの後、実行時の例(メニューの場合):フレームワークは、メニューを格納するレジストリを確認します。レジストリには、フレームワーク自身が宣言したメニューに加えて、プラグインによって提供される追加機能が含まれています...すべてが表示されます。

あなたが要求した振る舞いを具体的に望むなら、私はこれを次のように実装します:

  • すべての場合に利用可能なメニューは、フレームワークで宣言および実装されます
  • 拡張版でのみ利用可能なメニューは2回実装されています:
    1. フレームワークでは、実装は単にメッセージを表示します(たとえば、この機能は試用版では使用できません)
    2. プラグイン(=有料版)では、以前の実装を実際の実装でオーバーライドし、実際の仕事をします。

そうすれば、有料ユーザーはすべて通常の機能を利用でき、試用版では警告が表示されます。

これを実装するための多くのテクノロジーが存在します。最良の選択は、あなたがすでに知っている/使用する/快適に感じるものに依存します:

  • インターフェイスの実装はプレーンJavaであり、プラグインjarのマニフェスト内の文字列で開始するクラスを指定できます。
  • Eclipse RCPには、そのようにメニューが完全に実装されています(したがって、コーディングする必要はなく、構成のみが必要です)。
  • インターフェイスを使用する場合、Springもかなり良いです...
于 2009-08-12T20:45:30.473 に答える
0

有料機能を実装する別のJar(および、ClassNotFoundExceptionが発生した場合に「notavailable」などの適切なメッセージを表示する別のliteフロントエンド)を使用するのが最も簡単な方法です。

UIアプリケーションをモジュラー形式で配布するためのEclipseRCPまで、多くのフレームワークがありますが、これはニーズに対してやり過ぎになります。

実際、ビルドプロセスに、配布プロセスの一部としてビルドするJar内のJavaクラスのサブセットをコンパイル/パッケージ化するオプションがある限り、2つのJarも必要ありません。有料の機能は含めないでください。

于 2009-08-12T21:49:13.433 に答える