3

会計アプリケーションを構築するための方向性について意見を求めています。アプリケーションは高度なカスタマイズを可能にする必要があり、場合によってはプロセス全体を変更する必要があります。

顧客から特定の変更要求があった場合に、アプリケーション全体を再コンパイルせずに変更を加える方法が必要です。バックエンドは、ある種の SQL データベースになります。コスト上の理由から、SQL Server Express を使用する可能性が最も高いです。フロントエンドはC#になります。

エントリなど、さまざまな種類のアクションが行われたときにイベントを持つイベント ベースのシステムを考えています。次に、イベントを処理するプラグイン システムを作成します。データを最終的に保存する前に、複数のプロセスを特定の順序でデータに適用する必要がある場合があります。他のプロセスもトリガーする必要があります。

ほとんどの顧客で機能する基本アプリケーションを同じままにしておきたいのですが、他の特定の顧客が持っているカスタム プロセスを適切にロードする方法が必要です。

私はすべての提案を受け入れます。彼らが問題にアプローチするまったく異なる方法を考えていたとしても. 現在の社内開発の人材は、.NET と MS SQL Server です。私は、この状況に適合する可能性のあるソフトウェア パターンを認識していません。

追加情報: これは完全に白紙のシステムではありません。多くの顧客に役立つ機能があります。さまざまな理由から、要件は州に基づいて変化し、地域や町のレベルでもカスタマイズが必要になる場合があります。

事前にコンパイルされた追加のモジュールをプラグインできるようにしたいと考えています。考えられるオプションを調べ始めたとき、プラグインを介してコードを挿入できる空のハンドラーを想像していました。たとえば、総勘定元帳に新しいエントリが作成され、イベントが発生したとします。ハンドラーが呼び出されますが、ハンドラーのコードはプラグインから来ています。これは、顧客の 80% に適合する私のオリジナルのプロセスである可能性があります。顧客がカスタム操作を希望する場合は、元のプラグインを完全に置き換えるプラグインを追加するか、元の実行後に別のプラグインを介して追加の後処理ステップを追加することができます。私が推測する階層化プロセスの一種。

4

3 に答える 3

2

Managed Extensibility Frameworkを見ることができます 。これは、疎結合のプラグイン アプリケーションを構築できる豊富なコンポジション レイヤー機能を提供します。

更新 : さまざまな地域で事前定義されたモジュールが必要なようで、一連の責任設計パターンを使用すると、変更の原則を管理するのに役立つ場合があります。申し訳ありませんが、コードは提供されていません。私の考えを投げかけただけです

于 2012-04-12T20:05:35.540 に答える
0

Windows Workflow Foundation (WF) (.NET Framework の一部) は、要件を満たす可能性のある候補です。さまざまなアクション、コマンドレット、スクリプトレットを動的に構成できるため、さまざまなユーザー/顧客向けにさまざまなワークフローをより簡単にカスタマイズできます。

WF は、大規模なシステム統合のために Biztalk によって使用され、多数の小さなタスクとアクションのオーケストレーションを簡単に変更する機能を必要とする他の多くのアプリケーションによってインプロセスでホストされます。

WF4 に関するこのチュートリアルから始めることをお勧めします。

HTH。

于 2012-04-12T19:12:39.287 に答える
0

プラグインだけでなく、そのプラグインの問題を技術的に解決する方法、MEF (+1 @laptop) などを使用する方法でもありません。アプリケーションでプラグインの「ポイント」を定義することに最も力を入れなければなりません。これは最も重要ではなくなっています。例えば。コードを配置するためにその空の「イベント」を配置する場所、またはこのイベントまたはプラグインが持つパラメーター。

たとえば、使用可能なプラグインは保存イベントの前にありますが、さまざまなタイプのビジネス ドキュメントを保存するアプリケーション内の場所が 1 つだけである必要があるため、そこでプラグインを呼び出すことができ、パラメーターは抽象ドキュメント オブジェクトになります。

そのため、システム アーキテクチャについて真剣に考え、さまざまなプラグイン ポイントを十分に抽象化し、そのアーキテクチャを完全に実行する必要があります。システムの一部だけを実行してコーディングを開始するのではありません。

英語は私の母国語ではないので、私の言いたいことが理解できたと思います。

于 2012-04-12T20:52:48.907 に答える