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 – EF实体与服务模型与查看模型(MVC)
- asp.net-mvc – 使用@ Html.Partial渲染usercontrol(cshtml
- asp.net-mvc – MVC模式DDD模式
- Asp.net System.Web.HttpContext.Current.Session null in
- iis-7 – 使用ASP.NET MVC3,如何在区分大小写的路由中使IIS
- ASP.NET – 如何在User Control中使用Response.Redirect()?
- asp.net-mvc – ASP.NET Web Api – 将对象发布到自定义动作
- asp.net – 我应该有多少DBContext
- asp.net – 未知的服务器标签’ajaxToolkit:CalendarExten
- asp.net-mvc – 在不显眼的验证过程中使用parseJSON的语法错
- asp.net – requestValidationMode 4.5 vs 2.0
- asp.net – Restful MVC Web Api继承
- 将自定义属性添加到asp.NET RadioButton控件
- asp.net-core – ASP .NET Core默认语言总是英文
- asp.net-web-api – ASP.NET Web API – 404删除
- asp.net-mvc – 使用Entity FrameWork保存更改/更
- 在ASP.Net应用程序和最佳实践中使用WCF
- asp.net-mvc – 如何获取路由值在视图(Asp.net M
- asp.net – Web Api参数始终为null
- asp.net – 什么项目层应该屏幕DTO的生活?
