私はASP.NETでしばらくの間Webサイトを構築しています。最初は、ASP.NETプロバイダーモデルの複雑さを覚えていませんでした。代わりに、私は必要に応じて缶詰のプロバイダを使用し、他のすべてのニーズに対してDependency Injectionフレームワークに大きく依存しました。カスタムプロバイダー、ベストプラクティス、および構成の競合
しかし、最近私は、ASP.NET用のプラグイン可能なコンポーネントを作成してきました。もちろん、カスタムプロバイダベースのソリューションをたくさん作成しています。しかし、それは私にはすぐに明らかになった、その多くはinitialization code is being duplicated、それは悪いことです。
そう...
- 設定スパゲッティコードを回避する方法に浮上している任意のベストプラクティスはありますか?
- 基本的な初期化コードを抽象化して共有するためのカスタム・プロバイダの作成が簡単にできるように、サンプル(基本/ヘルパー・クラス、カスタム属性、リフレクション)を用意しましたか?
注:
試してみて、私はProvider Toolkitサイトに送らないでください。私はすでにそのリソースを使い果たしているので、私はSOコミュニティに向いています:)
私はいくつかの助けをしたいと思いますが、私は何かを本当に明確にしていません。あなたはASP.NETのための "プラグイン可能なコンポーネント"を書いています、そして、もちろん "カスタムのプロバイダベースのソリューションをたくさん書いています...私はあなたがプラグイン可能なコンポーネントによって何を意味しているのか、各コンポーネントごとにそれが何をしようとしているのか、各コンポーネントごとに異なるプロバイダが必要な理由を明確にすることができますか?私はいくつかの助けを提供できるかどうかを見ます。 – jrista
ELMAHを見ましたか?私は、ドメイン/アプリケーション固有のものではなく、その関心事にクロスカッティングされたコンポーネントを作成しようと努力してきました。モジュール、ハンドラなど...何らかの種類のストレージに触れる場合、真にプラグイン可能なプロバイダモデル(machine.config/web.config)を利用する必要があります。これは問題ではありませんが、私はあなたが設定のものを管理するために多くのコードを書くことになります。私はちょうど誰かがこの種の配管コードを一般的に扱うためのいくつかのベストプラクティス、あるいはいくつかの実用的な方法を思いつくためにこれを十分に行ったかどうか疑問に思っていました。 – Josh
これは、Web環境でキャッシュするための二重ロックパターンに似ています。キャッシュを使って何かをすると、そのコードを書くことになりますが、通常はそれをいくつかのユーティリティクラスに組み込み、重労働を起こすので、2回書く必要はありません。 configセクションを管理しているうちに終わることがたくさんあります。この問題のために特別なパターンが出てきたかどうかは不思議でした。私はちょうどできるだけドライになりたい。 – Josh