今天新加坡放假,闲来无事就发一篇博客:一则总结归纳项目构架经验,审视并逐步提高自 己;再者分享最近学习所得,希望各位能讨论并给些建议。六月三十日从原来公司离职,七月一日入职新公司,不知不觉已经快一个月了。最近忙于学习新的行业知 识以及项目的重构设计,没有时间发博客,也没有时间回复邮件及博文评论,忘各位见谅!
今天发几张项目重构设计草图,如果大家对项目分层与文件夹结构比较感兴趣,可以参考几年前弦哥的.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)。
组件之间的详细关系如下:
各层之间的执行顺序如下:
-
用户来源于三个数据源(SQL Server, DB2和Active Directory)。
-
现实世界和系统通过角色进行关联,现实世界的用户及组的变化尽量不要影响到系统。
-
一个用户可以有多个角色,一个角色也分配给多个用户。
-
权限分为功能权限和数据权限。
-
权限系统要提供给几套系统使用,全部的接口通过Service的形式提供出来。
由于时间有限,设计可能存在诸多不足之处,如果大家有不同的意见或者建议,不妨在评论中指出,以便互相学习且共同提高!
本文出自 "圣殿骑士" 博客,请务必保留此出处http://knightswarrior.blog.51cto.com/1792698/1531155
分析演示: RIP动态路由协议引发的HSRP收敛问题
演示目标:
1 动态路由协议在某种程度上可以帮助HSRP收敛无跟踪的盲点
2 动态路由协议RIP可能引发HSRP收敛的问题
3 为什么同一子网的主机,有些收敛快,有些慢?
演示环境:如图1所示的环境
背景说明:从实践的角度来讲,在需要部署HSRP进行三层冗余的环境中,通常物理链路也是成环的,那么这种环境中,进行网络设计时需要特别注意动态路由协议的选择,以及评估和预测可能引发的各种收敛问题,明确到底是HSRP在为用户网络在实现冗余,还是三层的动态路由协议在为用户实现冗余,如果发生收敛问题,比如:收敛慢,是什么原因导致问题的发生,以及如何对这些问题进行修复。
演示步骤:
第一步:在如图1所示的网络环境中为所有的三层设备启动RIPv2的动态路由协议,具体配置如下所示,确保各个路由器的动态路由学习正常,这是整个演示环境的基础保障。
路由器R1的RIP配置:
R1(config)#routerrip
R1(config-router)#noauto-summary
R1(config-router)#version2
R1(config-router)#network 192.168.1.0
R1(config-router)#network 192.168.4.0
R1(config-router)#network 172.16.0.0
R1(config-router)#exit
路由器R2的RIP配置:
R2(config)#routerrip
R2(config-router)#version2
R2(config-router)#noauto-summary
R2(config-router)#network 192.168.2.0
R2(config-router)#network 172.16.0.0
R2(config-router)#exit
路由器R3的RIP配置:
R3(config)#routerrip
R3(config-router)#version2
R3(config-router)#noauto-summary
R3(config-router)#network 192.168.1.0
R3(config-router)#network 192.168.4.0
R3(config-router)#network 192.168.2.0
R3(config-router)#network 30.30.30.0
R3(config-router)#exit
完成上述配置后路由器R1的路由器表如图2所示。
注意:在R1的路由表中有一条暂时没有显示,被隐藏的到 30.30.30.0的RIP路由,这条路由器R1通过下一跳是R2的172.16.1.2来到达30.30.30.0的路由,它为什么会被隐藏,因为RIP以跳数来评估路由的度量,通过192.168.4.3和192.168.1.3是1跳,而经过R2的172.16.1.2来到达30.30.30.0的路由是2跳,所以它暂时被隐藏,那么在一种情况下该路由器会出现,那就是下一跳192.168.4.3和192.168.1.3这两条路由失效时,到此为后面的问题做出了预设。
现在将路由器R1和R2的E1/0接口规划到HSRP热容组1,虚拟IP地址是172.16.1.254,要求R1为活动路由器,并配置两台路由器的抢占功能,具体配置如下所示:
注意:暂时不去配置任何接口跟踪!
路由器R1的HSRP配置:
interface Ethernet1/0
ipaddress 172.16.1.1 255.255.255.0
standby1 ip 172.16.1.254 * 配置HSRP的虚拟IP地址
standby 1 priority 110 * 配置优先级为110,确保R1成HSRP组中的活动路由器
standby 1 preempt * 配置抢占功能
路由器R2的HSRP配置:
interface Ethernet1/0
ipaddress 172.16.1.2 255.255.255.0
standby 1 ip 172.16.1.254
standby 1 preempt
为什么不为R2配置优先级?
默认优先级为100,为了确保能让R1(优先级110)成为活动路由器,所以没必要去配置R2的优先级,使用保持默认的100。
提出一个问题:现在到第一步的配置为止,如果路由器的S2/0和E1/1端口出现故障,请问HSRP的活动路由器是否会从R1切换到R2,流量是否会被R2所接管,在主机上能否成功的ping通30.30.30.1?
第二步:在路由器R1上制造故障去shutdown路由器R1的S2/0和E1/1接口
R1(config)#intes2/0
R1(config-if)#shutdown *关闭S2/0
R1(config-if)#exit
R1(config)#intee1/1
R1(config-if)#shutdown *关闭E1/1
R1(config-if)#exit
系统提示:两个接口的管理属性为down!
*Jul 24 11:24:11.047: %LINK-5-CHANGED: InterfaceSerial2/0, changed state to administratively down
*Jul 24 11:24:11.055: %LINEPROTO-5-UPDOWN: Lineprotocol on Interface Serial2/0, changed state to down
没有评论:
发表评论