私たちは、多数のクライアントに展開される製品を開発しています。この製品の領域では、いくつかの数式を実行する必要があります。問題は、この数式がクライアントごとに異なる可能性があることです。私が持っている
:だから我々は、アプリケーションがSharePoint 2010の(それによって、使用して.NET 3.5)動的コード - C#
簡略化した例でホストされているWebアプリケーションです
「を動的にコードを実行」することができます良いアーキテクチャを持っている必要がありますPropAとPropBという2つの数値プロパティを持つクラスMyClassA 1つのクライアントでは、式はPropA + PropBです。もう一つはPropA-PropBです。 これは数式がこれより複雑なため、これは単なる単純な例です。
クライアントAがPropA + PropBをおそらくXMlファイルまたはデータベースに設定できる方法が必要です。 私はコードを動的に読み込みますか?
これは意味がありますか?実働環境で誰もが同様のシナリオを実装していますか?
私は以下の記事は、似たような状況を説明することを発見したが、私はそれが本番環境のための100%の信頼性があるかどうかわからない: http://west-wind.com/presentations/dynamicCode/DynamicCode.htm
私はまた、IronPythonのでも同様の問題を解決できることを見出したが、 IronPythonでClassAをどのように使用するのか分かりません。
ご協力いただければ幸いです。
更新... 詳細なフィードバックをいただきありがとうございます。それは非常に建設的な運動でした。私はさまざまなアプローチを見直し、nCalcのアプローチを進める可能性が高いようです。 nCalcはすばらしいツールであると思われ、私はすでにテクノロジーを愛しています:) ありがとうございました!
簡単な公式の場合、ncalcがあります。複雑な場合は、実行時にC#をコンパイルできます。 – CodesInChaos
MEFを考えましたか?クライアント固有のアセンブリをロードするには、プラグインアーキテクチャを使用できます。 – sarvesh
スーパーセクシーではありませんが、式を文字列(または式ビルダー)として受け入れる独自のパーサーを作成するとどうなりますか? PropAと書かれているPropAを本質的にポップしますか?愚かな単純な(たぶん単純すぎる) 'var formula =" A - B "のようなものを持つことです。 formula.Replace( "A"、PropA)。置き換えます( "B"、PropB)。次に、カスタムパーサを実行してマイナスBを実行します。おそらく数学の部分には良いライブラリがあります – Prescott