web-dev-qa-db-ja.com

EXEまたはWindowsサービスとしてデプロイされたスタンドアロンのC#Webサービスを作成することは可能ですか?

Webサービス要求を処理できるC#EXEまたはWindowsサービスを作成することは可能ですか?明らかに、ある種の埋め込まれた、おそらく制限されたWebサーバーは、EXE /サービスの一部である必要があります。 EXE /サービスは、インストールされているIISに依存する必要はありません。できれば、組み込みWebサービスでHTTPS/SSLタイプの接続を処理できます。

シナリオは次のとおりです。顧客は、企業のマシンに小さなエージェント(Windowsサービス)をインストールしたいと考えています。エージェントには2つの主要なタスクがあります。1)時間の経過とともにシステムを監視し、特定のデータを収集します。2)Webサービス要求に応答します(SOAP -v- RESTはまだ悩まされています))データ収集またはシステム変更の目的で。顧客は、企業のマシンで実行されているさまざまなエージェントを利用するために、任意の数のクライアント(任意の言語)を記述できるWebサービスAPIのアイデアを気に入っています。 IISをインストールして構成する必要なしに、痛みを伴わずに(.NET、一部のアセンブリ、サービスをインストールし、Windowsファイアウォールを変更し、サービスを開始します)。

私はDelphiでこれを行うことができることを知っています。ただし、可能であれば、顧客はこれをC#で実行することを希望します。

助言がありますか?

19
Jason Swager

はい、可能です。 [〜#〜] wcf [〜#〜] および セルフホスティング を確認することをお勧めします。

13
Paulo Santos

はい、それは可能です(そしてかなり簡単です)。

これが CodeProjectの記事 C#で基本的なHTTPサーバーを作成する方法を示しています。これは、スタンドアロンのEXEまたはサービスに簡単に配置して、Webサービスとして使用できます。

5
Reed Copsey

チェックアウトしたいテクノロジーの1つがWCFです。 WCFに入るのは少し面倒かもしれませんが、キースエルダーによるDNRTVには、非常に簡単な方法でWCFを使い始める方法を示すすばらしいスクリーンキャストがあります。

http://www.dnrtv.com/default.aspx?showNum=135

3
Antonio Haley

確かに、あなたはそれを行うことができます。プロジェクトの出力タイプを必ずコンソールアプリケーションに変更してください。次に、Main関数でstring []パラメーターを追加します。コマンドラインで受け取ったスイッチから、ServiceBase.Runに分岐してWindowsサービスとして実行したり、他のコードに分岐してコンソールアプリケーションを実行したりできます。

1

.Netフレームワークの HttpListener を見ることができます。

1
Grokys

WCFを強くお勧めします。あなたが説明しているような製品に非常によく適合します。かなりの数の が利用可能です。

1
AgileJon