Предоставление службы Windows через WCF - PullRequest
2 голосов
/ 19 апреля 2010

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

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

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

Спасибо

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

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

1 Ответ

2 голосов
/ 20 апреля 2010

Ну, честно говоря, я бы не пошел по пути "разоблачения" вашего сервиса через 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 Developer Center для аспектов WCF на основе SOAP и MSDN WCF REST Developer Center для аспектов WCF на основе REST.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...