1

エンタープライズ環境で使用する.NET4クライアントアプリケーション(Windowsフォーム)を開発しました。クライアントはさまざまなフレーバーで公開されることになっているため、頭痛の種になっています。要件の1つは、クライアントがSOAPWebサービスを介してかなりの数の異なるアプリケーションサーバーと通信できる必要があることです。アプリケーションサーバー(AS)は同一のWSインターフェイスを公開しますが、基盤となるサーバーシステムは異なり、通常、企業がサービスを提供する顧客ごとに1つのインスタンスです。次に、お客様をサポ​​ートするために、これらすべてのアプリケーションサーバーにアクセスできる必要がある社内の運用部門があります。

ネットワーク構造は、内部的にASサーバーが10.0.0.0/8ネットワーク上にあり、すべての顧客がアプリケーションサーバーにアクセスするためのパブリックIPアドレスを持っているようなものです。現在、IPでアクセスしていますが、DNS名を使用するように移行していますが、サーバーのDNS名は、内部アクセスと外部(顧客)アクセスで同一ではありません。

この結果、デフォルトではWS接続情報がそこに保存されるため、app.configにはさまざまな構成を管理する必要があります。以前に関連する質問を投稿しました(app.configで複数のクライアントエンドポイント構成(IPアドレスなど)を管理するための最良の方法)。それはかなり役に立ちましたが、それでも構成管理を改善しようとしています。参照されている投稿で説明されているように、Maven(Java)に精通している場合は、プロファイルと同様に、エンドポイント接続ごとに異なる構成/ビルドをセットアップできるようになりました。

問題は、ClickOnceデプロイを使用しており、ユーザーがURLを介してインストールできるようにするため、さまざまなバリアントをデプロイする必要があることです。つまり、単一のASの場合、少なくとも2つのデプロイ/ビルドが必要です。 IPエンドポイントと内部IPエンドポイントを持つ1つ。これに多くのASサーバーを掛けると、多くのビルド構成を調整する必要があることが簡単にわかります。明らかに改善の余地があります。

私たちが検討したアイデアとオプションのいくつかは次のとおりです。

  • エンドポイント構成、少なくともapp.configのアドレス部分をスキップし、設定フォームでユーザーがソフト構成するようにします。私たちの経験では、問題がないわけではありません。通常、エンドユーザーには多少のサポートが必要であり、簡単に間違えられます。

  • カスタマイズされたインストーラー、エンドポイントを動的に構成できる方法があるかどうかを調査します。たとえば、クライアントアプリケーションは、Webサービスが公開されているのと同じサーバーにデプロイされるため、インストールでソースURLを取得し、それを使用してASサーバーを見つけますか?

展開プロセスやその他の関連する経験を改善する方法についてのアイデアは大歓迎です。この問題を抱えているのは私たちが最初ではないと思います。

また、優れた方法が存在する場合は、ClickOnceのデプロイをスキップします。

よろしく、オラ

4

2 に答える 2

2

私はslugsterのディレクトリサービスのアイデアが本当に好きです。クライアントにどのサービスを呼び出すかを尋ねさせると、柔軟性が保たれ、特定の顧客が呼び出す必要のあるサービスを変更した場合にクライアントを再デプロイする必要がなくなります。

とはいえ、まだ複雑な構成になっている可能性があります。これは、app.configのカスタマイズに戻ります。そのためには、 ClickOnceMoreを使用できます。Visual Studioの外部でClickOnceデプロイメントをビルドするための、サードパーティのビルドツール(免責事項:私がビルドしました)。さらに重要なのは、複数の構成をセットアップできるマクロシステムを備えていることです。構築する構成を指定するコマンドラインから構築できます。その構成に基づいて、app.config内の異なる値を置き換えるか、別のapp.configファイルを完全に選択することができます。マクロシステムの詳細については、こちらをご覧ください

于 2012-09-28T21:07:09.170 に答える