在之前的文章《最近架构随想》中,我提到了架构设计的一些思路,其实是对之前项目经验的一些归纳和总结。今天我们就以权限系统为切入点,谈谈如何设计权限系统,如何让系统具备以下特点:有条理:如果系统组织得好,可以事半功倍.封装:对函数、结构、数据进行有效的封装,使系统维护更容易。可复用:对常用的功能和组件进行有效封装,可以使系统清晰易维护。可扩展性:在设计系统时,如果遵循OO设计理念(OOSOLID的五原则),即使系统很大,也会像火箭一样直冲云霄!可替换性:在很多情况下,我们需要考虑系统、组件或功能的可替换性,因为需求会发生变化。可测试性:实现系统的可测试性,将极大地帮助开发和维护,对团队开发和分工起到非常重要的作用。松散耦合:隔离耦合是架构设计必须考虑的因素。如果系统不能做到高内聚低耦合,那么在维护、升级、新功能开发等方面都将是一场噩梦!高性能:高性能是系统设计的重点。用户不可能容忍简单的页面加载超过十几秒,更不可能接受页面操作频繁卡顿的情况。因此,在设计架构时,需要考虑对数据库、逻辑、服务和UI进行合理优化。Scalability:如果你能做到前面几点,那么我有理由相信你的系统一定具有Scalability。EnjoyYourLife:最后也是最重要的一点,就是不要忙于重复的代码工作,喝杯咖啡,享受代码,早点回家,陪老婆孩子,走遍世界,享受生活!废话半天,开始看图说话:架构设计图:部署及组件图:详细解决方案:01_Client:存放UI相关项目,如Winform、WPF、ASP.NET、Silverlight、ASP.NETMVC或相关的Web模型和视图模型项目。02_Hosting:存储与Service相关的项目,可以是DirectService、RemotingService、WebService、WCFService或WebAPIService。03_Domain:所有与业务逻辑相关的实体和操作(基于OO思想设计类和类之间的关系)。04_Infrastructure:非业务方面的功能框架(Data、Common、DataContract、AOP、IOC、Logging、Encryption、Email)。05_Database:数据库项目(包括所有数据库脚本,方便开发、部署和维护)。06_Tests:所有测试项目(数据访问测试、框架测试、业务逻辑测试、服务测试和ViewModel测试)。07_ReferenceLibs:项目相关的外部引用。08_Tools:一些简单的工具,方便开发、测试和部署。各层执行顺序(调用Service前需要先调用ServiceAdapter,再根据项目配置决定调用WCFService、WebAPIService还是直接DLL引用):权限体系设计(支持多系统、多级Module)、多级Group、多用户Sources、功能权限、数据权限等):权限系统数据库关系图(三个中心点:Users、Roles、Paths):权限系统中的所有表(包括主表和备份表)表,主要针对中小型项目,如果大型项目则需要采用分库分表分区的策略:数据库项目-脚本注意事项以及如何一键执行所有数据库脚本(it方便管理数据库脚本,对团队开发和分工很有帮助):代码生成器——T4完整生成数据库、业务实体、业务层、服务层和UI代码(我也之前用Winform和WPF写过代码生成器,第一次用T4生成整个项目,感觉很好用,而且可以随时修改准备使用,可以根据项目定制).本文以图片为主,如有任何反馈、经验或建议,请留言,我会尽量在今天或明天回复。关于代码分享或者开源的问题,由于目前是在为公司做,没有时间和精力去提取代码,但是我们会在近期根据反馈分享更多的实现细节!本文来自:http://www.cnblogs.com/KnightsWarrior/p/ACL.html
