Лучший подход для многодоменных приложений .NET Core - PullRequest
0 голосов
/ 08 января 2019

Я создаю несколько веб-сайтов, которые разделяют некоторые классы, методы и информацию. Каков наилучший способ сделать это?

Приложение написано в asp.net core 2.2 с использованием razor pages. План состоит в том, чтобы поделиться кодом с несколькими веб-сайтами / доменами, например:

- components
- models
- some pages
- partials
- custom tag helpers 
- dbcontext

Но у каждого домена есть свои источники:

- styling (sccss)
- (external) libraries (like javascript plugins)
- some additional domain-specific pages
- appsettings.json
- _layout.cshtml

База данных (EF Core - контекст БД) является общей, а также набор статических файлов (изображений). Но нам нужно установить файлы cookie и данные сеанса для каждого домена / веб-сайта.

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

Было бы неплохо, если бы мы могли обновить только один домен, используя общий набор DLL, без необходимости перестраивать весь код.

1 Ответ

0 голосов
/ 10 января 2019

Несколько часов исследований, проб и ошибок принесли мне частичное решение. Прежде всего, я разделил проект на Razor Class Library (RCL) с общими страницами / моделями / классами / помощниками тегов / расширениями / стилями и т. Д. Даже DbContext в нем :). А другой проект содержит мои «специфичные для домена переопределения». Работает довольно хорошо.

Руководство

  1. Чтобы создать свой RCL, я использовал это: Creat reusable UI (конечно ...)

  2. Чтобы зарегистрировать интерфейсы и DbContext, я использовал это: Как внедрить службы ...

  3. И для встраивания «статических» файлов (js / css) я использовал это: Включая статические ресурсы

Последнее, что нужно сделать, это зарегистрировать dll моего общего RCL на веб-сервере и загрузить различные доменные проекты в домены. Еще не сделали этого, но это кажется довольно простым.

Это решение оправдывает мои ожидания, но, возможно, это не лучший способ. Пожалуйста, не стесняйтесь размещать другие решения!

...