I'm building multiple websites that share some classes, methods and information. What is the best way to do this?
The application is written in
asp.net core 2.2 using
razor pages. The plan is to share some code with multiple websites/domains, like:
- components - models - some pages - partials - custom tag helpers - dbcontext
But every domain has also it's own sources:
The database (EF Core - DB context) is shared, as well as a bunch of static files (images). But we need to set cookies and session data per domain/website.
It's not necessary for now, but maybe we want to share a login-session through multiple domains in the future.
It would be nice if we can update just a single domain, using a shared set of dll's, without the need to rebuild all code.
Some hours of research and trial and error, brought me a partial solution. First of all I splitted up the project in a
Razor Class Library (RCL) with the shared pages/models/classes/tag helpers/extensions/styles etc. Even the
DbContext is in it :). And the other project contains my 'domain-specific overrides'. It works pretty good.
To create a my RCL, I used this: Creat reusable UI (of course...)
To register the interfaces and DbContext, I used this: How to inject services...
And to embed 'static' files (js/css) I used this: Including Static Resources
Last things to do is register the dll's of my shared RCL on the webserver and upload the different domain-projects to the domains. Haven't done that yet, but it seems to be quite easy.
This solution fulfills my expectations, but maybe it's not the best way. Please feel free to post other solutions!