2012-01-18 6 views
0

当社のサーバーアプリケーションはサービスとして動作し、監視および構成のためにアプリケーションに接続するASP.NET MVC3 Webベースのフロントエンドを備えています。私たちのアプリケーションは一般にIT部門によって管理されているクライアントサーバーにインストールされるため、アプリケーションのASP.NET部分をパッケージ化して展開し、サーバー上でできるだけ苦労しないようにするための最良の方法を見つけようとしています。まだWebサーバーを実行していない複数のクライアントにASP.NET MVC 3サイトを展開する最も簡単な方法は何ですか?

ASP.NET MVC3サイトを実行する公式の方法は、IISサーバーインストールに展開することです。完全なWebサーバーをクライアントに提供、インストール、および保守する追加のオーバーヘッドを避けたいので、完全に自己完結したパッケージを提供できれば、2番目のサービス我々のアプリケーションと一緒に。ウェブのフロントエンドは内部でのみ使用されるため、スケーリングに大きな問題はありません。

アイデア?

答えて

0

ここでは回答が多くなかったので、今後誰かがこの問題を抱えている場合に備えて、私がやったことに答えています。

私たちはIIS Expressを使用して終了しました。 IIS Expressのインストーラをインストーラと共に配布します(IIS Expressのライセンスで許可されています:http://blogs.iis.net/vaidyg/archive/2011/01/17/iis-7-5-express-official-release-highlights.aspx)。インストールが完了したら、CreateProcessを使用して/ pathをiisexpress.exeでASP.NETプロジェクトに直接実行するので、既存のサービスによってすべてが完全に制御されます(出力をロギングシステムにルーティングできます)。私たちは、サービスがクラッシュした場合にIIS Expressプロセスが強制終了されるようにジョブオブジェクトを使用します。

は、我々は、シャットダウンIIS Expressにこのような何か:我々はまだ生産にこれを入れていない

 for(HWND currentWindow = GetTopWindow(NULL); currentWindow != NULL; currentWindow = GetWindow(currentWindow, GW_HWNDNEXT)) 
     { 
      DWORD currentWindowProcessId; 
      GetWindowThreadProcessId(currentWindow, &currentWindowProcessId); 
      if(currentWindowProcessId == m_processId) 
      { 
       PostMessage(currentWindow, WM_QUIT, NULL, NULL); 
       break; 
      } 
     } 

を、それは開発中に、これまで素晴らしい仕事をしています。

0

最も単純な方法はそれをあなた自身でホストすることです。私は頻繁に私のチームのために技術的な意思決定を行い、私のためにインスタンスをホストするためにあなたに支払うオプションを持っていれば私の好みは100%です。

最終的には、代わりにWebサーバーを持つクライアントです。 IISは管理と設定が安全でクライアントの環境で動作する必要があるため、単に設定することはできません。

+0

私たちがホストしている状況では、これは私たちが行うことですが、それはすべての場合にオプションではありません。 – Screndib