私はルール指向のプロジェクトに飛び込もうとしています (ILOGs Rules for .NET - 現在は IBM を使用)。また、ルール処理のセットアップ方法とルール エンジンとの対話方法に関するいくつかの異なる視点を読みました。
私が見た 2 つの主な考えは、ルール エンジンを (独自のサーバー ファームに) 集中化し、Web サービス API を介して (または ILOG の場合は WCF を介して) ファームに対してプログラムすることです。もう 1 つは、各アプリ サーバーでルール エンジンのインスタンスを実行し、各インスタンスが独自のルールのコピーを持っている状態でローカルに対話することです。
集中化の利点は、集中化された場所へのルールの展開が容易になることです。ルールは、アプリケーション サーバー構成を拡張するたびにスケーリングするのではなく、必要に応じてスケーリングします。これにより、購入したライセンスの観点から無駄が削減されます。このセットアップの欠点は、サービス呼び出しやネットワーク遅延などのオーバーヘッドが追加されることです。
ルール エンジンをローカルで実行することの長所と短所は、集中型構成の長所と短所の正反対です。遅いサービス呼び出し (高速な API 呼び出し) やネットワークの問題はなく、各アプリ サーバーはそれ自体に依存しています。ルールの展開の管理はより複雑になります。アプリ クラウドにノードを追加するたびに、ルール エンジンのライセンスがさらに必要になります。
ホワイト ペーパーを読むと、Amazon がアプリ サーバー構成ごとにルール エンジンを実行していることがわかります。彼らはルールの展開に時間がかかっているようで、ビジネス ロジックが一定期間同期していなくても、ルール公開の遅れは「許容できる」ことを認識しています。
質問:あなたの経験から、ルール主導の世界での作業にまだ多くの時間を費やしていないショップのために、ルールを .net ベースの Web アプリに統合するための最良の方法は何ですか?