2011-12-15 4 views
2

.NETで実行中に変更できるサーバーサイドコードを作成するための最善の技術または手法とは何ですか?クライアントを切断せずに.NETサーバーの実行コードを更新する最良の方法

ステートレスモデルのためにWebサービスを使用する場合、この機能を無料で利用できますが、クライアントがTCPを介してセッションの存続期間中接続されているクライアント/サーバーアーキテクチャを構築しています。

ユーザーを切断してサーバーを再起動せずに変更を実装するにはどうすればよいですか?明らかに、接続管理コードとAPIは変更されず、非常に迅速に機能します。

MEFを使用していますか?シャドウコピーのようなもの?私は、メッセージキューと複数のプロセスを使用しないことをお勧めします。

+1

あなたはWebサービス(ステートレス)を使用することができます...クライアントが「ファサード/プロキシ」に接続し、それが今度は内部的にWebサービスを使用しています... – Yahia

+0

私は「ドン私はクライアントにデータをプッシュダウンするようにWebサービスを使用したい。 –

答えて

2
  • あなたはMEF's Recomposition
  • 抽象、アップデート
  • アップデートが利用可能になるかどうかを確認するために、バックグラウンドスレッドをスピンオフ、このオブジェクト内の別のオブジェクト
  • にデータを取得するサーバーの道、ロックを使用することができますオブジェクト、あなたが

サーバ側の公開API

更新している間にクライアントがデータを取得することはできませんので、
public SomeDataModel SomeGetDataMethod(...) 
{ 
    // auth 
    return someObject.GetData(); // GetData() methods abstracted 
} 

サーバー側内部

public SomeObject 
{ 
    public SomeObject() 
    { 
     // spin off a background thread to check for updates 
    } 

    private void OnUpdateAvail() 
    { 
     lock(recomposeLock) 
     { 
      // recompose 
     } 
    } 

    public SomeDataModel GetData() 
    { 
     lock(recomposeLock) 
     { 
      // get your data 
      return someDataModel; 
     } 
    } 
} 
+0

、 "// recompose"セクションでは、MEFの機能を使ってGetData()の定義を何とか変更して、何か違うことをしますか?それはすべきです。私はこれを実装しようとし、それが動作する場合、これを受け入れられた答えとして設定するように戻ってきます。どうも! –

関連する問題