2009-06-18 3 views
17

Webサービスリクエストを処理できるC#EXEまたはWindowsサービスを作成することはできますか?明らかに、埋め込まれた、おそらく限定されたWebサーバのいくつかの種類は、EXE /サービスの一部でなければならないでしょう。 EXE /サービスは、IISのインストールに依存する必要はありません。好ましくは、埋め込まれたウェブサービスはHTTPS/SSLタイプの接続を処理することができる。EXEまたはWindowsサービスとしてデプロイされたスタンドアロンのC#Webサービスを作成することはできますか?

シナリオは次のとおりです。お客様は、社内のマシンに小さなエージェント(Windowsサービス)をインストールしたいと考えています。エージェントには、1)時間の経過とともにシステムを監視し、特定のデータを収集し、2)データ収集またはシステム変更の目的でWebサービス要求(SOAP -v- RESTが依然として不平等である)に応答するという2つの主なタスクがあります。顧客は、ウェブサービスAPIのアイデアを気に入っているので、任意の数のクライアントが任意の言語で企業のマシン上で実行されているさまざまなエージェントにアクセスできるように書くことができます。 IISをインストールして構成することなく、インストールを比較的簡単にしたい(.NETのインストール、一部のアセンブリ、サービス、Windowsファイアウォールの変更、サービスの開始)。

私はDelphiでこれを行うことができます。しかし、可能であれば、C#でこれを行うことを顧客は望んでいます。

提案がありますか?

答えて

13

はい、それは可能です、あなたはWCFSelf Hostingを見てしたいことがあります。

+2

これは非常に有望です。セルフホスティングの章は、特にスタンドアロンのEXE /サービスに関する私の質問に答えています。ありがとう。 –

6

はい、可能です(かなり簡単です)。

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

+1

この例では、Webサーバーの埋め込み方法を示していますが、着信要求をWebサービスメソッド呼び出しに変換する方法については何も示していません。私は、必要なオブジェクトを作成し、メソッドを探し出し、さまざまなプロパティで呼び出すSOAPパケットパーサーを書くことができましたが、.NETのどこかでこれを行うことができると思います。 –

3

あなたがチェックアウトしたいかもしれない1つの技術はWCFです。 WCFは苦労するかもしれませんが、非常にシンプルな方法でWCFを使い始める方法を示すKeith Elder氏のDNRTVで素晴らしいスクリーンキャストがあります。

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

+1

実際、Antonio、WCFはWebサービスよりも苦痛が少ないです。 –

+0

WCF _is_ウェブサービス。 Webサービスを行う古い方法を考えているかもしれません。 –

1

.NetフレームワークのHttpListenerをご覧ください。

+2

それは私にシンプルなWebサーバーを提供しますが、Webサービス要求を処理することはできません。 –

1

私はWCFを強くお勧めします。それはあなたが描いているような製品に非常によく合います。利用可能な数はbooksです。

1

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

関連する問題