русский
Germany.ruForen → Архив Досок→ Programmierung

Кто работает с микросервисами - есть вопросы

14.07.21 11:20
Re: Кто работает с микросервисами - есть вопросы
 
Программист коренной житель
in Antwort koder 14.07.21 10:32
Интерфейсы позволяют контрактами договорится внутри приложения о имплементации классов и принудить вторую сторону выполнить принятый договор. Но не между приложениями.

Есть несколько способов для Inter Process Communication. Собственно говоря, возьми любую коммуникацию по TCP - там все тоже самое. О контракте, которым должны соответствовать данные договариваются клиент и сервер. Иписание какого-либо протокола в PDF - это тоже контракт. Ну и в общем случае интерфейс не может принудить выполнять какой-либо договор. Интерфейс - это декларация, т.е. объявление всем контагентам, что какой-то объект соответствует какому-либо контракту, но ты не может а) заставить контрагента подчиняться этому контракту и б) нельзя гарантировать, что объект на 100% делает то, что декларируется.


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

Если приложение ожидает данные по одному контракту, а получает другой, то оно просто сообщает об ошибке и все.

Просто разработчики должны договориться и использовать один контракт.


Отсутствием синтаксической проверки во время программирования.

Ну вот WCF дает такую проверку. И что? Это теперь не HTTP? :D Договоренности же не обязательно должны проверяться на стадии компилирования.


Интерфейс принуждает программиста править классы, имплементирующие измененные интерфейсы.

Интерфест - это просто форма документации, соответствие которой можно проверить на этапе компилорования.


А вот в вебе пришла какая то хрень и хорошо, если сервер выкинет ошибку о невозможности влепить текстовые данные в числовое поле.Фронденщики ДТО изменили втихаря. Упс. А может просто игнорировать отсутствующее поле, если на нем валидатия не висит.

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


Дело в том, что обмен данными между бэком и фронтом осуществляется по устному договору, который не проверяется синтаксически. Типа фронтэндщик коворит "зуб даю" и этому приходится верить

Ну это уже вопрос реализации :) Никто же не мешает запикнуть версию контракта в DTO ;)

 

Sprung zu