设计模式与工程实施

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

设计模式与工程实践王翔(VisionWang)Architect(.NET,XML,PKI)2009-01-17个人资料王翔软件架构师,主要从事.NET、XML、公钥基础设施的开发。专注于数据(尤其是XML信息)的生产、加工、交换、提炼等过程。此外,参与了一系列有关应用密码技术和PKI环境保护信息系统数据安全的项目。最喜欢数学,平常案头总是摆一本数学练习题。闲暇时间喜欢写作,通过发表多种技术文章与国内外同行交流各种数据应用经验。项目间隙经常到各海滨城市徒步旅行、野外露营、出海航行、极限运动。座右铭:天行健,君子以自强不息。Agenda•简介•GoF23与工程实践•案例分析•其他简介•当你要开发一个小型的系统,整个系统只有两三人开发,系统活不过5年,商业逻辑单纯,程序代码不超过万行,这时,你随便做,影响不大。•反之,若要架构大型系统,你需要慎思,套用模型与架构,将前人的经验当作基石,这样系统设计才不至于陷入发散。•然而,你不会一开始就做大系统,风险太高。所以,要练习,最好从小系统开始使用模型与架构,如此才能检讨与学习,日后方能在大系统中自如运用。《设计模式——基于C#的工程化实现及扩展》序胡百敬简介•系统分析与设计是门艺术,问题的解法与何为问题是交织的,而各模式的搭配使用技巧不同,存乎一心,需要巧思与反复琢磨,方可有好的解法。本书立意明确,除了告诉你问题的类型与解法,还提供了可以立即演绎的程序代码。相信这本案头的工具书可以提供你一个不错的深思起点,造就有弹性、能扩充、易维护的软件实力。《设计模式——基于C#的工程化实现及扩展》序胡百敬简介•设计模式可以当做软件开发中的独孤九剑。在软件设计中最大的敌人就是需求不断的变化,需求变化无休无止,软件交付日期也就无限期的延迟。我们无法做到以不变应万变,但如果能提前预见到一些变化,就能用很小的代价来应对剧烈的变化。GOF总结的经典设计模式虽只有23种,但不管是创建型模式、结构型模式还是行为型模式,归根结底都是在寻找软件中可能的变化,并封装这些变化。“料敌机先”为设计模式精髓之一,只不过这里的敌是需求的变化而已。•对于设计模式如果不能够做到灵活自如的运用,不仅威力大减,甚至于弄巧成拙,“活学活用”为设计模式精髓之二。《设计模式——基于C#的工程化实现及扩展》序李会军简介•设计模式无处不在•模式不是框架,不能套用•模式也不是过程,模式也不是简单的“问题的解决方案”•系统的设计也不是含有设计模式就好•更不是含有越多的设计模式就越好简介•真正为软件设计界带来系统化设计模式思维的是DesignPatterns:ElementsofReusableObject-OrientedSoftware•此后各个领域开始出现各种模式化思维–成例–数据及数据库–架构–实时系统–集成–Web/AJAX–……简介•反模式的思维–决定在项目中使用哪一种设计模式–一位开发人员通过介绍希望在一项工程中使用设计模式–开发人员通过包括设计模式的最佳实践来改进项目的渴望–开发人员天生的好奇心驱使他利用这个项目来研究设计模式–项目中应用了所有知名的设计模式–项目团队和交付的应用程序由于不自然地引入太多设计模式而遭受损失。不必要的复杂性会从已经完成的工作量、开发团队了解发生事情的能力、应用程序的实际性能和功能的正确性等方面影响开发成果–设计模式是专业知识的主要来源,尽管使用他们的效果很好,但是全部使用他们就未必也是好的简介•实际解决方案–设计模式的描述包含了使用模式的目标语境,必须考虑如何确保设计模式匹配项目–设计模式不是来源于当某人阅读了一本设计模式的著作后,问:“我可以把这个设计模式使用在什么地方?”而是来源于某人寻找已发现问题的解决方案GoF23与工程实践CreationalAbstractFactoryBuilderFactoryMethodPrototypeSingletonCreatesaninstanceofseveralfamiliesofclassesSeparatesobjectconstructionfromitsrepresentationCreatesaninstanceofseveralderivedclassesAfullyinitializedinstancetobecopiedorclonedAclassofwhichonlyasingleinstancecanexistStructuralAdapterBridgeCompositeDecoratorFacadeFlyweightProxyMatchinterfacesofdifferentclassesSeparatesanobject’sinterfacefromitsimplementationAtreestructureofsimpleandcompositeobjectsAddresponsibilitiestoobjectsdynamicallyAsingleclassthatrepresentsanentiresubsystemAfine-grainedinstanceusedforefficientsharingAnobjectrepresentinganotherobjectBehavioralCoRCommandInterpreterIteratorMediatorMementoObserverStateStrategyTemplateMethodVisitorAwayofpassingarequestbetweenachainofobjectsEncapsulateacommandrequestasanobjectAwaytoincludelanguageelementsinaprogramSequentiallyaccesstheelementsofacollectionDefinessimplifiedcommunicationbetweenclassesCaptureandrestoreanobject'sinternalstateAwayofnotifyingchangetoanumberofclassesAlteranobject'sbehaviorwhenitsstatechangesEncapsulatesanalgorithminsideaclassDefertheexactstepsofanalgorithmtoasubclassDefinesanewoperationtoaclasswithoutchangeGoF23与工程实践•设计模式是一种设计思想,表达这种思想最简洁的方式就是UML+Demo就够了。•但Demo和实际工程应用还是有一段差距的,原因不多,但每一个都需要在Demo之余好好考虑:•此外,设计模式的一个亮点就是提高代码的可重用性,如果设计一套比较适合实际工程使用的设计模式库,可以节省八股式反复Demo的工作。GoF23与工程实践•工程中设计模式总是结合某些开发语言•而每种语言本身都有自己的特点–C++、C#、Java、Delphi–VB、VisualFox、COBOL–SQL、XQuery–JavaScript、VBScript、ActionScript、PowerShell–Python、Perl、Ruby、PHP–F#–XML、HTML、BPEL–……GoF23与工程实践•领域建模阶段的模式化特征分析GoF23与工程实践•的章节安排GoF23与工程实践•工程中实践设计模式的感受–打破一些固有的套路–用自己习惯的语言以简洁、直接的手段解决易于变化的问题–不要仅仅将依赖关系定格在对象体系,更多考虑到应用开发、运维不同生命周期中参与者的工作特点,将依赖拓宽到对象、配置体系、数据存储和服务体系–面向Web、面向混合信息体系、面向服务GoF23与工程实践•开发人员个性与设计模式的关系–程序开发人员在对待自己工作的时候总或多或少有些“至于至善”得心结–代码、类库、应用框架不仅仅是老板和项目经理眼中的产品,更是我们敝帚自珍的工作成果–但修改自己的代码,尤其是因为上游需求不确定带来这种压力的时候,总不是那么愉快地经历–我们要借鉴并应用那些成熟的套路,将变化抽象并集中在几个点,然后把他们交给运维人员来处理,而我们更多把时间放在创造性工作–模式是现成的,但实现套路您自己的案例分析案例分析•收集所有可能涉及的运行系统案例分析•多种方式“圈”定涉及的系统案例分析案例分析案例分析•主要集成模式–P2P可用技术P2P模式下的应用特点ADO、ADO.NET通过ADO/ADO.NET完成对关系数据库、活动目录的访问和修改DTS/SSIS直接从某系统的数据库层次向目标系统写入信息COM+在需要严格事务性保证的环境下,通过COM+完成包括复杂逻辑的集成工作WebService通过专用的WS定义,实现面向具体数据结构基于URI的访问案例分析•主要集成模式–MessageBroker可用技术MessageBroker模式下的应用特点企业定制的交换平台提供对包括ORACLE、SQLServer、MySQL、WMI、FILE、ADSI、MSMQ、MessageQ、MQ等各种数据源的支持,并提供统一基于配置的处理能力,最好默认提供线程池化的并行处理能力,有独立的监控手段和监控工具、提供丰富的定制处理流程APIDTS/SSIS提供丰富的管理、配置、集成和定制开发的API,有MOM和WMI等完善的监控机制,有良好的结构化异常处理能力,有友好的设计界面COM+可以提供不同DCOM对象和支持COM接口对象的开发,适于处理对遗留系统的集成封装BizTalkServer适于大型的Broker环境,与活动目录环境集成,具有良好的高可用能力,配置、管理、监控、消息追踪、数据映射和集成流程编排都有不错的支持。不过相应的学习成本较高,对运维人员技术要求也比较高。案例分析•主要集成模式–MessageBroker可用技术•企业定制的交互平台或BizTalkServer作为Route/Orchestration的机制,同时提供必要的公共服务Provider;•调用接口采用支持Route功能的WCF;•如果涉及比较复杂的数据流转,而且采用大型中间件产品过于复杂的话,可以扩展WF实现控制流转;案例分析•主要集成模式–DeadLetter可用技术MessageBroker模式下的应用特点Queue+自定义补发处理Queue自己可以对发送失败的消息临时落地到本地其他队列,此时可以用自定义的补发进程处理。BizTalkMessageBoxBizTalk会把消息先持久化,如果交易过长或者存在错误,可以通过访问MessageBox获得发送失败的信息,然后根据BizTalk的发送策略定义是否需要重发、重发何种特征的消息。SSIS/DTS在交换过程中通过定义异常流程,将发送失败的消息保存在中间表,然后通过定制的SQLJob定期检查重新发送。案例分析•结合交换情景分析案例分析•增加约束条件–Broker采用SQLServer2005的SSIS,他直接通过数据集成访问预定接收的数据库,并且将信息写入Web门户的内容数据库和短信平台的消息库;–“通知生成服务”退化为SSIS的存储过程和SQLJob;–Proxy采用Broker服务器网络NAT的方式,在分支企业的外部网提供一个新的IP地址,保证办公网和外部网的应用都可以以“VLAN内部”的形式与Broker交互;–短信服务与外部供应商采用MSMQ+计划任务的方式,计划任务其实要执行一个本地.vbs文件,每次执行都从失败队列的文件夹把文件Cut到发送队列的文件夹,如果检查某个文件创建时间与最近修改时间隔大于2小时,那么就认为是死信,交给后面的电话通知机制处理;其他•推荐的资料–DesignPatterns:ElementsofReusableObject-OrientedSoftware–PatternsofEnterpriseApplicationArchitecture–EnterpriseIntegrationP

1 / 28
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功