近期架构随想

今天新加坡放假,闲来无事就发一篇博客:一则总结归纳项目构架经验,审视并逐步提高自己。再者分享近期学习所得,希望各位能讨论并给些建议。

六月三十日从原来公司离职。七月一日入职新公司,不知不觉已经快一个月了。近期忙于学习新的行业知识以及项目的重构设计。没有时间发博客,也没有时间回复邮件及博文评论,忘各位见谅!

今天发几张项目重构设计草图。假设大家对项目分层与目录结构比較感兴趣,能够參考几年前弦哥.Net项目分层与目录结构大全(最佳架子奖,吐槽奖,阴沟翻船奖揭晓)。这次的架构方案基本是之前架构经验第一次在保险行业的使用。希望各位能积极探讨并给些意见!

总体方案:

依据个人经验。架构决定项目的成败以及高度,所以在编码之前一定要设计好项目的总体规划和架构。好的架构或者考虑比較全面到位的架构会极大的帮助团队。对项目起到灵魂的作用;糟糕的设计往往会把整个项目组带入泥潭或者恶性循环,对项目直接致命打击!

回归正题:

  • 整个架构分为Online(Web Application)和Offline(WPF Application)两部分。
  • Online(Web Application)须要支持不同的设备及浏览器。所以採用Bootstrap和ASP.NET MVC with Razor作为View,KnockoutJs作为MVVM框架。UI Designer设计好UI。然后由前端project师绑定对应的UI Model到UI。后端project师则负责对应的OOAD以及业务处理。

  • Offline(WPF  Application)须要在没有网络的情况下能正常工作,所以採用WPF  XALM作为View。MVVM Light作为MVVM框架。

    UI和后端的处理以及任务分配和Online(Web Application)基本一致。

  • Services :设置了Switch功能,能够配置是否使用WCF或者Web API或者直接调用Dll。
  • Domain Model:始终是应用程序的核心,必须投入大量精力。依照面向对象的分析和设计 (OOAD) 进行设计同一时候依照OOP进行开发。
  • Infrastructure:主要包含数据訪问组件、通用权限框架、异常和日志处理组件、IOC/AOP功能、缓存机制,邮件,配置等基础或经常使用功能。

  • 行业知识:因为项目牵涉到详细的行业(保险业)。所以在业务流程中创建了Insurance Engine,专门处理保险相关的基础功能。
  • 权限系统:因为整个项目比較庞大,再加上其它系统也须要用到相同的权限推断。所以创建了一个新的权限数据库。用来存储及处理权限相关的全部数据及规则。全部用户则来源于三个数据源(SQL Server, DB2和Active Directory)。
  • Unit Test:每一层都有单独的单元測试,方便项目功能自測,维护。重构。升级以及管理。

    28-7-2014 12-31-12 AM

组件之间的具体关系例如以下:

28-7-2014 12-27-11 AM

各层之间的运行顺序例如以下:

28-7-2014 12-34-29 AM

权限系统:

  • 用户来源于三个数据源(SQL Server, DB2和Active Directory)。
  • 现实世界和系统通过角色进行关联,现实世界的用户及组的变化尽量不要影响到系统。
  • 一个用户能够有多个角色。一个角色也分配给多个用户。
  • 权限分为功能权限和数据权限。
  • 权限系统要提供给几套系统使用,所有的接口通过Service的形式提供出来。

security

因为时间有限,设计可能存在诸多不足之处,假设大家有不同的意见或者建议。最好还是在评论中指出。以便互相学习且共同提高!

原文地址:https://www.cnblogs.com/yfceshi/p/6783157.html