C # Мысли об этом дизайне - PullRequest
0 голосов
/ 08 мая 2009

У меня есть этот проблемный домен, где мне нужно иметь возможность запустить фоновый процесс, который бы:

  • Запустить фильтр для получения коллекции obj (трудоемкая операция)
  • Пропустить obj coll через набор правил ... возможно через интерфейс правил
  • Уметь выставлять любые изменения, которые правила вызвали, для любых заинтересованных слушателей.

Каждый фильтр может иметь много правил и может быть более одного фильтра.

Был бы практический способ приблизиться к этому? Я думаю:

  • Разместите приложение WCF в службе Windows, которое предоставит обратный вызов для изменений правил
  • Пусть служба выполняет основную работу по запуску filter-> rules. Это будет отдельная многопоточная работа?

Любые мысли или ссылки на существующие рамки, шаблоны проектирования и т. Д. Приветствуются.

спасибо Sunit

Ответы [ 3 ]

1 голос
/ 08 мая 2009

Если ваш фоновый процесс должен быть мгновенно (24/7/365) доступен с удаленных компьютеров, служба Windows имеет для меня большой смысл. Предполагая, что вы знакомы с C #, создать службу Windows довольно просто. Вы можете следовать пошаговой инструкции здесь . После запуска службы Windows можно легко разместить службу WCF, создав экземпляр System.ServiceModle.ServiceHost в обратном вызове OnStart службы Windows. Что касается шаблонов WCF и хороших практик, я отправлю вас на сайт Джувала Лоуи, IDesign.net . На сайте есть много бесплатных загрузок, связанных с WCF, просто указав свой адрес электронной почты.

0 голосов
/ 08 мая 2009

Вы можете использовать WWF, чтобы позаботиться о правилах. Вы должны быть в состоянии разместить WWF как сервис.

0 голосов
/ 08 мая 2009

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

В любом случае задание должно выполняться в отдельном потоке, чтобы оно не блокировало службу.

Если вы идете с опросом для определения состояния маршрута, поместите фактический результат в возвращаемый статус. Если вы используете обратный вызов, используйте WSDualHttpBinding и настройте обратный вызов. Это выглядит немного страшно для настройки, но на самом деле все не так плохо.

Я позволю кому-то еще присоединиться к реальным шаблонам или структурам, я просто не уверен. Кроме того, проверьте MSMQ, это может быть другое жизнеспособное решение.

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