Автоматически обернуть контроллер вокруг службы в ASP.NET MVC - PullRequest
3 голосов
/ 25 июня 2009

Название вопроса может быть неясным, но я хочу сделать что-то вроде этого:

Вот так я выкладываю свое приложение

App.Domain App.Services App.Web

Я хочу, чтобы, если я запросил что-то вроде /api/OrderProcessor/GetAllOrder, он вызвал бы метод GetAllOrder в App.Services.OrderProcessorService.

Метод вернет IList<Order>, и я хотел бы, чтобы он был сериализован в JSON в соответствии с определенным форматом (на самом деле я использую ExtJS), возможно, что-то вроде:

{ 
  success: true,
  totalCount: 10,
  list: [ { ... }, { ... } ]
}

Я могу пойти и сделать Сервисы в качестве контроллеров, но я не хочу, чтобы сервисный уровень был испорчен материалами презентации.

Как я могу сделать такой контроллер оболочки?

Я не хочу прикреплять какие-либо атрибуты к самому классу Service, и, возможно, было бы неплохо, если бы я мог сконфигурировать его с помощью IoC, где, возможно, позже я захочу получить вывод XML или, возможно, возможность использовать DTO класс вместо исходного класса домена.

Есть идеи?

Ответы [ 2 ]

2 голосов
/ 25 июня 2009

Похоже, вы пытаетесь сделать RESTful-сервис .

Используя службу RESTful, URI /api/OrderProcessor/GetAllOrders будет возвращать ваши объекты JSON.

В таком случае я бы использовал WCF вместо ASP.NET MVC.

Чтобы начать работу с WCF, REST и JSON, посмотрите Предварительный просмотр WCF REST Starter Kit 2 в Codeplex. В этом посте , который я нашел Бен Дьюи, есть быстрый пример возврата JSON из службы WCF.

Удачи!

0 голосов
/ 22 октября 2009

Вы можете использовать что-то вроде OnMethodInvocationAspect в PostSharp, чтобы перехватывать каждый вызов метода вашего контроллера и действовать как ретранслятор методов с аналогичными именами в назначенном прокси-объекте ...

...