2009-06-18 7 views

答えて

5

私の設定ファイルを利用している点のみです。

構成ファイルのエンドポイントを管理するということは、エンドポイントが変更された場合にはアプリケーションを更新する必要がないということです。

アプリケーションの複数のインスタンスを異なるエンドポイントで実行することもできます。

2

オフハンドでは、設定ファイルのエンドポイントを変更したときに再コンパイルする必要はありません。これは、開発からUATへのアプリケーションの移動時に設定ファイルを更新するだけで済みます。

自宅で自分で使用するだけのものをコーディングすると、実際の違いはありません。しかし、ビジネス環境では、設定ファイルにenpointが定義されていれば、あらゆる種類の頭痛が救われます。

0

これは、必要な柔軟性の問題です。 私は設定ファイルの方が好きです。

1

app.configを使用している場合、変更に合わせてアプリケーションを再コンパイルする必要はありません。また、同じコードで複数の状況で再利用することもできます。最後に、エンドポイント(または変更対象のもの)をハードコーディングするのはコーディングが貧弱なことです。設定ファイルを恐れないで宣言的なプログラミングです。あなたは、「私はこのエンドポイントを使いたい」と言う。それはあなたのために仕事をします。

3

私はconfigファイルがかなり大きくなることができる以外、自分自身もconfigアプローチを好む傾向があります。

私はWCFの構成で気づいたことの一つは、あなたあなたは、独自のカスタムの拡張機能を追加することなく、XMLの設定で行うことができないコードから行うことができます多くのものがあるということです。言い換えれば、コード内でconfigを実行すると、より柔軟性が増します。もちろん、独自の拡張機能をコーディングして、それらの拡張機能を使用することもできます。

しかし、Visual Studioで自分の拡張機能を作成してXMLに含めると、VSが設定ファイルを気にしなくなり、タグ付けされるという「バグ」があると考えていることに注意してくださいエラーとして表示され、ウィザードを使用して新しいサービスを追加しようとすると、構成にエンドポイントを追加できません。


これは私自身の答えにフォローの一種である:xml構成のすべてを持っていることの数ヶ月後

、私はコード内のエンドポイントとバインディングを構築するために、すべてを変えています。私はコードでそれを持つための本当に良いケースを発見した。

WCFクライアントを含む展開可能/共有可能.dllを使用する場合。

たとえば、すべてのWCFインターフェイスといくつかのリモートサーバーとの通信契約を含むCommonClients.dllを持っている場合は、「こちらは100行のxmlもあります。すべてのクライアントのためにapp.configに落として "この場合、コードで構築されたすべてがよりうまく機能します。

.NET 3.5の「機能」もあります.WCF拡張機能を使用する場合は、完全修飾アセンブリ名を指定する必要があります。つまり、拡張機能を含むアセンブリでバージョン番号が変更された場合は、設定ファイルでアセンブリ名を変更する必要があります。 .NET 4では、短いアセンブリ名を使用し、完全な名前は必要ないと思われます。

1

私は一般にプログラムの設定を行います。私は自分のアプリケーションの内部構造をユーザーに公開したくないからです。私が設定可能な唯一のものはサービスアドレスですが、これも私はsystem.ServiceModelではなくuserSettingsセクションにあります。

1

私は構成ファイルの方法を推奨し、推奨します。アプリケーションを再コンパイルせずにサーバーを変更できるため、柔軟性が大幅に低下します。 セキュリティが必要な場合は、設定ファイルを暗号化できます。

プレーンな設定ファイルの最大の心配は、アプリケーションがクラッシュするエンドユーザによって誤って(意図的に)変更される可能性があります。これを克服するために、コードでいくつかのテストを行って、設定ファイルで設定がOKであるかどうかをチェックし、そうでない場合はデフォルトでプログラムで初期化します。私はあなたが別の答えでそれをする方法を提示しましたthis質問。

0

.NET StockTrader appを参照してください。リポジトリは設定データを保存するためにリポジトリを使用し、設定を管理する別のアプリを持っています。セットアップと構造はかなり進歩しています。私のようなWCF設定の基本を持っている人なら誰でも頭を引っ掻いているようですが、一見価値があると思います。

関連する問題