10

機能フラグは私がよく使うものですが、私が取り組んでいるこの新しいプロジェクトが始まるまで、あまり考えたことはありませんでした。

通常、web.config ファイルに多数のキーを指定して実装しますが、このアプローチには 2 つの大きな欠点があります。

  1. web.config 内の値を変更すると、アプリケーション プールが再起動されます - これは、アクセスの多い環境では問題になる可能性があります
  2. web.config ファイルにキーが多すぎると混乱し、かなり面倒になる可能性があります

これらの問題を克服する最善の方法は何ですか?

4

3 に答える 3

11

IoCを使用して、機能フラグの実装を抽象化することをお勧めします。コードにアクセスする必要があるのは、の行に沿ったものだけですIFeatures.IsEnabled("FeatureA")。これを実行したら、最も賢明な実装を選択できます-以下のいくつかの提案:

  • web.configの実装(現在の実装と互換性があります)
  • データベースの実装(キャッシュされた値を使用します。Webファームで作業する場合は、SqlDependencyを使用する可能性があります)
  • 個別の構成ファイルの実装(キャッシュされますが、FileSystemWatcherを使用して構成ファイルへの変更を確認し、アプリプールを再起動せずにそれらをロードします)。これにより、DBが必要になる前に機能を定義する必要がある場合が可能になります。
于 2013-01-22T12:59:46.267 に答える
5

機能フラグを に保存する必要はありませんweb.config

オプションは、それらをデータベースに保存することです。これには、Web ファームでうまく機能するという追加の利点があります。

機能フラグを使用すると、機能が永続的にオンまたはオフになる位置にいる場合 (たとえば、widgetA から widgetB に移行し、widgetA コードが不要になる場合)、機能を削除して関連付ける必要があることに注意してください。国旗。これは、機能セットの管理に役立ちます。

于 2013-01-22T12:29:46.687 に答える
0

C# アプリケーションに機能フラグを追加したい場合は、独自の機能フラグ ソリューションを作成することはお勧めしませんが、C# と直接統合できるいくつかの feature-flag-as-a-service プロバイダーのいずれかを使用することをお勧めします。ボックスの。

そのようなソリューションの 1 つはFloodgateです。これには .Net 用の SDK があり、すぐにアプリケーションに機能フラグを使用してインストールして実行することができます。

免責事項、私の名前は Eugene で、Floodgate の創設者です。つまり、どの機能フラグ プロバイダーを使用するかに関係なく、私のアドバイスは同じです。

于 2020-03-16T11:32:36.567 に答える