2016-10-14 2 views
2

複数の異なるサーバー間で複数のWebアプリケーションに使用できる接続文字列またはアプリケーション設定のリポジトリとしてデータベースを使用している人はいらっしゃいますか?ConnectionStringsまたはAppSettingsのリポジトリ

私たちのWebアプリケーションのアプリケーションはすべて、ロギングデータベースとトレースデータベースへの接続文字列を持っており、今後6ヶ月以内にこれらのデータベースの場所が変更されることはわかっています。 web.configの各設定に入るうちに、この接続文字列(と他のもの)の中央リポジトリを指すように、今後数か月のうちにWebサービスをリファクタリングしたいと思います。

私は各web.configに接続文字列を持っている理由はMachine.configを避けるために非常に努力します。

私たちはセッション管理にredisを使用しています。これは最終的にはキーと値のペアであるため、このためにデータベースの1つを使用することを考えました。誰もその問題でそれを使用していますか?

この問題をどのように乗り越えたことがありますか?

これは広すぎるとマークされているため、詳細を追加できるかどうか確認してください。私たちは、web.config内ですべてが同じ接続文字列を持ち、複数の異なるサーバー上に配置されている50近くのWebサービスを持っています。これらのサービスを編集して共有リソースを使用できるようにして、接続文字列が変更されたときに、各Webサービスを再デプロイしたり、各web.configを編集するのではなく、単一のリソースを編集する必要があります。私はmachine.configを使用するファンではありません。

答えて

1

あなたは完璧なグローバル設定を保存するためにRedisのまたは任意のデータベースを使用することができますがが、多分何が必要ビルドスクリプトです。

.NETの世界であれば、Team Foundation Buildのも提供しているTeam Foundation Serverを知っていると思います。

通常、接続文字列のような設定をハードコーディングする代わりに、ファイル内の一部のプレースホルダを置き換えるために使用できるカスタムビルドプロパティとして提供します。次のようにあなたのファイルはなります

<add name="myConnectionString" connectionString="server=%host%;database=%database%;uid=%user%;password=%password%;" /> 

あなたは(ビルド構成からの実際の値を持つプレースホルダを置き換えるために、PowerShellのステップを追加するには、この他のQ &見ることができるようにTFS 2015以来、TFSのビルドスクリプト可能なビルドシステムを持っています詳細:How to replace multiple strings in a file using powershell)。

プレースホルダを置き換えたら、展開手順を追加して、FTP、WebDeployなどのプロトコルを使用してアプリケーション全体を一部のマシンに展開できます。彼らは、展開によっては異なる場合があります場合は要するに

は、おそらくあなたの最善の策はさえweb.configにハードコードされた構成を避けており、これらの変数の設定はビルドスクリプトを使用してを注入することができます。つまり、一部の構成を変更する場合は、カスタム・プロパティーを作成してから、構成の変更を加えてアプリケーションを再デプロイします。

このページでは、さらに、このアプローチを調査するために良いスタートする必要があります:Visual Studio Team Services on Azureを確認し、また、https://www.visualstudio.com/en-us/docs/build/define/build

、TFSの変種は、Azureの中でホストされています。

+0

あなたは間違いありませんが、私たちのウェブサイトを展開する際にスクリプトをビルドします。データベースが変更されたときに、50個近くのWebサービスを再配備または編集したくありません。私はむしろ単一の場所を編集し、いくつかのキャッシュをクリアした後、新しいデータベースを使用してすべてが開始されます。 –

+0

@RodneyPannell WebDeployでは、変更されたファイルのみを同期することができます。実際はweb.configだけです。または、同期コマンドでWinSCPを使用することもできます。 **単一のビルドでこれらの50の展開を実行できます**。何故なの?あなたはそれを一度だけ行い、ボタンをクリックしてビルドをキューに入れることに気をつけます! –

関連する問題