Contract First vs Code First: что выбрать
Существует два подхода к проектированию API.
- Code first — сначала пишем код, потом по нему генерируем контракт.
- Contract first — сначала создаем контракт, потом по нему пишем или генерируем код.
Контракт — это соглашение между поставщиком и потребителем об услуге. Чтобы правильно использовать услугу, потребитель сервиса должен полностью понимать договор.
Контракт включает в себя детали многих аспектов обслуживания, таких как:
- Как вызвать сервис.
- Какой транспорт используется.
- Каковы структуры запроса и ответа.
Преимущества Code First
- Контракты с минимальными усилиями. Это всего лишь побочный продукт разработки сервиса, так как он может быть автоматически сгенерирован из кода.
- Синхронизация кода и контракта. Поскольку контракт генерируется из кода, они всегда синхронизируются друг с другом.
Недостатки Code First
- Нет параллельной разработки. Производитель услуг и потребители услуг не могут разрабатывать параллельно. Сначала необходимо разработать сервис, затем сгенерировать контракт, и только после этого можно написать код потребителя, который будет придерживаться контракта. Без понимания контракта потребитель не может быть разработан.
- Нет цели для команд. Поскольку договор не может быть известен до того, как сервис будет разработан, не существует цели для различных заинтересованных сторон в разработке. Следовательно, есть все шансы, что направления будут отклоняться, и будут внесены ненужные изменения, что приведет к напрасной трате усилий.
- Нет кроссплатформенной совместимости. На некоторых старых платформах не так просто сгенерировать контракт из кода. В результате этого для сгенерированных контрактов довольно часто возникает несовместимость между платформами.