最近架构随想

简介:

今天新加坡放假,闲来无事就发一篇博客:一则总结归纳项目构架经验,审视并逐步提高自 己;再者分享最近学习所得,希望各位能讨论并给些建议。六月三十日从原来公司离职,七月一日入职新公司,不知不觉已经快一个月了。最近忙于学习新的行业知 识以及项目的重构设计,没有时间发博客,也没有时间回复邮件及博文评论,忘各位见谅!

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

整体方案:

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

回归正题:

  • 整个架构分为Online(Web Application)和Offline(WPF Application)两部分。

  • Online(Web Application)需要支持不同的设备及浏览器,所以采用Bootstrap和 ASP.NET MVC with Razor作为View,KnockoutJs作为MVVM框架。UI Designer设计好UI,然后由前端工程师绑定相应的UI Model到UI,后端工程师则负责相应的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

由于时间有限,设计可能存在诸多不足之处,如果大家有不同的意见或者建议,不妨在评论中指出,以便互相学习且共同提高!



















本文转自KnightsWarrior51CTO博客,原文链接: http://blog.51cto.com/knightswarrior/1531155,如需转载请自行联系原作者




相关文章
|
数据采集 存储 监控
数据与分析的战常用设计思路
数据与分析的战常用设计思路
漫画 | 新一代软件架构会影响到谁?
周末的晚上,张大胖照例要去 Hello World 咖啡馆,没想到在这里碰到了好几个老伙计。并针对事件总线展开了讨论。
140 0
漫画 | 新一代软件架构会影响到谁?
|
编解码 安全 Unix
《静儿的服务治理私房菜》网络模型的分类和职业规划思考
《静儿的服务治理私房菜》网络模型的分类和职业规划思考
《静儿的服务治理私房菜》网络模型的分类和职业规划思考
|
运维 监控 架构师
【另类架构】之驾车感悟(下)
【另类架构】之驾车感悟(下)
135 0
【另类架构】之驾车感悟(下)
|
存储 算法 架构师
【另类架构】之驾车感悟(上)
【另类架构】之驾车感悟(上)
179 0
【另类架构】之驾车感悟(上)
|
数据可视化 JavaScript 物联网
ThingJS之3D开发:如何做颜值高的设计?
不要把关于设计的这些内容看得太过严肃。
ThingJS之3D开发:如何做颜值高的设计?
|
SQL 缓存 NoSQL
“国货之光” 完美日记的微服务实践和优化思路
今年双11,完美日记仅用28分钟就超过了2018年双11全天的销售额,成为第一个登上天猫双11彩妆榜首的国货品牌。他们是如何在 4 个月内筹建、上线电商平台的呢?本文将为您分享他们在实践微服务过程遇到的难点和优化思路。
2146 0
“国货之光” 完美日记的微服务实践和优化思路
|
XML BI 数据库
企业IT架构的现实与憧憬
本文讲的是企业IT架构的现实与憧憬,什么样的企业IT架构是理想的?在很多新技术不断涌现的今天,企业用户似乎有了越来越多的选择,但是更多的选择在有些时候也可能会意味着无所适从。
1139 0
|
新零售 缓存 NoSQL
如何让笨重的架构变灵巧?
随着业务的复杂性增大、系统吞吐量增长,所有功能统一部署难度加大,各个功能模块相互影响使系统变的笨重且脆弱,因此需要对业务进行拆分、对系统进行解耦、对系统内部架构升级,以此来提升系统容量及健壮性。
2427 0