我正在建立多个共享某些类,方法和信息的网站。最好的方法是什么?
使用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-DB上下文)以及一堆静态文件(图像)。但是我们需要为每个域/网站设置cookie和会话数据。
现在没有必要,但是将来我们可能希望通过多个域共享登录会话。
如果我们可以使用一组共享的dll来仅更新一个域,而无需重建所有代码,那就太好了。
答案 0 :(得分:0)
一些小时的研究和反复试验给我带来了部分解决方案。首先,我将项目与共享的页面/模型/类/标记帮助器/扩展名/样式等放在Razor Class Library (RCL)
中。甚至DbContext
也位于其中:)。另一个项目包含我的“特定于域的替代”。效果很好。
指南
要创建我的RCL,我使用了以下命令:Creat reusable UI(当然...)
要注册接口和DbContext,我使用了此命令:How to inject services...
然后使用以下方法嵌入“静态”文件(js / css):Including Static Resources
最后要做的是在网络服务器上注册共享RCL的dll,然后将不同的域项目上载到域。尚未完成,但这似乎很简单。
此解决方案符合我的期望,但也许不是最佳方法。请随时发布其他解决方案!