Распределенная система, объявлять интерфейс в общем модуле ИЛИ объявлять 2 одинаковых интерфейса как у поставщика, так и у потребителя? - PullRequest
0 голосов
/ 31 мая 2019

В распределенной системе объявить интерфейс в общем модуле ИЛИ объявить 2 одинаковых интерфейса в подсистеме провайдера и потребителя, какой путь более рекомендуется?

Я работаю в распределенной системе с Apache Dubbo, и меня смущает проблема, описанная выше. «Подсистема потребителя» (работающая в собственной JVM) может вызывать методы в «подсистеме провайдера», если интерфейс этих методов зарегистрирован в Dubbo. Итак, сервис Dubbo основан на интерфейсе, у меня есть 2 варианта:

  1. Объявите интерфейс, скажем, MyDubboService, в общем модуле, скажем, my-comm, и добавьте my-comm в качестве библиотеки зависимостей в «подсистеме потребителя» и «подсистеме провайдера». Затем внедрите и зарегистрируйте MyDubboService (в Dubbo) в «подсистеме провайдера».
  2. Объявите MyDubboService в «подсистеме потребителя» и «подсистеме провайдера» два раза, затем внедрите и зарегистрируйте MyDubboService (для Dubbo) в «подсистеме провайдера».

Моя команда приняла вариант # 2 в качестве стратегии, но, на мой взгляд, вариант # 1 лучше, потому что эти преимущества:

  1. Гарантия, что интерфейс одинаков с обеих сторон
  2. Избегайте дублирования кода.
  3. выглядит более элегантно

Я понимаю, опция # 1 также имеет дефект, например, "открыла некоторые бесполезные методы для потребителя, который может не заинтересовать потребителя"

Итак, я хочу знать, какой вариант лучше, или сказать, как мы решаем, какой путь выбрать, вариант # 1 или # 2 ?

Любые комментарии приветствуются, спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...