Ну, на основе документации вы можете использовать DiscoveryClient , чтобы получить экземпляры, основанные на каком-либо сервисе, на примере документации "STORES"
, посмотрите, вы можете сделать это следующим примером:
@Autowired
private DiscoveryClient discoveryClient;
public List getInstances(String serviceName) {
List list = discoveryClient.getInstances(serviceName);
if (list != null && list.size() > 0 ) {
// logic here if it is necessary.
}
return list;
}
В '92 / '93 периода времени я работал над сменной архитектурой для PageMaker Aldus, который был кодирован в C++. PageMaker был основан на платформе ООП C++ под названием ВАМП, который помог ее мобильности между Mac OS и Windows.
Таким образом, мы пытались использовать функции C++ для создания сменной архитектуры. Это оказалось очень проблематичным для классов C++ из-за так называемой хрупкой проблемы базового класса. Я продолжил писать работу, которая была опубликована в журналах и что я представил в OOPSLA '93 в отражательном цехе. Я также вступил в контакт с Bjarne Stroustrup на конференции Usenix в Портленде и продолжил двигаться к диалоговому окну с ним в течение нескольких месяцев, где он защитил проблему контакта с хрупкой проблемой базового класса от моего имени. (Увы, другие проблемы считали более важными в то время.)
Microsoft представила систему COM/DCOM и для той платформы, которая считалась эффективным решением проблемы. C++ мог использоваться в качестве языка реализации для COM через абстрактные классы, используемые для определения COM-интерфейсов.
Однако в эти дни разработчики избегают далеко от COM/DCOM.
Напротив, NeXT создал сменную архитектуру с помощью Objective C в начале 90-х в платформе Шага NeXT. Сегодня это живет на vibrantly в Mac OS X на компьютерах Apple и важных платформах, таких как iPhone.
Я утверждаю, что Objective C позволил решить сменную проблему превосходящим способом.
Я лично расцениваю хрупкую проблему базового класса C++, чтобы быть, это - большая часть фатального дефекта.
Если бы создавали сменную архитектуру с языковой семьей на базе С, то сделал бы настолько использующий Objective C.
Я имел некоторый успех с помощью довольно наивной системы:
В C (и я думаю C++ также, хотя я не сделал его сам), это, как правило, делается с помощью динамично загруженных модулей. API:s для такого зависимы от платформы.
На POSIX (Linux) Вы используете dlopen()
семейство функций. В основном Вы создаете свой плагин отдельно, затем загружаете его во времени выполнения, ищете его символы по имени и можете затем назвать их.
Для Win32, существует LoadLibrary()
который делает что-то очень похожее, Вы встраиваете свой код в DLL.
Для удобной обертки, которая делает все из них легкими и прозрачными, API GLIB выезда GModule.
Это не может быть тем, что Вы ищете, но Вы могли встроить язык сценариев в свое приложение, такое как Lua. Lua был разработан, чтобы встраиваться в другие программы и использоваться в качестве языка сценариев для записи плагинов. Я полагаю, что довольно легко добавить интерпретатор Lua к Вашей программе, хотя я не знаю Lua, таким образом, я не могу ручаться за то, насколько эффективный из решения это было бы. Другие с большим опытом с Lua, добавьте комментарии о своем опыте со встраиванием Lua в другом приложении.
Это, конечно, означало бы, что Ваши плагины должны быть записаны в Lua. Если Вам не нравится Lua затем, фактический стандартный Perl, Python и интерпретаторы Ruby все записаны в C и могут быть встроены в программу C. Я знаю о многих программах, которые используют эти языки в качестве расширений языка сценариев.
Однако я не знаю то, что Вы ищете, поскольку Ваш вопрос немного неопределенен. Возможно, больше информации о том, что Вы хотите, чтобы люди смогли сделать с упомянутыми плагинами, было бы соответствующим. Для некоторых задач полноценный язык сценариев может быть небольшим излишеством.
Лучше использовать платформу как ACE (http://www.cs.wustl.edu/~schmidt/ACE.html), который экранирует Вас (как хороших как возможных) с платформы определенное кодирование.
ACE содержит сменную платформу, которая основана на общих библиотеках, которыми можно пользоваться для создавания динамично собранных приложений.
Поскольку высокоуровневая абстракция проверяет ЧАО (http://www.cs.wustl.edu/~schmidt/CIAO.html) Открытый исходный код реализация C++ Компонентной модели CORBA.
Этот подкаст об архитектуре плагинов также может быть интересным.