您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 其它办公文档 > NET开发及架构分析
NET开发及架构分析☆1NET组件开发的原理及方式2设计模式介绍及抽象工厂3消息传递的简单介绍☆4WebService的简单介绍及示例5Remoting的简单介绍及示例NET组件开发的原理及方式•面向对象系统开发•组件化系统开发•组件开发之后是服务多态封装继承基于消息架构+合约通过策略绑定19962003以接口为基础的动态加载运行态元数据2000面向对象面向服务面向组件从对象到服务历程•面向对象(ObjectOriented,简称OO)是当前计算机界关心的重点,它是90年代软件开发方法的主流。面向对象的概念和应用已超越了程序设计和软件开发,扩展到很宽的范围。如数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD技术、人工智能等领域。•面向对象的程序设计(ObjectOrientedProgramming,简称OOP,亦有译为对象导向),指一种程序设计范型,同时也是是一种程序开发的方法论。它的最大特点是能够大幅度的提高软件项目的成功率,减少日后的维护费用,提高软件的可移植性和可靠性。•“对象(Object)”一词,早在十九世纪就有现象学大师胡塞尔提出并定义。对象是世界中的物体在人脑中的映象,是人的意识之所以为意识的反映,是做为一种概念而存在的先念的东西,它还包括了人的意愿。•对象(Object)是问题域或实现域中某些事物的一个抽象,它反映此事物在系统中需要保存的信息和发挥的作用;它是一组属性和有权对这些属性进行操作的一组服务的封装体。关于对象可以从两个方面描述:1)对象对象是人们要进行研究的任何事物,从最简单的整数到复杂的飞机等均可看作对象,它不仅能表示具体的事物,还能表示抽象的规则、计划或事件。2)对象的状态和行为对象具有状态,一个对象用数据值来描述它的状态。对象还有操作,用于改变对象的状态,对象及其操作就是对象的行为。对象实现了数据和操作的结合,使数据和操作封装于对象的统一体中面向对象系统开发•对象---具体的实例•类---抽象的定义•封装就是把类的内部隐藏起来好处:减少耦合,类内部的实现可以自由地修改,类具有清晰的对外接口•数据隐藏实现方法就是访问限制修饰符publicprotectedinternalinternalprotectedprivate•继承性inheritance一个类可以有能力直接从另一个类获得其代码和数据派生类从基类那里获得其所有的成员C#只支持单继承防止继承publicsealedclassclassname•何时使用继承•代码重用,减少编写的代码量设计重用公用的字段和方法可以放到父类中,然后由其派生新的子类子类有自己的字段和方法•多态性是面向对象程序设计中的重要概念。在运行时,可以通过指向基类的应用,来调用实现派生类中的方法。同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。多态性通过派生类覆写基类中的虚函数型方法来实现。•重载Overload存在于同一类中方法名必须相同参数列表必须不相同返回类型可以不相同•覆写Override存在与继承关系的类中只有虚方法和抽象方法才能覆写相同的方法名称相同的参数列表相同的返回值类型•抽象方法abstract是必须被派生类覆写的方法可以看成没有实现体的虚方法虚函数使用virtual关键字publicvirtualboolwithdraw()•接口interface接口为类提供了蓝图接口只提供定义实现接口的数据类型必须提供接口成员的实现接口本身可以从多个基接口派生UML(UnifiedModelingLanguage)语言UML是一种定义良好、易于表达、功能强大且普遍适用的建模语言。它融入了软件工程领域的新思想、新方法和新技术。它的作用域不限于支持面向对象的分析与设计,还支持从需求分析开始的软件开发全过程。面向对象的建模工具:RationalRose2003/RationalXDEfor.NETPowerDesigner12组件化系统开发•创建可重用的组件•重用现有的组件来缩短开发时间•建立一贯的组件理念•制定一个组件策略•Patterns和Practices•制定一个设计-评审计划•建立知识库•给团队中的成员进行培训知识库的内容•激励团队的成员维护知识库的内容PetShop4.0范例演示多层应用程序体系结构•为了重用、模块化和可维护,尽量按照程序逻辑将应用程序代码划分为松耦合的层次结构•典型的3层逻辑构架–表示层–商业逻辑层–数据访问层(数据存储层)•将不同的逻辑层次部署到多个物理层当中,实现部署的可扩展性•典型的3层物理构架–表示层——UI,例如WinForms或ASP.NET页面–中间层——商业逻辑组件,一般运行在宿主环境下–数据访问层——高性能的、并发RDBMS,例如MicrosoftSQL®ServerTM•原因–分工明确结构灵活–部署方便易于管理–扩展性强•注意:“层”并不是指“进程”或“主机”面向服务的构架•当为企业设计应用程序时,高可伸缩性是极为重要的设计目标•Service-OrientedArchitecture(SOA)要求设计人员将代码按照层次分隔开来•代码之间建立松耦合的关系•可伸缩性——SOA能够带来更多的吞吐量,支持同时处理更多的并发请求•SOA(面向服务架构)是我们软件开发设计的理想境界!•公司:://://•参考附件:企业程序库(EnterpriseLibrary).pptNET组件开发示例设计模式介绍及抽象工厂•设计模式的概念•设计模式的基本原则•设计模式的应用•抽象工厂介绍•设计模式是规则吗?地上本没有路,走得人多了也就成了路。设计模式如同此理,它是经验的传承,并非体系;是被前人发现,经过总结形成了一套某一类问题的一般性解决方案,而不是被设计出来的定性规则;它不像算法那样可以照搬照用。•设计模式是架构吗?架构和模式应该是一个属于相互涵盖的过程,但是总体来说架构更加关注的是所谓的High-LevelDesign,而模式关注的重点在于通过经验提取的“准则或指导方案”在设计中的应用,因此在不同层面考虑问题的时候就形成了不同问题域上的模式。模式的目标是,把共通问题中的不变部分和变化部分分离出来。不变的部分,就构成了模式,因此,模式是一个经验提取的“准则”,并且在一次一次的实践中得到验证,在不同的层次有不同的模式,小到语言实现,大到架构。在不同的层面上,模式提供不同层面的指导。个人理解参考一种套路一种方法论一种编程秘笈•武功套路是习武的门径。新手要一招一式地练习套路,烂熟于心之后,熟能生巧,在实战之中即可见招拆招、运用自如——此时习武之人已从“新手”成长为“好手”。“高手”则没有套路,实战之中只有自然反应,然而一招一式浑然天成、恰到好处,似有似无、无中生有。“高手”之上还有“高高手”,他们达到的境界非我等凭借金氏武侠小说可以揣测。•设计模式之于设计,好比套路之于武术。“新手”要一个接一个地学习模式,“好手”能够活用模式,“高手”则没有模式。•设计模式的“内功”是面向对象的基本原则。这些原则是“神”,模式是“形”。高手拼的是“内功”,对面向对象基本原则有了深刻的领悟,才能用好设计模式,避免“走火入魔”。为什么使用设计模式对任何设计都可以凭主观(对设计很难做出客观评价)判断得出它是一个好的设计,还是一个坏的设计。使用设计模式是为了避免坏的设计。Martin叔叔在他的著作《敏捷软件开发原则、模式与实践》中描述了拙劣设计的症状:僵化性(Rigidity):设计难以改变。脆弱性(Fragility):设计易于遭到破坏。牢固性(Immobility):设计难以重用。粘滞性(Viscosity):难以做正确的事情。不必要的复杂性(NeedlessComplexity):过分设计。不必要的重复(NeedlessRepetition):过多的重复。晦涩性(Opacity):混乱的表达。几条更具体的设计原则•单一职责原则(SRP):–一个类应该仅有一个引起它变化的原因。•开放封闭原则(OCP):–类模块应该是可扩展的,但是不可修改(对扩展开放,对更改封闭)•Liskov替换原则(LSP):–子类必须能够替换它们的基类•依赖倒置原则(DIP):–高层模块不应该依赖于低层模块,二者都应该依赖于抽象。–抽象不应该依赖于实现细节,实现细节应该依赖于抽象。•接口隔离原则(ISP):–不应该强迫客户程序依赖于它们不用的方法。•设计模式建立在对系统变化点的基础上进行,哪里有变化点,哪里应用设计模式。•设计模式应该以演化的方式来获得,系统的变化点往往是经过不断演化才能准确定位。•不能为了模式而模式,设计模式是一种软件设计的软力量,而非规范标准。不应夸大设计模式的作用。•目前可能用到的设计模式:单例模式抽象工厂模式建造者模式设计模式的应用参考附件:抽象工厂模式.doc抽象工厂设计模式介绍•定义在软件系统中,经常面临着“一系列相互依赖的对象”的创建工作;同时由于需求的变化,往往存在着更多系列对象的创建工作。如何应对这种变化?如何绕过常规的对象的创建方法(new),提供一种“封装机制”来避免客户程序和这种“多系列具体对象创建工作”的紧耦合?•意图提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。•使用条件1一个系统不应依赖于产品如何被创建,组合和表达的细节。2有多个产品族,而系统只消费其中一个族中的产品3同属于一个产品族的产品是在一起使用的。4系统提供一个产品的库,所有产品都是以同样的接口实现消息传递的简单介绍•面向消息的中间件•消息传递的原理•MSMQ性能及功能要求RPC调用实现系统通讯RPC特点:“让远程通信和本地调用一样容易定义一个接口编写服务器端实现工具生成两者之间需要的通信管道RPC缺点:延迟(网络、应用程序)部分失败和并发开发的IP地址及端口RPC编程模型publiclongadd(longl1,longl2);编译器methodstubmethodskeleton响应消息longI=add(5,10);publiclongadd(longl1,longl2){returnl1+l2;}请求消息Method:addParams:5(long),10(long)Return:15(long)实现接口客户端面向消息的中间件•消息=消息头(路由信息)+消息正文•支持异步发送•不指定格式(松散约束)•目的地=命名的消息存储仓库•解耦合消息的产生者与消费者•便于重定向或者改变调用流程•运行环境=多样化的发送方式•服务质量:Reliable,transacted,prioritized,deadline-based•通信方式:publish-and-subscribe等.•消息交换模式•Request-response,fire-and-forget,request-asyncresponse消息传递的原理•消息传递(messagepassing)•send原语,向一个给定的目标发送一个消息•receive原语,则从一个给定的源接受一条消息•直接通信(消息缓冲区)方式•间接通信(信箱)方式直接通讯•企图发送或接收消息的每个进程必须指出信件发给谁或从谁那里接收消息•原语send(P,消息):把一个消息发送给进程P•原语receive(Q,消息):从进程Q接收一个消息间接通讯•进程间发送或接收消息通过一个信箱来进行,消息可以被理解成信件•原语send(A,信件):把一封信件(消息)传送到信箱A•原语receive(A,信件):从信箱A接收一封信件(消息)MSMQ性能及功能需求•MSMQ(MicroSoftMessageQueue,微软消息队列)是在多个不同的应用之间实现相互通信的一种异步传输模式,相互通信的应用可以分布于同一台机器上,也可以分
本文标题:NET开发及架构分析
链接地址:https://www.777doc.com/doc-2889576 .html