ASP.NET MVC в качестве узла службы для SOA-подобной архитектуры

Я создаю распределенное приложение, включающее множество сервисов, и ищу технологию, которая позволит мне легко создавать множество сервисов и управлять ими.

Я знаю, что управление и развертывание служб Windows — это не весело. Я думаю об использовании ASP.NET MVC в качестве узла службы моих служб, где каждое действие контроллера становится по существу службой, и я могу общаться со службой с помощью простого HTTP-запроса и ответов, и мне не нужно иметь дело со сложностью, если я использую что-то вроде WCF .

Насколько я знаю, службы должны быть изолированы, а запросы asp.net изолированы, т.е. если запрос вызывает исключение, он не повлияет на другие запущенные запросы.

Но у меня остались вопросы по поводу управления услугами. Как можно будет посмотреть какие сервисы работают, останавливаются и возобновляют сервисы. Кроме того, ASP.NET MVC пассивны, т. е. они что-то делают только по запросу, но что, если я хочу, чтобы служба инициировала работу сама по себе?


person duraid    schedule 19.03.2010    source источник
comment
Я наткнулся на MSE (Managed Services Engine) (codeplex.com/servicesengine). Похоже, что он может размещать спокойные службы WCF, которые могут быть альтернативой службам ASP.NET MVC. Однако я не знаю, может ли он размещать активные службы, т. е. службы, которые работают сами по себе. Я продолжу искать и дам вам знать.   -  person duraid    schedule 25.03.2010


Ответы (2)


Мы используем ASP.Net MVC для создания сервисов, которые возвращают результат JSON. Мы размещаем эти службы в IIS.

MS создает серверный продукт, предназначенный для размещения служб WCF, которые вы могли бы использовать для своих служб, см.: http://samgentile.com/Web/dublin/windows-server-appfabric-formerly-dublin-beta-2-is-available/

person Shiraz Bhaiji    schedule 19.03.2010
comment
Спасибо за ссылку. AppFabric очень похож на то, что я хочу, однако я ищу более легкое решение, и у AppFabric, похоже, много инфраструктуры, которая мне не нужна. Меня больше интересуют ваши службы ASP.NET MVC Json и можете ли вы отслеживать их, чтобы узнать, живы ли они и т. д. - person duraid; 20.03.2010
comment
Вы должны контролировать его чем-то, что не находится на той же машине, что и ваша служба. Если вся машина выйдет из строя, вы не получите никакого предупреждения. Вы можете написать программу, которая пингует службу, если есть ошибка, она отправит вам электронное письмо, подождет одну минуту и ​​​​запустится снова. - person Shiraz Bhaiji; 20.03.2010

Много вопросов, собранных в одном. :)

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

Тем не менее, очень быстро и легко создать сервисный уровень с помощью ASP.Net/IIS без использования MVC (или веб-форм, если на то пошло). На самом деле, большая часть/все функции, необходимые для заглушения сервисного уровня в ASP.Net, могут быть легко созданы в Visual Studio.

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

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

Услуги действительно будут пассивными. Вы можете взглянуть на что-то вроде Quartz.Net для планирования задач, но я не уверен, насколько надежно будет поддерживать его работу в процессе IIS. Подходящим инструментом для работы такого рода, вероятно, будет служба Windows или консольное приложение.

person Phil Sandler    schedule 19.03.2010
comment
Это, конечно, большой вопрос :) Я согласен, что MVC предназначен для презентации, но я выбрал его, потому что он ближе к запросу/ответу, чем веб-формы, и я подумал, что могу извлечь выгоду из его функций, таких как безопасность/валидация, чем создавать свои собственные. - person duraid; 20.03.2010