Лучший способ создать заменяемую в горячем режиме сервисную библиотеку WCF

После настройки расширения авторизации вы можете добавить пользовательские утверждения к выданным токенам JWT из правил. Вот пример правила, которое выполняет эту работу: https://auth0.com/docs/extensions/authorization-extension/v2/rules#add-custom-claims-to-the-issued-token [ 112]

Вы также можете настроить токен Client Credentials, используя Hook: https://auth0.com/docs/api-auth/tutorials/client-credentials/customize-with-hooks [ 113]

РЕДАКТИРОВАТЬ: приложения, совместимые с OIDC, требуют от вас определения пространства имен, поскольку данные авторизации, такие как роли и группы, не являются утверждениями OIDC.

8
задан thaBadDawg 5 January 2009 в 00:50
поделиться

4 ответа

При использовании WCF одним именем, с которым необходимо быть знакомы, является Juval Lowy. Он - основатель IDesign и один из самых признанных экспертов относительно WCF. Его книга Programming WCF Services настоятельно рекомендована.

Веб-сайт IDesign предлагает целый ряд бесплатных к использованию загрузок, связанных с WCF. Все, что необходимо сделать, вводят адрес электронной почты и соблюдают стандартное лицензионное соглашение IDESIGN.

Особенно интересный для Вас может быть Хост Домена Приложения, В - Proc Фабрика, и В - Proc Размещающие загрузки, найденные здесь.

8
ответ дан 5 December 2019 в 15:27
поделиться

Попробуйте использовать MEF для управления зависимостями вместе с MAF (System.AddIn) для загрузки / выгрузки надстроек.

0
ответ дан 5 December 2019 в 15:27
поделиться

После того как блок был загружен в AppDomain, это останется в памяти до, что AppDomain разгружен и уничтожен. Поэтому для моделирования "заменяемой в горячем режиме" среды, необходимо установить и разъединить AppDomains (от AppDomain основного процесса), который разместит фактические бизнес-блоки и выполнит прикладную логику.

Само собой разумеется, необходимо ожидать снижение производительности, если Вы постоянно создадите/уничтожите AppDomains на служебный вызов WCF. Это предназначено для создания операционной границы, изолированной от основного AppDomain, чтобы сделать значимую работу, которая продолжается в хороший период. Преимущество с AppDomains - Вы, может сохранить использование памяти, если бы у Вас есть довольно много блоков бизнес-логики, которые требуется разгрузить со временем.

Главным примером этого типа динамической установки и разрушения является ASP.NET. Время выполнения ASP.NET создает AppDomain для каждого веб-приложения. Если что-то изменяется на веб-сайте, как web.config, AppDomain разгружен и новая установка AppDomain для новой версии веб-приложения - приложение перерабатывает.

1
ответ дан 5 December 2019 в 15:27
поделиться

Можно, вероятно, использовать отражение для динамичной загрузки определенной логики, в которой Вы нуждаетесь, но производительность, пораженная в Ваши сервисы, будет огромным выполнением, что Вы хотите Вас описанный.

Если Вы не использовали отражение прежде, вот образец, который я захватил из проекта, который я имею. Это показывает, как загрузить блок и назвать метод с некоторыми параметрами.

Assembly a = GetAssembly();
Type t = ExportModule.GetExportType(a);
if (t == null) throw new Exception("No proper type found.");

object iExportModule = Activator.CreateInstance(t);
object[] arguments = new object[] { _export.ConnectionString, GetFileName() };

t.InvokeMember("ExecuteExport", BindingFlags.Default | BindingFlags.InvokeMethod,
     null, iExportModule, arguments);

Очевидно, я не знаю Вашу среду, но в целом я сказал бы что намного лучше для закрытия сервиса в течение нескольких минут для обновления программного обеспечения, чем изменить всю парадигму, чтобы быть динамичным.

Если у Вас действительно есть постоянные текущие исправления, которые требуют, чтобы сервис снизился, я не думаю, что у Вас должен быть один центральный сервис. Вы удалили бы его все время. Лучше, чтобы иметь отдельные сервисы, имеющие дело с различными логическими функциями, таким образом, Ваше целое приложение не снижается (единая точка отказа).

2
ответ дан 5 December 2019 в 15:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: