Разработка контракта на сервис WCF. Подходит ли контроллер варианта использования? - PullRequest
4 голосов
/ 31 августа 2010

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

Вот моя проблема. Я унаследовал продукт, который был разработан так, чтобы быть настолько гибким, что заполнение практически всех полей со списком и текстовых блоков в форме (silverlight) требует запроса на обслуживание. Некоторые экраны принимают до 15 отдельных запросов только для заполнения!

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

Нет планов выставить службу за пределами наших собственных стен. нет планирует написать другого клиента для этой конкретной услуги. Так я не могу просто написать «контроллер вариантов использования» в конце службы? Итак, на экране «создать жалобу» вместо списка запросов типа ...

  1. GetComplaintTypes
  2. GetCustomerTypes
  3. GetAreaDetails
  4. И так далее ...

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

Более того, если вы не намереваетесь раскрывать API службы третьим сторонам, разве это не лучшая стратегия, чем раскрытие операций CRUD для таблиц в БД?

Вся помощь и мнения приветствуются. Заранее спасибо.

Ответы [ 5 ]

2 голосов
/ 31 августа 2010

Я думаю, что ваша идея вполне нормальная.

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

1 голос
/ 02 сентября 2010

Вот мой взгляд на все это.Ответ, как всегда, зависит.

Вот несколько практических примеров того, как построить SOA с использованием WCF.

Я бы предложил вам прочитать статьи Thomas Erl и Roger Sessions, это будетдать вам четкое представление о том, что такое SOA.

Создание SOA

Шаблон проектирования SOA

Достижение целостности в SOA

Почему ваша SOA должна быть похожа на VW Beetle

SOA для вашего босса

1 голос
/ 31 августа 2010

Служба WCF на вершине бизнес-логики должна представлять фасад бизнес-операций высокого уровня, а не CRUD-операций низкого уровня. Сервисы операций CRUD предназначены для предоставления данных (например, сервисы данных WCF).

1 голос
/ 31 августа 2010

Я думаю, вы должны сначала определить, где именно проблема с производительностью. Правда ли, что IIS не может обработать количество запросов, которые вы ему отправляете? Или каждый отдельный запрос занимает слишком много времени, потому что база данных не может обслуживать ваши данные и выглядит так, будто IIS не может справиться с давлением из-за этого.

Я не уверен, что существует реальная разница между двумя следующими сценариями:

  • Небольшие запросы, каждый из которых выполняет оператор выбора базы данных.
  • Один большой запрос, который выполняет много операторов выбора базы данных.

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

0 голосов
/ 02 сентября 2010

Самый простой подход для предоставления данных из БД с использованием шаблона CRUD с WCF - это использование служб данных WCF.На самом деле вы не разрабатываете ничего на стороне сервера, кроме модели, которую вы хотите представить, что также может быть автоматически выведено из модели EF, если вы используете это для получения доступа к базе данных.

Пабло.

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