Наша компанія починає досить велику ініціативу SOA. Ми робимо багато чого правильно: є хороша комунікація; гроші за інструменти, де це доречно; і ми використали хороший досвід, який допоможе нам у переході.
Ми намагаємось розробити стандарти, які ми можемо дотримуватись як група, і один із запропонованих стандартів мене дуже непокоїть:
Ми стандартизували схему, де кожна операція приймає об’єкт запиту та повертає об’єкт відповіді.
Я розумію, що це більш-менш стандартний підхід для багатьох людей, але я запитую, чому я повинен турбуватися? (Я не такий хороший з отриманою мудрістю, мені потрібно чому).
Більшість послуг, які я надаватиму, - це просте організаційне пошуку метаданих. Наприклад, знайдіть політику безпеки для конкретного користувача. Для цього потрібен ідентифікатор користувача та більше нічого. Стандарт каже мені, що я повинен обернути цей запит в об'єкт і обернути повернуту політику в об'єкт відповіді.
Моє занепокоєння посилюється поглядом на WSDL, який формується з наших контрактів. WCF автоматично генерує повідомлення про запит і відповідь і обгортає навіть об’єкт запиту / відповіді.
Я повністю розумію, що якщо ви робите складний запит, тоді складний вхідний об'єкт є гарантованим. Це ви б робили, навіть якщо служби не залучалися.
Моє запитання, чому я повинен автоматично завершувати запити та відповіді, коли:
- Це робить прості сервіси менш виразними
- Ви все одно зробите це для складної послуги
- WCF все одно створює запит / відповідь
Я знайшов такі аргументи на користь такого підходу:
Він підтримує версію, дозволяючи необов’язкові параметри вставляти в об’єкт запиту.
Ще в той день я зробив неабияку частину COM, і вважав би це майже анти-схемою для версій. Для деяких речей, я думаю, це допомогло б, але я думаю, що там, де це допоможе, у вас все одно є об'єкт параметрів.
Це дозволяє виділити загальні дані та поведінку до базового класу
Цей несе з собою певну вагу.
Це відволікає людей від поведінки у стилі RPC та до поведінки повідомлень
Я читав це на сайті Microsoft і чув це від нашого гуру, але все ще не маю чіткого уявлення про те, що вони означають або чому це цінно. Хіба що інтерфейси природного вигляду змушують людей забувати, що вони дзвонять на віддалений сервіс?
Я дивлюся на рефакторинг підписів, можливо, 300 методів, тож це нетривіальна біль. Я величезний шанувальник послідовності в реалізації, тому я готовий взяти на себе біль, це просто допоможе дізнатися, що в кінці кінців все це буде вартим.