razor - 最佳方法多域 .NET Core 应用程序
问题描述
我正在构建多个共享一些类、方法和信息的网站。做这个的最好方式是什么?
该应用程序是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,而不需要重建所有代码,那就太好了。
解决方案
几个小时的研究和反复试验,给我带来了部分解决方案。首先,我将项目拆分Razor Class Library (RCL)
为共享页面/模型/类/标签助手/扩展/样式等。甚至DbContext
在其中:)。另一个项目包含我的“特定于域的覆盖”。它工作得很好。
指导
为了创建我的 RCL,我使用了这个:Creat reusable UI (of course...)
为了注册接口和 DbContext,我使用了这个:如何注入服务...
为了嵌入“静态”文件(js/css),我使用了这个:包括静态资源
最后要做的是在网络服务器上注册我的共享 RCL 的 dll 并将不同的域项目上传到域。还没有这样做,但它似乎很容易。
这个解决方案满足了我的期望,但也许它不是最好的方法。请随时发布其他解决方案!
推荐阅读
- amazon-web-services - 为 AWS 无服务器应用程序的验收测试播种数据
- java - 如何从自定义数据源创建图表或表格
- python - 使用 scipy 的 solve_ivp 在时间步之间运行代码
- .htaccess - htaccess 重定向 301 保留 id
- ruby - Active Record 默认属性(从基础表中选择列)
- coldfusion - 在 CF 中,我可以使用变量作为名称来调用自定义标签吗?
- javascript - 如何继续添加从每个函数调用获得的结果到数组?
- mutagen - 使用诱变剂打印 wma 歌曲标题时出现“ASFUnicodeAttribute”问题
- c++ - 带有 std::vectors 的图形?
- .net - 没有 StartupUri 的实时可视化树