2015-05-10 2 views
2

Все сервисы WCF, которые я уже видел, представляют собой один «божественный» интерфейс/класс с множеством методов. Если бы я хотел иметь другой модуль, я всегда создавал новую услугу.Может ли служба WCF быть модульной, как услуга WEB API?

С WEB API Мне не нужно это делать, потому что я могу разработать несколько контроллеров, ответственных за разную функциональность.

Верно ли, что служба WCF всегда является таким «божьим» классом со многими методами или мне что-то не хватает?

Я читал много сравнений между WCF и WEB API, но я не видел этого упоминания ни одним из них.

ответ

1

Вы можете имитировать набор контроллеров в WebAPI, используя модификатор C# partial. Но это, вероятно, удвоит количество файлов в проекте из-за необходимости иметь интерфейс и его реализацию в WCF (если вы их разделяете).

1

Предполагаю, что когда вы говорите «Служба WCF», вы имеете в виду службу SOAP. Поскольку WCF также поддерживает службы стиля REST.

Вы можете разработать сервис WCF, как вам нравится.

Одно из отличий заключается в том, что службы WEB API не предоставляют метаданные о себе. Если вы добавите (или удалите) контроллер, это не повлияет на метаданные, отправленные запрашивающим клиентам, потому что -.

Если вы добавляете или удаляете договор на обслуживание или добавляете или удаляете операции с существующим контрактом на обслуживание, вы изменяете метаданные, доступные клиентам. Некоторые из этих клиентов могут либо сломаться (клиенты, такие как PHP, которые используют метаданные во время выполнения), либо просто не смогут работать с новыми контрактами на обслуживание (потому что у них нет прокси-классов, чтобы соответствовать им).

1

По архитектуре служба WCF является более «модульной», чем служба WEB API. Вы уже видели, что это один «божественный» интерфейс/класс с множеством методов, вероятно, потому что предыдущие разработчики обычно могут иметь следующие халатности.

  1. Один интерфейс для всех методов
  2. Mix интерфейсов и реализаций в той же сборке

Если программная архитектура спроектирована правильно, большинство или все бизнес-логика должна быть воплощен в модели классов, которые имеют нет соединений с WCF или веб-API, поэтому коды Web Api или WCF должны быть тонкими.

+0

@John, это было по дизайну, хотя на практике все больше и больше веб-служб B2B реализованы через Web API/RESTful. Точнее, именно ваши бизнес-модели и модели работы определяют, какие технологии использовать. Мое намерение упомянуть B2B и B2C заключается в повышении осведомленности о бизнес-моделях и операционных моделях, хотя это может быть вне контекста в таком форуме вопросов и ответов. – ZZZ

+0

Ты прав Джон. Просто удалил упоминание b2b b2c. – ZZZ

Смежные вопросы