asp.net-mvc – “继承”ASP.NET MVC网站从一个常见的模板应用程
我们正在构建大约10个ASP.NET MVC站点,它们具有一组常用的功能(以及相应的URL,路由,控制器,操作和视图).这些站点还将共享这些对象上的一组域对象(例如用户,公司)和基本属性(例如,名称,地址等).
但是,每个网站也将被高度定制并从基地扩展.例如,我们的大型上市公司网站将在公司域名对象上拥有“子公司”和“股票代码”字段,而我们的创业公司网站将拥有“创业公司”和“资金”属性.虽然我们试图保持HTML的一致性(额外的域对象属性的模数额外的字段等),但是看起来也会有很大差异.我们也会谨慎地覆盖图像,所以我们可以通过网站重新使用相同的按钮图形. 无论如何,我们正在努力确定如何最好地对因素进行设计和构建,以便我们可以重用尽可能多的代码和尽可能多的测试,而不会限制我们自由添加每个应用程序的属性,并改变应用之间的UI. 我熟悉如何处理有限定制多租户,就像您在StackOverflow / SuperUser / ServerFault(或MSDN / TechNet中)中发现的那样),其中UI与此有所不同,数据模型更多或更少相同.但是当模型和UI非常不同(但是从一个共同的基础继承)时,我不太确定如何继续. 我不太担心操作问题,因为我们可能会在单独的应用程序中运行每个站点,并将它们托管在单独的数据库中.我更担心减少长期的代码维护成本,提高敏捷性(例如,轻松添加新功能到基础,而不会导致衍生应用程序),并实现短期的开发/测试成本节省,因为我们建立了第二,第3,第4等站点. 我正在寻找高层次的指导和建议,也是如何使用现代ASP.NET MVC实践使该指导真正的具体建议. 我意识到这是一个非常普遍的问题,但是对于初学者,我正在寻找高级指导以及如何在ASP.NET MVC中应用该指导的具体技巧 – 具体技巧,包括以下内容: >建议在Visual Studio项目中分割基础/派生 任何人如何构建这样的多租户应用程序有好的建议? 解决方法
这是我们所做的,对于目前的大约8个网站来说,它的效果很好.
>为您的控制器,ViewModels,HttpApplication,路由等定义一个核心的MVC项目.这将编译成一个DLL,并危及大部分的站点. 要使上述步骤一起工作,您需要写一点胶水.第一块胶水是定制视图引擎.您将需要自定义标准视图引擎,以首先查找客户端特定文件夹中的视图,然后再查找默认文件夹.这允许您轻松覆盖每个客户端的默认布局. 获取一切工作的第二种方法是让您的核心应用程序从您的客户端特定程序集加载路由,控制器等.为此,我使用Managed Extensibility Framework(MEF)来公开一个Register方法.在我的客户端汇编代码上调用此方法可以注册路由和其他特定客户端的需求. 以下是我的网站文件夹结构的一般视图,首先检查SiteContent的视图: - AppContent - AppContent/Static - AppContent/Static/Images - AppContent/Static/Scripts - AppContent/Static/Styles - AppContent/Views - AppContent/Views/Shared - SiteContent - SiteContent/Static - SiteContent/Static/Images - SiteContent/Static/Scripts - SiteContent/Static/Styles - SiteContent/Views - SiteContent/Views/Shared - web.config - Global.asax 我有帮助,我可以像SiteImage和AppImage一样用于我的视图.此外,我使每个客户端站点都使用某些特定的名称作为其母版页,我从未在我的AppContent默认值中定义. 我意识到这是一个粗略的概述,但它现在正在为我们工作. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc-4 – 如何在Kendo UI数据源中禁用“读取”请求
- asp.net – 谁在生产应用程序中实际使用DataGrid / GridVie
- asp.net – 我可以强制刷新我的样式表文件吗?
- asp.net – 将ControlParameter添加到SqlDataSource可以防止
- asp.net-web-api – web api – asp.net身份令牌即使对于后
- asp.net core标签助手的高级用法TagHelper+Form
- .net – 在.aspx页面上引用代码隐藏属性?
- asp.net-mvc – 重定向页面的TempData?
- asp.net-mvc – 使用ui-router的.NET MVC和Angular
- asp.net – 具有w3wp应用程序池IIS 7的高内存使用率
- asp.net-mvc – ASP.NET MVC从预览5升级到Beta版
- ASP.NET主题图像
- asp.net-core – 从ASP.NET Core MVC Web应用程序
- 使用.NET Core+Docker 开发微服务
- asp.net-mvc-3 – 使用Magical Unicorn的ASP.NET
- asp.net – Datatable的行计算功能
- 如何从ASP.NET MVC中的后台线程解析应用程序URL?
- asp.net-mvc – asp.net mvc错误处理的最佳做法
- asp.net-mvc – 具有服务层和存储库层的ASP.NET
- ASP.Net程序员应该为代码灵感提供哪些其他框架?