zoukankan      html  css  js  c++  java
  • 架构设计分享之权限系统(看图说话)

    前面一篇文章《近期架构随想》。我提到架构设计的一些构想,事实上也是对之前项目经验的一些归纳及总结。今天我们就以权限系统作为切入点,谈一谈怎么设计权限系统以及怎么做到系统具有以下特性:

    1. Organized:假设系统组织比較好,能够起到事半功倍的效果。
    2. Encapsulated:对功能,结构,数据进行有效的封装。会使系统维护变得更加easy。

    3. Reusable:对经常使用功能以及组件进行有效的封装,能够使系统变得结构清晰且方便维护。
    4. Extensible:在设计系统的时候。假设非常好的遵守OO的设计理念(OO的五大原则SOLID),即使系统做得非常大。也会像火箭一样直冲云霄。
    5. Replaceable:在非常多时候我们须要考虑到系统,组件或者功能的可替换性,由于需求是会变的。
    6. Testable:做到系统的可測性。会大大帮助开发以及维护,对团队开发以及分工协作起着非常关键的数据。
    7. Loose Coupling:隔离耦合是架构设计必须要考虑的一个因素,假设系统不能做到高内聚、低耦合。那么在维护,升级,新功能开发方面就会是一场噩梦!
    8. High Performance:高性能是系统设计必须重视的要点,用户不可能忍受简单页面载入超过十秒。也不可能接受页面操作频繁卡死的情形,所以在架构设计的时候必须从数据库,逻辑,服务以及UI进行合理的规划。
    9. Scalability:假设能做到前面的几点。那么我有理由相信你的系统一定具备Scalability。
    10. Enjoy Your Life:最后一点也是最重要的一点,不要忙碌于反复的码农工作。喝杯咖啡,享受代码,早点回家。陪老婆、陪小孩,环球旅游。享受生活!

    废话半天,以下就開始看图说话环节:

    架构设计图:

    image

    部署及组件图:

    28-7-2014 12-27-11 AM

    具体解决方式:

    image

    01_Client:存放UI相关的项目。比方Winform, WPF。ASP.NET, Silverlight。ASP.NET MVC或者相关的Web Model及View Model项目。

    02_Hosting:存放与Service相关的项目。能够是Direct Service。Remoting Service。Web Service,WCF Service或者Web API Service 。

    03_Domain:业务逻辑相关的全部实体以及操作(依据OO的思想设计类以及类之间的关系)。

    04_Infrastructure:非业务方面的功能框架 (Data,Common,DataContract。AOP, IOC。Logging。Encryption。Email)。

    05_Database:数据库项目(包括全部数据库脚本。方便开发,部署以及维护)。

    06_Tests:全部測试项目(数据訪问測试,框架測试。业务逻辑測试。服务測试以及View Model測试)。

    07_ReferenceLibs:项目相关的外部引用。

    08_Tools:一些简单的工具。方便开发,測试以及部署。

    各层运行序列 (调用Service之前须要调用Service Adapter,然后依据项目配置来决定调用WCF Service,Web API Service 还是直接DLL引用):

    28-7-2014 12-34-29 AM

    权限系统设计 (支持多系统,Module多层级,Group多层级,多用户来源,功能权限,数据权限等):

    security

    权限系统数据库关系图(三个中心点:Users, Roles, Paths):

    image

    权限系统全部表(包括主要表以及备份表。主要是针对中小型项目。假设大型项目则要採用分库。分表以及分区的策略):

    image

    数据库项目——脚本注意事项以及怎样一键运行全部数据库脚本(方便管理数据库脚本而且对团队开发以及分工协作帮助非常大):

    image

    代码生成器——T4全然生成数据库,业务实体,业务层,服务层以及UI代码 (之前也用Winform和WPF写过代码生成器,这是第一次使用T4生成整个项目,感觉非常好用,而且随时改动随时使用。而且还能够依据项目进行定制化)。

    image

    这篇文章主要是看图说话,所以假设你有什么反馈。心得或者建议。最好还是留言,我会尽力在今天进行回复。

    假设您觉得这篇文章还不错或者有所收获,最好还是点击一下右下角的(顶)button。由于你的支持是我写作,继续分享的最大的动力!

  • 相关阅读:
    [zt]在XML序列化时去除默认命名空间xmlns:xsd和xmlns:xsi
    线程间操作无效: 从不是创建控件“...”的线程访问它。
    Unity IoC + WCF + wsHTTPBinding + Certificate Authorization
    [转]PowerDesigner使用教程 —— 概念数据模型
    C# Post数据和接收简单示例【摘】
    163相册验证码图片的识别手记之一 去除干扰
    实现WCF和Unity 的集成
    Html.ActionLink 几种重载方式说明及例子
    如何从程序员到项目经理【转帖51cto】
    OSG闪存
  • 原文地址:https://www.cnblogs.com/slgkaifa/p/6971110.html
Copyright © 2011-2022 走看看