2009-05-06 8 views
0

私はいくつかの大規模な顧客のためにカスタマイズする必要があるJavaベースのサーバーソフトウェアに取り組んでいます。サーバーごとに個別のインスタンスが各顧客に対して実行されます。カスタマイズされたB2B Javaソフトウェアを開発するためのベストプラクティス?

それぞれの顧客は、実装ごとに異なるビジネスロジックが必要となるように十分に異なる要件を持っています。

現時点では、異なるビジネスロジックは、別々のビジネスロジッククラスを記述し、プロパティファイルの設定に応じて適切なクラスを呼び出すことによって処理されます。

いくつかの(しかし非常に重要な)ビジネス顧客のニーズに合わせてソフトウェアをどのように設計したのかを知りたいですか?

注:難読化要件のためにリフレクションを使用することはできません。

答えて

2

domain-specific languageがあるかどうかを真剣に検討する必要があります。

DSLはRubyで大きな役割を果たしましたが、確かにJavaで行うことはできませんし、同じ目的を果たすために十分に "流暢な"インターフェースを備えたクラスのコレクションを構築する必要はありません。

理想的には、お客様のビジネスルールが読まれて、DSLのとして実装されていることを確認するだけで十分です。ルールを正しいものにするという意味で、あなたに最高のレバレッジを与えます。

おそらく実装することは、CommandTemplate Methodのパターンを適用することを意味します。

Martin Fowlerのsiteも参照してください。ここには、javaのDSLを構築するためのinteresting paperがあります。

+0

ドメイン固有の言語はどういう意味ですか? –

+0

@Jin、申し訳ありませんが、リンクを追加する前に下書きを保存しました。今そこには一束があります。 –

0

私たちはSOA(サービス指向アーキテクチャ)を使用します。正しいサービスが呼び出され、正しいビジネスロジックがクライアントに応じて呼び出されます。これらのサービスの場所は、データベースから設定できます。

0

ルールエンジン(Droolsのように、パフォーマンスはあなたが選んだもので問題になる可能性があるので、商用の選択肢も考慮する必要があります)を強く見ていきます。そのような顧客は、ビジネスロジックを調整するために開発者に戻らなければならないと感じるのではなく、ルールエンジンが表す構成能力が好きな傾向があります。

0

スプリングは依存性注入を行うための本当に便利なツールです。あなたのニーズに役立つかもしれません。 Springを使用すると、共通のアプリケーションフレームワークを維持しながら、各顧客実装のビジネスオブジェクトを置き換えることができます。非常に便利。

関連する問題