Анти-шаблон SOA или WCF - PullRequest
       8

Анти-шаблон SOA или WCF

21 голосов
/ 15 января 2009

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

Ответы [ 5 ]

15 голосов
/ 29 января 2009

Я думаю, что вы правы. В моем текущем задании (веб-разработка) каждый отдельный доступ к базе данных реализован как сервис. Мы "ЧИСТАЯ СОА", как сказал ведущий архитектор ... Ух ты!

На самом деле, это добавляет много сложности всему. Когда я хочу прочитать содержимое простой таблицы, я должен сгенерировать что-то вроде 8 проектов, 42 файлов, 8 сборок и, возможно, 9 файлов конфигурации!

Большая сложность, как я уже сказал. Скорее всего, кто-то где-то забудет один файл ... Выставлять простой процесс как услугу глупо.

В моих книгах вы должны представлять свои процессы как сервис, когда:

  • Многие приложения, использующие разные языки и фреймворки, должны вызывать ваши вещи.
  • Вовлечено более одной платформы (Windows, Unix ...).
  • Обрабатываемые данные являются ядром предприятия.

Кроме того, обратите внимание, что служба должна быть ПРОЕКТИРОВАНА, чтобы быть службой, и что разработка службы по крайней мере так же сложна, как и разработка библиотеки: перехват ошибок должен быть тщательно продуман, ведение журнала должно быть достаточно гибким, документация должна быть полной и т.д.

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

Ну очень интересный вопрос. 1 балл: о)

7 голосов
/ 15 января 2009

SOA как концепция - отличная идея.

SOA, реализованный с использованием HTTP-WS / BPEL и др., - это шутка, которая заслуживает того, чтобы умереть с моей не столь скромной точки зрения. Я перестал серьезно относиться к системе вскоре после того, как узнал, что их единственной концепцией распределенных транзакций являются транзакции компенсации ... bzzt СЛЕДУЮЩАЯ !!

4 голосов
/ 24 ноября 2011

Я опубликовал несколько анти-паттернов SOA

Дело в том, что многие люди считают, что SOA ставит интерфейс веб-службы перед логикой, и забывают о последствиях полученного RPC (также известного как ошибки распределенных вычислений )

4 голосов
/ 10 июня 2009

Есть два основных анти-паттерна, которые я знаю:

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

Рекомендуется, чтобы ваш уровень обслуживания содержал грубые, универсальные методы, а также чтобы они принимали и возвращали довольно большие запросы и ответы на основе сообщений. Цель состоит в том, чтобы предоставить достаточно общий интерфейс, не делая слишком больших предположений о том, как будет использоваться служба, и не требуя многочисленных вызовов для достижения основных функций. Попробуйте свести к минимуму количество вызовов веб-службы.

Вот отличный совет на высоком уровне: http://apparchguide.codeplex.com/Wiki/View.aspx?title=Chapter%2013%20-%20Service%20Layer%20Guidelines

Вот конкретный пример типа классов «сообщений», о которых идет речь в руководстве, и того, как его реализовать в WCF: http://dotnet.org.za/hiltong/pages/windows-communication-foundation-tutorial-part-3-messaging-messagecontracts.aspx

3 голосов
/ 31 января 2009

SOA - одно из представленных понятий. SOA - это архитектурный стиль, который не имеет ничего общего с веб-сервисами или технологиями. Я согласен с тем, что объяснение SOA с помощью веб-сервисов и BPEL просто вводит в заблуждение, BPEL обычно не имеет ничего общего с SOA, а вместо этого является способом реализации оркестрации WS. Продавцы сделали ужасный беспорядок.

Я предлагаю очень хорошую загружаемую книгу, которая действительно объясняет, что такое SOA:

http://www.infoq.com/minibooks/enterprise-soa

Тогда вы можете прочитать эту интересную запись в блоге

Привет

...