EXEまたはWindowsサービスとしてデプロイされたスタンドアロンのC#Webサービスを作成することはできますか?
-
06-07-2019 - |
質問
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#で行うことを好むでしょう。
提案はありますか
解決
はい、可能です。 WCF をご覧ください。 a>およびセルフホスティング。
他のヒント
はい、可能です(そしてかなり簡単です)。
CodeProjectの記事で基本的なHTTPサーバーの作成方法を示しますC#。これは簡単にスタンドアロンEXEまたはサービスに配置し、Webサービスとして使用できます。
チェックアウトしたい技術の1つはWCFです。 WCFには少し苦労するかもしれませんが、DNRTVで非常に簡単な方法でWCFを開始する方法を示す、Keith Elderによるすばらしいスクリーンキャストがあります。
HttpListener をご覧ください。 .Netフレームワークで。
WCFを強くお勧めします。あなたが説明しているような製品に非常によく適合します。多数のがあります。書籍が利用可能です。
もちろんできます。プロジェクトの出力タイプを必ずコンソールアプリケーションに変更してください。次に、Main関数で、string []パラメーターを追加します。コマンドラインで受け取るスイッチから、ServiceBase.Runに分岐してWindowsサービスとして実行したり、他のコードに分岐してコンソールアプリケーションを実行したりできます。