Несколько вызовов WCF для одной загрузки страницы ASP.NET - PullRequest
0 голосов
/ 01 мая 2010

У меня есть существующее веб-приложение asp.net, которое я перепроектирую для использования сервисной архитектуры.У меня есть начало службы WCF, которую я могу вызывать и выполнять функции без проблем.Что касается обновления данных, все это имеет смысл.Например, у меня есть кнопка с надписью Submit Order, она отправляет данные в сервис, который выполняет обработку.

Вот мое беспокойство: если у меня есть страница ASP.NET, которая показывает мне список заказов (страница «Просмотр заказов»), а вверху у меня есть куча выпадающих списков для типов заказов и другой поисккритерии, которые заполняются путем запроса различных таблиц из базы данных (таблицы поиска и т. д.).Я надеюсь в конечном итоге полностью отделить веб-приложение от БД и использовать контракты данных для передачи информации между BLL, SOA и веб-приложением.С учетом сказанного, как я могу уменьшить количество вызовов WCF, необходимых для загрузки моей страницы «Просмотр заказов»?Мне нужно было бы сделать 1 вызов, чтобы получить список заказов, и 1 вызов для каждого раскрывающегося списка и т. Д., Поскольку они заполняются отдельными функциями в моем BLL.

Это хорошая архитектура для создания метода веб-службы, который возвращает специализированный контракт данных, который состоит из всего, что вам нужно для отображения страницы просмотра заказов, в 1 выстрел?Примерно такой псевдокод:

public class ViewOrderPageDTO
{
  public OrderDTO[] Orders { get; set; }
  public OrderTypesDTO[] OrderTypes { get; set; }
  public OrderStatusesDTO[] OrderStatuses { get; set; }
  public CustomerListDTO[] CustomerList { get; set; }
}

Или в событии page_load лучше делать 5, 6 или даже 15 отдельных вызовов SOA для получения данных, необходимых для загрузки страницы?Поэтому, обходя необходимость в специализированных методах wcf или DTO, которые объединяют другие DTO?

Спасибо за ваш вклад и предложения.

Ответы [ 2 ]

0 голосов
/ 01 мая 2010

Это абсолютно хороший способ иметь метод / операцию веб-службы, предназначенный для предоставления полного набора данных, необходимых для отображения определенного "бизнес-объекта".

Фактически, этот тип дизайна является самой сущностью веб-сервисов и SOA. Вы предоставляете интеллект и абстракции , а не просто CRUD-подобные методы доступа к данным.

Это также намного эффективнее, намного , чем 5 или 6 вызовов веб-службы с одной веб-страницы. 5-6 вызовов - это много , особенно когда вы можете сократить это число до 1. Вызовы веб-службы, как правило, стоят дорого, по крайней мере, по сравнению с базовым доступом к данным или поиском в кэше, и вы действительно хотите чтобы уменьшить количество «болтовни», если это возможно.

Ваш первый инстинкт был верным. Пойдите с грубым веб-сервисом, который даст вам все необходимое.

0 голосов
/ 01 мая 2010

Сначала я могу предложить сделать это простым и просто сделать один вызов для каждого типа объекта, который вам нужно получить. Если подумать, когда браузер загружает веб-страницу, он делает тонну HTTP-запросов для получения html и всех файлов содержимого, поэтому не страшно вызывать несколько методов службы в этом процессе. Пока услуги бывают быстрыми и маленькими, это не должно стать проблемой.

Если вы видите проблемы с производительностью, я бы сосредоточился на них, а не пытался что-то предварительно оптимизировать. Вы могли бы взглянуть на объединение нескольких вызовов служб или реализацию уровня кэширования на стороне сервера или клиента.

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