Подтвердить что ты не робот

Возможно ли создать автономный веб-сервис С#, развернутый как служба EXE или Windows?

Возможно ли создать С# EXE или Windows Service, которые могут обрабатывать запросы веб-службы? Очевидно, что какой-то встроенный, возможно ограниченный веб-сервер должен быть частью EXE/сервиса. EXE/service не придется полагаться на установленный IIS. Предпочтительно, встроенная веб-служба может обрабатывать соединения типа HTTPS/SSL.

Сценарий таков: клиент хочет установить небольшой агент (службу Windows) на своих корпоративных машинах. Агент должен иметь две основные задачи: 1) контролировать систему с течением времени и собирать определенные фрагменты данных; 2) отвечать на запросы веб-сервисов (SOAP -v-REST по-прежнему обсуждается) для сбора данных или системных изменений. Заказчику нравится идея API-интерфейсов веб-сервисов, поэтому любое количество клиентов (на любом языке) может быть записано для доступа к различным агентам, работающим на корпоративных компьютерах. Они хотят, чтобы установка была относительно безболезненной (установите .NET, некоторые сборки, службу, измените брандмауэр Windows, запустите службу), не требуя установки и настройки IIS.

Я знаю, что могу сделать это с Delphi. Но клиент предпочел бы, чтобы это было сделано на С#, если это возможно.

Любые предложения?

4b9b3361

Ответ 1

Да, возможно, вы можете взглянуть на WCF и Self Hosting.

Ответ 2

Да, это возможно (и довольно легко).

Вот статья CodeProject, показывающая, как сделать базовый HTTP-сервер в С#. Это можно легко разместить в автономном EXE или службе и использовать в качестве веб-службы.

Ответ 3

Одна технология, которую вы можете проверить, - WCF. WCF может быть немного больным, чтобы попасть в него, но там был отличный просмотр на DNRTV Китом Элдером, который показывает, как начать работу с WCF очень просто.

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

Ответ 4

Вы можете посмотреть HttpListener в инфраструктуре .Net.

Ответ 5

Я бы очень рекомендовал WCF. Он будет очень хорошо вписываться в продукт, как вы описываете. Существует большое количество books.

Ответ 6

Конечно, вы можете это сделать. Обязательно измените тип вывода проекта на Консольное приложение. Затем в основной функции добавьте параметр []. Выключив какой-либо коммутатор, который вы получите в командной строке, вы можете перейти на ServiceBase.Run для запуска в качестве службы Windows или для перехода к другому коду для запуска консольного приложения.