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。由于你的支持是我写作,继续分享的最大的动力!

  • 相关阅读:
    leetcode 350. Intersection of Two Arrays II
    leetcode 278. First Bad Version
    leetcode 34. Find First and Last Position of Element in Sorted Array
    leetcode 54. Spiral Matrix
    leetcode 59. Spiral Matrix II
    leetcode 44. Wildcard Matching
    leetcode 10. Regular Expression Matching(正则表达式匹配)
    leetcode 174. Dungeon Game (地下城游戏)
    leetcode 36. Valid Sudoku
    Angular Elements
  • 原文地址:https://www.cnblogs.com/slgkaifa/p/6971110.html
Copyright © 2011-2022 走看看