Клиент к сервису
От: Gattaka Россия  
Дата: 12.09.17 18:36
Оценка:
Есть два микросервиса они базарят между собой по http. Сервис А вызвает сервис В. У обоих сервисов два разных солюшена.
Вопрос. В каком салюшене должен лежать клиент к сервису В. Учитывая, что им могут пользоваться и другие сервисы.
Re: Клиент к сервису
От: neFormal Россия  
Дата: 12.09.17 20:19
Оценка: +2
Здравствуйте, Gattaka, Вы писали:

G>Есть два микросервиса они базарят между собой по http. Сервис А вызвает сервис В. У обоих сервисов два разных солюшена.

G>Вопрос. В каком салюшене должен лежать клиент к сервису В. Учитывая, что им могут пользоваться и другие сервисы.

в третьем.
...coding for chaos...
Re[2]: Клиент к сервису
От: Gattaka Россия  
Дата: 13.09.17 18:24
Оценка:
Здравствуйте, neFormal, Вы писали:

F>Здравствуйте, Gattaka, Вы писали:


G>>Есть два микросервиса они базарят между собой по http. Сервис А вызвает сервис В. У обоих сервисов два разных солюшена.

G>>Вопрос. В каком салюшене должен лежать клиент к сервису В. Учитывая, что им могут пользоваться и другие сервисы.

F>в третьем.


Казалось бы логично. Но давайте пойдем дальше. На примере .net. Пусть у нас есть еще солюшен с логером. Сборка лежит в nuget. Естественно, что его используют все. В том числе и клиент к сервису (предположим для примера).
Когда мы обновляем логер. Мы можем обновить его в сервисе A, но не обновить в клиенте к сервису B. Будет ошибка во время выполнения, т.к. dll c логером одна. А две сборки сервиса ссылкаются на разные версии.
Либо можно обновлять версию логера везде, но это не нужно и не удобно очень. Т.к. ссылаются на него все. Как в данном случае быть? Это на самом деле был основной вопрос.
Re[3]: Клиент к сервису
От: _Raz_  
Дата: 13.09.17 18:30
Оценка:
Здравствуйте, Gattaka, Вы писали:

G>Как в данном случае быть?


Использовать bindingRedirect
... << RSDN@Home 1.3.108 alpha 5 rev. 56>>
Re[4]: Клиент к сервису
От: Gattaka Россия  
Дата: 13.09.17 18:35
Оценка:
Здравствуйте, _Raz_, Вы писали:

_R_>Здравствуйте, Gattaka, Вы писали:


G>>Как в данном случае быть?


_R_>Использовать bindingRedirect

Пока мне это решение кажется вносящим излишнию сложность. Не могли бы вы пояснить как конкретно это можно использовать.
Re[3]: Клиент к сервису
От: scf  
Дата: 13.09.17 20:34
Оценка:
Здравствуйте, Gattaka, Вы писали:

G>Когда мы обновляем логер. Мы можем обновить его в сервисе A, но не обновить в клиенте к сервису B. Будет ошибка во время выполнения, т.к. dll c логером одна. А две сборки сервиса ссылкаются на разные версии.

G>Либо можно обновлять версию логера везде, но это не нужно и не удобно очень. Т.к. ссылаются на него все. Как в данном случае быть? Это на самом деле был основной вопрос.

Я больше по JVM, но разве в С# мире нет понятия binary compatibility? В идеале, такие частоиспользуемые части, как логгер, должны оставаться обратно совместимы. Отступления от этого правила приводят к IPC, OSGi, микросервисам.
Re[3]: Клиент к сервису
От: neFormal Россия  
Дата: 13.09.17 22:55
Оценка:
Здравствуйте, Gattaka, Вы писали:

F>>в третьем.

G>Казалось бы логично. Но давайте пойдем дальше. На примере .net. Пусть у нас есть еще солюшен с логером. Сборка лежит в nuget. Естественно, что его используют все. В том числе и клиент к сервису (предположим для примера).
G>Когда мы обновляем логер. Мы можем обновить его в сервисе A, но не обновить в клиенте к сервису B. Будет ошибка во время выполнения, т.к. dll c логером одна. А две сборки сервиса ссылкаются на разные версии.
G>Либо можно обновлять версию логера везде, но это не нужно и не удобно очень. Т.к. ссылаются на него все. Как в данном случае быть? Это на самом деле был основной вопрос.

использовать обе версии, если не хочется обновляться.
nuget не умеет в версионность?
...coding for chaos...
Re[3]: Клиент к сервису
От: itslave СССР  
Дата: 22.09.17 15:23
Оценка:
Здравствуйте, Gattaka, Вы писали:

G>Когда мы обновляем логер. Мы можем обновить его в сервисе A, но не обновить в клиенте к сервису B. Будет ошибка во время выполнения, т.к. dll c логером одна. А две сборки сервиса ссылкаются на разные версии.

G>Либо можно обновлять версию логера везде, но это не нужно и не удобно очень. Т.к. ссылаются на него все. Как в данном случае быть? Это на самом деле был основной вопрос.
Надо делать клиента отдельным проектом. Со своими релизами, тасками и так далее. Соотвественно обновлять его версии в сервисах А и Б надо будет вдумчиво, читая релизноты и так далее.
Но конкретно с логами можно порешать проще, заюзать в клиенте https://github.com/net-commons/common-logging
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.