Проектирование интерфейса обслуживания WCF. Процедурный против объектно -ориентированного дизайна

StackOverflow https://stackoverflow.com/questions/3921047

  •  29-09-2019
  •  | 
  •  

Вопрос

Мы строим продукт, который можно использовать другими системами. Как у нас есть SOA, мы разрабатываем только сервис (WCF). У нас было несколько противоречивых дискуссий о том, как разработать интерфейс этой услуги. Мы выбираем между процедурным и дизайном OO для обслуживания.

Поскольку наш сервис будет использоваться от .NET и Java, некоторые говорят, что трудно интегрировать с сервисом, если он имеет дизайн OO. Другие думают, что услуги мачты не используют подход OO. Некоторые говорят, что оо совершенно в порядке. В результате мы нет четкой депрессии на ней.

WCF предоставляет простой способ использовать оба дизайна, но что самое лучшее?

Это было полезно?

Решение

Я предполагаю, что определение «объектно -ориентированного», которое вы используете, является концепцией управления программой «объектов», и эти отдельные объекты управляют своим внутренним состоянием и выставляют функции, которые будут вызваны.

Самым близким WCF Parralel к этому являются сервисы на основе сеансов, где срок службы каждого экземпляра службы контролируется клиентом.

Если вы хотите, чтобы эта служба была вызвана Java, вам придется использовать Basichttpbinding, так как это использует классический протокол веб-сервиса.

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

Следовательно, вы не можете применить «объектно-ориентированную» парадигму в отношении самой услуги.

Другие советы

Вы проясняете свой первоначальный вопрос, сказав: «Мой вопрос о методах сервиса, должны ли они получать сложные типы вместо скалярных параметров?»

Вы должны спросить себя следующим образом:

а) Есть ли шанс, что услуга может использоваться клиентами не ОО? Не знаю, партия кобола? Даже если ваша компания стандартизирована на OO Tech (java/.net), есть ли шанс, что эта конкретная услуга может использоваться в будущем какой -либо внешней организацией (клиент, веб -сайт PHP, что угодно)

б) Вы уже создали много таких услуг в прошлом (так что вы совершенно уверены, что нет проблем с маршалзом/сериализацией/деессериализацией со сложными типами или, по крайней мере, осознаете, что вы можете безопасно использовать)?

Если вы полностью уверены в обеих точках, не стесняйтесь использовать подход «OO» при разработке как входов, так и выходов для вашего сервиса. В противном случае, обратитесь за самым безопасным (хотя и более примитивным) подходом, и разместите «объекты» в группах скаляров.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top