1、设计模式与工程实践,王翔(Vision Wang)Architect (.NET, XML, PKI)2009-01-17,个人资料,王 翔软件架构师,主要从事.NET、XML、公钥基础设施的开发。专注于数据(尤其是 XML信息)的生产、加工、交换、提炼等过程。此外,参与了一系列有关应用密码技术和 PKI环境保护信息系统数据安全的项目。 最喜欢数学,平常案头总是摆一本数学练习题。闲暇时间喜欢写作,通过发表多种技术文章与国内外同行交流各种数据应用经验。 项目间隙经常到各海滨城市徒步旅行、野外露营、出海航行、极限运动。 座右铭:天行健,君子以自强不息。,Agenda,简介GoF23与工程实践案例分
2、析其他,简介,当你要开发一个小型的系统,整个系统只有两三人开发,系统活不过5年,商业逻辑单纯,程序代码不超过万行,这时,你随便做,影响不大。反之,若要架构大型系统,你需要慎思,套用模型与架构,将前人的经验当作基石,这样系统设计才不至于陷入发散。然而,你不会一开始就做大系统,风险太高。所以,要练习,最好从小系统开始使用模型与架构,如此才能检讨与学习,日后方能在大系统中自如运用。,设计模式基于C#的工程化实现及扩展序 胡百敬,简介,系统分析与设计是门艺术,问题的解法与何为问题是交织的,而各模式的搭配使用技巧不同,存乎一心,需要巧思与反复琢磨,方可有好的解法。本书立意明确,除了告诉你问题的类型与解法
3、,还提供了可以立即演绎的程序代码。相信这本案头的工具书可以提供你一个不错的深思起点,造就有弹性、能扩充、易维护的软件实力。,设计模式基于C#的工程化实现及扩展序 胡百敬,简介,设计模式可以当做软件开发中的独孤九剑。在软件设计中最大的敌人就是需求不断的变化,需求变化无休无止,软件交付日期也就无限期的延迟。我们无法做到以不变应万变,但如果能提前预见到一些变化,就能用很小的代价来应对剧烈的变化。GOF总结的经典设计模式虽只有23种,但不管是创建型模式、结构型模式还是行为型模式,归根结底都是在寻找软件中可能的变化,并封装这些变化。“料敌机先”为设计模式精髓之一,只不过这里的敌是需求的变化而已。对于设计
4、模式如果不能够做到灵活自如的运用,不仅威力大减,甚至于弄巧成拙,“活学活用”为设计模式精髓之二。,设计模式基于C#的工程化实现及扩展序 李会军,简介,设计模式无处不在模式不是框架,不能套用模式也不是过程,模式也不是简单的“问题的解决方案” 系统的设计也不是含有设计模式就好更不是含有越多的设计模式就越好,简介,真正为软件设计界带来系统化设计模式思维的是Design Patterns:Elements of Reusable Object-Oriented Software此后各个领域开始出现各种模式化思维成例数据及数据库架构实时系统集成Web / AJAX ,简介,反模式的思维决定在项目中使用哪
5、一种设计模式一位开发人员通过介绍希望在一项工程中使用设计模式开发人员通过包括设计模式的最佳实践来改进项目的渴望开发人员天生的好奇心驱使他利用这个项目来研究设计模式项目中应用了所有知名的设计模式项目团队和交付的应用程序由于不自然地引入太多设计模式而遭受损失。不必要的复杂性会从已经完成的工作量、开发团队了解发生事情的能力、应用程序的实际性能和功能的正确性等方面影响开发成果设计模式是专业知识的主要来源,尽管使用他们的效果很好,但是全部使用他们就未必也是好的,简介,实际解决方案设计模式的描述包含了使用模式的目标语境,必须考虑如何确保设计模式匹配项目设计模式不是来源于当某人阅读了一本设计模式的著作后,问
6、:“我可以把这个设计模式使用在什么地方?”而是来源于某人寻找已发现问题的解决方案,GoF23与工程实践,GoF23与工程实践,设计模式是一种设计思想,表达这种思想最简洁的方式就是UML + Demo就够了。但Demo和实际工程应用还是有一段差距的,原因不多,但每一个都需要在Demo之余好好考虑:此外,设计模式的一个亮点就是提高代码的可重用性,如果设计一套比较适合实际工程使用的设计模式库,可以节省八股式反复Demo的工作。,GoF23与工程实践,工程中设计模式总是结合某些开发语言而每种语言本身都有自己的特点C+、C#、Java、DelphiVB、Visual Fox、COBOLSQL、XQuer
7、yJavaScript、VBScript、ActionScript、PowerShellPython、Perl、Ruby、PHPF#XML、HTML、BPEL ,GoF23与工程实践,领域建模阶段的模式化特征分析,GoF23与工程实践,的章节安排,GoF23与工程实践,工程中实践设计模式的感受打破一些固有的套路用自己习惯的语言以简洁、直接的手段解决易于变化的问题不要仅仅将依赖关系定格在对象体系,更多考虑到应用开发、运维不同生命周期中参与者的工作特点,将依赖拓宽到对象、配置体系、数据存储和服务体系面向Web、面向混合信息体系、面向服务,GoF23与工程实践,开发人员个性与设计模式的关系程序开发人
8、员在对待自己工作的时候总或多或少有些“至于至善”得心结代码、类库、应用框架不仅仅是老板和项目经理眼中的产品,更是我们敝帚自珍的工作成果但修改自己的代码,尤其是因为上游需求不确定带来这种压力的时候,总不是那么愉快地经历我们要借鉴并应用那些成熟的套路,将变化抽象并集中在几个点,然后把他们交给运维人员来处理,而我们更多把时间放在创造性工作模式是现成的,但实现套路您自己的,案例分析,案例分析,收集所有可能涉及的运行系统,案例分析,多种方式“圈”定涉及的系统,案例分析,案例分析,案例分析,主要集成模式P2P,案例分析,主要集成模式Message Broker,案例分析,主要集成模式Message Bro
9、ker,案例分析,主要集成模式Dead Letter,案例分析,结合交换情景分析,案例分析,增加约束条件Broker采用SQL Server 2005的SSIS,他直接通过数据集成访问预定接收的数据库,并且将信息写入Web门户的内容数据库和短信平台的消息库;“通知生成服务”退化为SSIS的存储过程和SQL Job;Proxy采用Broker服务器网络NAT的方式,在分支企业的外部网提供一个新的IP地址,保证办公网和外部网的应用都可以以“VLAN内部”的形式与Broker交互;短信服务与外部供应商采用MSMQ + 计划任务的方式,计划任务其实要执行一个本地.vbs文件,每次执行都从失败队列的文件
10、夹把文件Cut到发送队列的文件夹,如果检查某个文件创建时间与最近修改时间隔大于2小时,那么就认为是死信,交给后面的电话通知机制处理;,其他,推荐的资料Design Patterns: Elements of Reusable Object-Oriented SoftwarePatterns of Enterprise Application ArchitectureEnterprise Integration PatternsData Patternshttp:/ Patternshttp:/ajaxpatterns.org/PatternsDesign Patterns for .NEThttp:/ Libraryhttp:/ Patternhttp:/www.securitypatterns.org/,