2

組み込みサーバーを「リロード」および「再起動」できる .NET 機能は何ですか? この質問の仕方がよくわかりません。追加機能で定期的に更新する必要があるサーバーを書いています。2 つの同じサーバーを異なるポートで (冗長性のために) 実行し、新しい変更をロールアウトするときに、サーバーの 1 つをダウンさせ、新しいコードをロードし、テストを実行し、新しいバージョンへのトラフィックの移動を開始してから開始します。 2 番目のサーバーで同じプロセスを実行します。

AppDomains または MEF が探しているものかもしれないと考えていますが、これらのテクノロジについてはあまり知りません。私が行方不明になっている.NETフレームワークに、役立つ何かがすでにあるのではないかと思っています。

助言がありますか?私が AppDomains や MEF について理解していない場合は、お気軽にお知らせください。

4

2 に答える 2

5

これは、AppDomains を使用した Windows サービスで行います。このサービスには、ネットワーク IO コードと、新しいバージョンをダウンロードしてアプリ ドメインをインスタンス化するためのコードだけが含まれています。すべての実際のコードは、「リクエストを処理する」コードと、長期的なローカル状態のためのシリアル化/逆シリアル化メカニズムを備えた、よく知られた不変のインターフェイスの背後にあります。

つまり、単一のサービスを永続的に実行できます。新しいバージョンが利用可能になり、スモークテストに合格すると、単一の参照 (マーシャリングされた/ラップされていないインスタンス) を変更するだけで、アップグレードされます。その後、古いアプリ ドメインをアンロードできます。

冗長性 (ハードウェアなど) のために、これにはまだ複数のノードを使用し、負荷分散をクライアントに適用します (ただし、NLB でこれを行うこともできますが、今回はそうしない理由がありました)。

于 2012-08-17T22:26:36.323 に答える
1

各サーバーを個別のプロセスとして実行するのはどうですか? コマンド ラインでポート番号を渡すと、ディスク上の 1 つの exe からすべてを (本番環境で) 実行できます。

于 2012-08-17T22:07:24.357 に答える