Предоставление службы Windows через WCF

Я уже создал службу Windows, которая отслеживает сеть на наличие определенного трафика. Теперь мне нужно создать пользовательский интерфейс для службы, чтобы можно было наблюдать за трафиком в режиме реального времени, а также возможность изменять настройки службы.

К сожалению, я застрял в том, как я беру свою рабочую службу и выставляю ее через/преобразую в WCF.

Я даже не знаю, с чего начать.

Спасибо

РЕДАКТИРОВАТЬ: Ну, я представил несколько методов через WCF, и все это выглядит так, как будто оно будет работать по мере необходимости.

На самом деле это было совсем несложно, когда я понял, что конструктор ServiceHost может принимать экземпляр, а не просто тип, поскольку мой класс, выполнявший эту работу, не имел конструктора без параметров.


person CaffGeek    schedule 19.04.2010    source источник
comment
MSDN — всегда хорошее место для начала: msdn.microsoft.com/en-us /netframework/aa663324.aspx, и если у вас есть конкретный вопрос, stackoverflow.com — хорошее место.   -  person Darin Dimitrov    schedule 19.04.2010
comment
Чтобы быть более конкретным, мне нужно иметь возможность изменить порт, который прослушивает служба, через пользовательский интерфейс. В настоящее время у меня есть небольшое приложение пользовательского интерфейса, которое может запускать/останавливать службу с помощью ServiceController. Теперь мне нужен способ вызвать метод в службе с новым номером порта. Это не обязательно должен быть WCF, но он должен быть средством передачи данных в службу.   -  person CaffGeek    schedule 20.04.2010


Ответы (1)


Ну, честно говоря, я бы не пошел по пути «разоблачения» вашего сервиса через WCF.

Мое предложение было бы:

  • оставьте свой текущий сервис, который собирает и отслеживает трафик, как есть
  • хранить данные, которые вы, возможно, захотите предоставить другим, в подходящем постоянном хранилище (например, в базе данных)
  • создайте отдельную службу WCF (размещенную во второй службе Windows NT или в IIS), которая позволит внешним потребителям получать собранные вами данные.

Учитывая ваши текущие данные, вам придется проанализировать, какие данные у вас есть, а затем вам нужно решить, что и как предоставлять эти данные другим, которые могут быть заинтересованы в этих данных.

  • если вы выберете службу WCF на основе SOAP, вам придется придумать набор методов службы (что-то вроде строк GetDataForToday, GetDataForHour или что-то еще, что вы хотите сделать доступным). В этом случае это ваша первая задача — определить методы обслуживания (ваш сервисный контракт, говоря языком WCF) и определить, какие данные задействованы — в качестве параметров для ваших методов обслуживания и в качестве возврата. значения из этих методов (ваши контракты данных)

  • если вам больше нравится REST, то вы обычно не говорите о методах, а вместо этого думаете о своих данных как о ресурсах - например. вы можете предоставить почасовой набор данных в качестве ресурса и перейти к нему, используя URL-адрес, например http://yourserver/YourService/YYYYMMDD/Hour или что-то в этом роде - как вы определяете эти URL-адреса (унифицированные идентификаторы ресурсов - URI) полностью зависит от вас. Каждый такой ресурс должен иметь представление — набор полей и свойств — и вы обычно предоставляете их в виде XML и/или JSON.

Благодаря гибкости WCF вы даже можете делать и то, и другое — если хотите.

SOAP — это более традиционный способ ведения дел — плюсы — это хорошо документированный интерфейс (вы получаете WSDL — описание веб-службы и несколько XSD — XML-схем для описания ваших данных), которые могут быть «обнаружены» и интерпретированы людьми. так и компьютеры. С другой стороны, SOAP имеет тенденцию быть немного «тяжелым», и вам нужен специальный клиент SOAP/ваше собственное приложение, чтобы фактически получить данные.

REST — это более модный и современный способ ведения дел: вы переходите по URL-адресу, а он возвращает грузовик с угловыми скобками (или документ JSON). Это быстро, это просто, это здорово - но это менее формализовано, вы не получаете никакого машиночитаемого описания услуги, на самом деле - это немного больше зависит от вас, чтобы узнать / узнать / прочитать документы, чтобы знать, что вы действительно возвращается и как это интерпретировать.

Уф, это стало длинным постом!! По сути, я бы сохранил вашу текущую службу сбора данных и позволил бы ей работать как есть, и подумал о том, как выставить/сделать доступными эти данные, которые она собирает, используя своего рода отдельную службу WCF.

Хорошими вводными сайтами являются Центр разработчиков MSDN WCF для аспектов WCF на основе SOAP, а также Центр разработчиков MSDN WCF REST для аспектов WCF на основе REST.

person marc_s    schedule 19.04.2010