关注微信 欢迎致电:400-8310-286

你在这里

CMS系统

概述

客户是德国一家为ITC制造商及经销商提供咨询、软件及服务的公司,为了能够对其客户提供快速、高效、高质的软件服务,客户要求建立一套CMS系统,希望能够在此基础上做二次开发,快速高效的实现其不同客户的不同需求。

客户联系到我们后,我们参考了DNN,Sitefinity等不同的CMS系统后综合客户需求,提供了适合客户的模块化设计解决方案,到目前为止客户已经基于此系统为多家公司提供了软件服务。

 

需求

1.    基于Asp.net MVC 4.0 实现

2.    实现Page的动态管理与在线设计

3.    实现基于组织结构的权限管理

4.    实现模块的动态安装与卸载

5.    实现单点登录

6.    实现运行自动安装

 

解决方案

此系统需要通过合理的设计以达到灵活扩展的目的,基于此目的,我们在项目中应用基于接口编程,并用Autofact进行依赖注入,同时应用了多种设计模式(策略模式,工厂模式等)来增强程序的可扩展性及可维护性。同时应用CodeFirst来创建并初始化数据库。

为了实现模块的显示引擎(Render Engine),我们分析了MVC的源码并参考了其他CMS系统,最终设计为所有的Http请求均由框架中的DefaultController的DefaultAction处理,DefaultAction根据路由信息调用不同模块的Action并根据返回的结果动态生成Page,并应用缓存技术提高性能。

权限管理的实现参考了window的权限系统,将权限分为四类:Read, Read&Write, None,Inherit。分别在Page和Module上进行控制。权限可赋予各级组织和个人并可以实现了权限继承,这样的设计既满足了系统要求也保证了权限控制的灵活性。

模块的安装与卸载参考了DNN的相关功能。

 

困难及挑战

1.    如何访问模块的Action并返回相应的结果?

在最初的设计中,我们在view中通过Html.Action方法调用模块的内容,但是这种方式无法处理模块返回JSON数据、返回文件流及模块中页面跳转等问题,究其原因,主要是调用模块的时机不对。在HTTP请求的生命周期及处理管道中,我们应该在Controller中调用相应的模块,并根据各模块的返回结果作相应的操作。

为了处理此问题我们在网上查了一些资料,并查阅了Asp.net MVC的相关源码,最终通过模拟MVC框架调用Action的流程实现了在Controller中对模块的调用。

2.    如何实现模块的安装与卸载?

遇到此问题时,我们首先参考了DNN中相应的功能,参考其代码,分析其实现原理,最终在我们的CMS中实现了此功能。

 

客户收益

1.    此平台实现了客户的需求,达到了客户的预期,客户表示满意。

2.    基于此平台,客户仅需简单的拖拽就可以快速高质的搭建系统,进而有效提升了客户在同行业中的竞争力。

3.    客户能够通过模块对此平台进行扩展,以满足自己不同客户的不同需求。

4.    客户基于此平台已经成功搭建了多个站点及多套系统。

 

所用技术点

1.    Asp.net MVC 4.0

2.    CodeFirst

3.    JS,JQuery

4.    Html,CSS

5.    WebService

6.    Autofac

7.    Cache

8.    参考DNN, SiteFinity 等CMS框架

 

系统截图:

Page管理界面

Page 权限

Page设计页面

模块权限

模块管理

安装模块

 

备案/许可证编号为:渝ICP备14000366号-1