ASP.NET MVC扩展,模块化

快乐乔巴 2019-01-13 04:12:54
现在有个需求,想请教下大家。
比如现在有个ASP.NET MVC的项目叫BASE,顾名思义就是一个基准网站(通用功能)。
然后A客户需要在BASE项目上添加A1,A2的功能。
B客户需要在BASE项目上添加B1,B2,B3的功能。
我肯定不可能去拷贝2个BASE项目,然后去分别针对2个客户再去改的。
应该是去已BASE项目为基准,通过分离,模块化(插件),在BASE项目启动的时候去加载这些新的需求达到追加和覆盖(包含静态文件css,js等)。

想请教下大家,在ASP.NET MVC(我是VS2015环境,MVC5)上,一般是如何去实现这样的需求的?
我所调查的,有【区域(Areas)】【nopCommerce】等,但是不知道是不是符合我的需求。
现在比较流行的有哪些,最好能有参考的网站~~

大家多多推荐哈,真的好久没弄web上的东西了。。 100分献上~~
...全文
6829 16 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
LvBao_117 2019-01-16
  • 打赏
  • 举报
回复
整个MVC项目,又不是class,不能用来继承吧
前端的东西html,js好像不能继承的
紫魂一号 2019-01-16
  • 打赏
  • 举报
回复
这种不是集成一个项目,然后分权限去控制的么?为啥还搞两个项目?
loveljy_19901114 2019-01-16
  • 打赏
  • 举报
回复
如果A,B是两个角色的话,那就是权限问题了, 如果是两个不相干的个体的话,最好还是写道两个项目里面吧
圣殿骑士18 2019-01-15
  • 打赏
  • 举报
回复
我觉得你想多了。因为.Net Web项目没提供很方便的实现你的想法的解决方案。把不同功能,当做模块就行,不同客户启用不同的功能就行。不要想复杂了。
快乐乔巴 2019-01-15
  • 打赏
  • 举报
回复
引用 8 楼 EdsionWang 的回复:
不理解为什么不可以拷贝两个Base项目去分别改需求。除非并非两个客户,说到底只是两个需求模块罢了。否则,如果哪一天客户A的需求需要你改Base部分的内容才能适用,而客户B没有这样的需求,你是改还是不改。
可以是可以,这不我来探讨下如何能够在一个Base项目下 去实现不同需求么。 如果B客户要改Base功能,这边是不会让改的,可以让B自己去实现,去覆盖原有Base项目的文件去实现。我的想法是这样的。
快乐乔巴 2019-01-15
  • 打赏
  • 举报
回复
引用 10 楼 正怒月神 的回复:
既然是通用模块,那就生成dll,A项目引用,B项目也引用。 作为两个项目,都引用通用模块就好了。 还有一个办法是,代码分支。这个是版本控制器上操作的。
Base程序不是那种class程序集,是有Web部分,WebService,后台程序服务等。也是挺大的。 感觉是不直接升dll就可以用的。 所以我才会想到 应该是通过AB项目的需求生成的代码去自动拷贝到Base项目中去,实现追加和覆盖(修改)的需求。
正怒月神 版主 2019-01-15
  • 打赏
  • 举报
回复
既然是通用模块,那就生成dll,A项目引用,B项目也引用。 作为两个项目,都引用通用模块就好了。 还有一个办法是,代码分支。这个是版本控制器上操作的。
sdfgrtyu 2019-01-15
  • 打赏
  • 举报
回复
你这是问题吗?这不就是权限的问题吗???
EdsionWang 2019-01-15
  • 打赏
  • 举报
回复
不理解为什么不可以拷贝两个Base项目去分别改需求。除非并非两个客户,说到底只是两个需求模块罢了。否则,如果哪一天客户A的需求需要你改Base部分的内容才能适用,而客户B没有这样的需求,你是改还是不改。
  • 打赏
  • 举报
回复
在纯前端的 web 应用程序中,局部模板和 js 文件都是由前端框架引擎动态下载并渲染到浏览器的,所以可以用程序自由控制(既然可以自由控制,那么你也就可以自由扩展到数据库的业务数据中或者配置文件的静态配置中)。 但是我估计你使用 asp.net mvc 这类,就是看中其繁琐的路由功能了,你如果不自己写代码来干涉路由,那么就受限制了。
  • 打赏
  • 举报
回复
在路由解析上支持类似 admin/page1/...... 和 user/page1/..... 这种所谓的 Areas,它并不是面向你的需求的设计的,而是底层的所谓保存那一大堆子目录的方法(等于是又在上面增加了 Areas/admin 和 Areas/user 层次目录)。所以这个并不解决你的问题。 例如说,两个用户,你要不要把 X 用户的项目的代码也部署给 Y 用户?这是你要选择的问题。 并且如果你是让同一个界面操作,但是运行时根据用户而自动打开不同的页面,那么这就意味着以后所有用户的新功能全都部署在一起。100个客户的不同需求也是开发到同一个网站应用中。
  • 打赏
  • 举报
回复
如果差别极少,你可以一套网站包括所有页面。此时就不是什么“修改页面”,而是通过配置来动态改变导航项目(例如菜单项、工作类型配置等等)。 如果差别较多,那么还是创建三个网站为好。然后在A和B的网站在工程的“属性”设置的“生成事件”中写一些命令行语句来从第一个网站拷贝公共文件到当前项目中。
快乐乔巴 2019-01-13
  • 打赏
  • 举报
回复
引用 1 楼 张天星 的回复:
你说的A客户和B客户,最后结果,是你同一个项目上展示2个界面么? 那么用Areas就可以了
是的 都是基于这个BASE项目上的。 我希望A客户和B客户的 新功能或者修改既有功能 能分离出BASE项目,各自创建程序集或者一个文件夹专门管理。 然后再BASE项目上,更改配置文件,能够启动的时候加载A客户的要求的程序集,加载到BASE中,达到专属的A客户要求的程序。
快乐乔巴 2019-01-13
  • 打赏
  • 举报
回复
比如BASE项目里的web主页面有只有1个base页面功能,简称BASE1页面。 A客户的需求是 在BASE项目里web主页面里 追加2个A1和A2的新页面。(在基础项目中 追加新页面) B客户的需求是 在BASE项目里web主页面里 修改基础项目里BASE1页面,页面和逻辑都有修改。(在基础项目中 覆盖或者说修改基础页面既存的功能) A和B客户的页面都是基于BASE项目的。
  • 打赏
  • 举报
回复
“添加功能”具体表现在什么交互界面上?是菜单功能项和相关的子界面?还是别的?
张天星 2019-01-13
  • 打赏
  • 举报
回复
你说的A客户和B客户,最后结果,是你同一个项目上展示2个界面么?
那么用Areas就可以了

62,243

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧