基於.NET架構的企業級應用開發(概覽) .ppt
基于.NET架构的企业级应用开发(概览),浪潮,鞠强,关于-我,求学:93-97,山大数学系计算数学专业工作:97-至今,浪潮,.NET首席架构师受训:微软历年各种培训,Architect2000全国优秀学员,Redmond培训培训:山东大学管理学院兼职讲师爱好:程序、修改游戏、摇滚,关于-我,经历:95年,KV300c破解(TC+汇编)97年,三国志2游戏内存修改器(TC+汇编)97年,PDP11与PC机的接口程序,及网卡驱动程序的编写(vc+汇编)98-99年,CBuilder/PB国强财务软件V6.02000-2002年,PB开发进销存V6.02002-至今,基于.NET的企业管理软件开发,主题,3-Tier ModelIIS.NET FrameworkADO.NETWeb ServiceSecurityTeam DevelopmentPerformance,三层架构模型,定义:逻辑上分了三个层。要纠正的错误观念:不是简单的物理分离为三部分不是只有B/S模型才是三层基本要素:业务逻辑放到了中间层理论上可以支持分布,并进行集群我们的目标之一:业务逻辑处理与显示分离,服务是构造松散系统的接口,服务为外界提供业务功能的接口。以通信方式访问接口通信合同,A,B,C,UI 组件,UI 控制组件,数据访问组件,业务流程,业务组件,用户和器件,数据存储,业务实体,服务和应用的层结构,UI 组件,UI 控制组件,用户和器件,表象层,用户界面多种器件业务层连接,UI 组件控件,表格等.用途:接收和展示数据解释用户命令集成其它 UIView and Controller of MVC,UI 控制组件表象层的特制组件用途:组织 UI控制数据流程管理 State不知器件种类隔离 UI 组件和业务层的耦合,业务层 业务逻辑,业务流程和业务活动,业务活动特制的 Serviced stateless 组件用途:实现简短业务活动启动 atomic transactions运行 pipeline 或 event sequences从数据源和外界服务索取并汇总数据,业务流程Biztalk orchestration or other workflow engines用途:整合由信息交换和业务活动所组成的业务流程管理信息通讯State 管理,业务流程(Workflow),业务组件(Component),业务实体(Entity),业务层 数据表现,数据表现方式和聚合方式,Business Entities根据速度,编程模式及维护性要求来选择XML:灵活性高,但语义几无DataSet:功能强,databinding,validation,语义差,速度较慢Typed DataSet:编程模式较好,灵活性较差,速度较慢特制类:编程模式好,运行速度快,但需很多编程,业务流程(Workflow),业务组件(Component),业务实体(Entity),业务层 服务集成,服务集成,服务接口.NET Web Services,MSMQ Listeners用途:通过信息接口公开业务功能,政策执行Business Faades,服务代理.NET Web Service proxies,特制组件.用途:调用外界服务封装服务调用逻辑,信息格式及调用政策等,业务流程(Workflow),业务组件(Component),业务实体(Entity),Business Facade,Business Facade,数据层 数据访问,数据访问,数据访问组件无态组件,封装数据访问和变换逻辑用途:封装数据访问和把数据转换成有语义的业务实体(Business Entity)参予 Transaction同步式,函数式调用使用辅助组件(Helper Components),数据访问组件,数据源,安全,安全可信的设计,鉴认(Authentication)授权(Authorization)安全通信审计如何保留身份信息Profile ManagementFederation,Scalability,AD,Kerberos,AD,Kerberos,Other,CertificatesSSLWS-Security,表象层,业务层,数据层,操作管理,通信,安全,鉴认,安全通信,授权,审计,Profile Mgmt,通信,安全,表象层,业务层,数据层,操作管理,易于管理易于维护,Exception 管理Handling the Unexpected监控(Monitoring)Health,SLA and scaling instrumentation业务监控Operative Business Intelligence设置管理(Configuration Management)Policy management,distribution,and enforcement,操作管理,Exception 管理,监控,业务监控,设置管理,通信,互用性(Interoperability),同步或异步选择(Synchronicity)信息通信(Message-based communication)Non-blocking 调用通信格式选择(Format)基于标准(Standards-based),互用性(Interoperability)传输和协议选择(Transport and protocol)平台互用性(Platform interoperability)能力(transaction flow,impersonation,etc),安全,操作管理,表象层,业务层,数据层,通信,格式,同步异步,协议,主题,3-TierIIS.NET FrameworkADO.NETWeb ServiceSecurityTeam DevelopmentPerformance,IIS体系架构状态机,验证,路由,ASP,静态文件处理器,其它ISAPIDLL,请求,Metadata,访问被拒绝,CGI,回应,日志,ASP.NETISAPI,IIS进程身份,被装扮的身份,IIS 5.0体系架构进程模型,TCP/IP,INETINFO.EXE,DLLHOST.EXE,IIS 应用,W3SVC,IIS 应用,IIS 应用,ASP.NET,Winsock,低,中,高,LocalSystem,IWAM,ASP.NET,IIS 6.0体系架构,HTTP.SYS,User mode,Kernel mode,Listener,Response Cache,Sender,Web Publishing,Internet Information Server,ASP HTTP 运行引擎,ASP.NET HTTP 运行引擎,HTTP请求,Internet,Intranet,验证场景,IIS,浏览器,代理服务器,SQL Server,活动目录,防火墙,推荐解决方案,主题,3-TierIIS.NET FrameworkADO.NETWeb ServiceSecurityTeam DevelopmentPerformance,两个里程碑,1993年7月27日,MS发布了WindowsNT 3.1,标志着DOS时代的结束。2002年2月13日,MS发布了CLR,标志着COM时代的结束。,.NET Framework的两条主线,CLR:集成单一操作系统进程的软件运行WebService:集成Internet范围的软件运行,CLR是COM更好的替代品,COM的最大贡献:代码动态载入、类型化系统的引入(比如说Variant)COM不仅是一个编程模型,也是一种系统支持模型COM使用types来作为组件之间通信的规范,编程模型的演化,生产力在提高,控制力在下降,.NET Framework 架构,Visual Studio.NET,公共语言运行时(Common Language Runtime),管理运行代码确认类型的安全性提供垃圾收集,错误处理 对半信任代码的访问安全控制提供公共类型系统(common type system)数值类型(integer,float,user defined,etc)引用类型(Objects,Interfaces)可以访问系统资源本地 API,COM interop,etc.,.NET Framework 和 CLR CLR 执行模型,VB,源代码,Compiler,C+,C#,Compiler,Compiler,AssemblyIL Code,AssemblyIL Code,AssemblyIL Code,操作系统服务,公共语言运行时,即时编译器JIT Compiler,二进制代码,管理代码Managedcode,UnmanagedComponent,演示(Source code/IL code/Native Code,cordbg),using System;namespace Demopublic class Demopublic static void Main()int i=1,j=2;i+;j+=2;Console.WriteLine(“Result is:0”,i+j);,元数据,IL 托管代码,资源信息,example.DLL,公共语言运行时程序集,组装,装配件(Assemblies),部署和管理,非常简单的部署:用批处理复制文件即可不需要修改注册表和活动目录uninstall 应用程序,删除他们即可没有负面影响的安装(Zero-impact install)安装一个应用程序不会影响别的应用程序不同版本的应用可以同时运行各种版本的应用程序可以同时存在其他的一些部署方法:.CAB.MSI,共享程序集 Assemblies,用于被多个程序访问的组件同私有的 assemblies 访问的方式是一样的必须放置在指定的路径中 Global Assembly Cache(GAC)Assembly必须由 AL.EXE 或者 GACUTIL.EXE 来注册,CLR简化了开发过程,完全消除了COM的繁琐底层细节再也不用RegistrationGUIDs.IDL filesHRESULTsIUnknownAddRef/ReleaseCoCreateInstance,=自我描述的组件,直接xcopy,=层次化的名字空间(namespace),=原代码直接到元数据(METADATA),=结构化的异常处理,=root object class,=垃圾回收(garbage collector),=”new”操作符,主题,3-TierIIS.NET FrameworkADO.NETWeb ServiceSecurityTeam DevelopmentPerformance,ADO.NET对象模型(演示),.NET数据适配器,Sql Server System.Data.SqlClient OLE DBSystem.Data.OleDb ODBCSystem.Data.Odbc OracleSystem.Data.OracleClient,存储过程与直接SQL调用,SP可以在SqlCommand中调用SP直接传递给SqlDataAdapter适配器对象。一般的,我们建议使用存储过程,而不是用直接call sql的方式。,使用SP的几个理由,性能提升在数据库中加密易于维护在数据层与业务层之间的一个缓冲极大的降低网络流量,主题,3-TierIIS.NET FrameworkADO.NETWeb ServiceSecurityTeam DevelopmentPerformance,什么是 Web Service?,Web Service 是可通过标准网络协议来访问并实现程控的系统功能。多种客户端,多种平台分布式系统构建,Web Service目标,孤立系统和异种平台系统连接松散耦合,讯息传递开放式标准协定基于稳固可靠的企业级产品,开放式标准,SOAP(Simple Object Access Protocol)讯息传递的 XML 协定WSDL(Web Service Description Language)讯息交换合同DISCO(Discovery)发布可用 Web Service 的简单协定UDDI(Universal Description Discovery and Integration)Web Service 黄页,互用问题,Web Services 是为互用而设计ASP.NET Web Services 的默认设置是文本型(Document style)某些 SOAP API 使用 RPC型,如 Apache SOAP用SoapRpcService 装饰类定义SoapRpcMethod装饰方法定义JAVA世界与.NET世界的通信,单纯靠WS是没有办法完全解决的,主题,3-TierIIS.NET FrameworkADO.NETWeb ServiceSecurityTeam DevelopmentPerformance,安全概述,网络安全的物理范围网络安全的语义范围威胁来自哪里,“INTERNET的美妙之处在于你和每个人都能互相连接,INTERNET的可怕之处在于每个人都能和你互相连接”,网络安全的物理范围,验证(Authentication)身份识别你是谁?,授权(Authorization)访问控制你能访问什么数据和服务?,审核(Auditing)记录你的蛛丝马迹,以后备查,私密(Privacy)如何只让接收者看到数据?,网络安全的语义范围,完整性(Integrity)如何确保数据在传输过程中没有被修改?,一个典型的WEB应用的安全需求,相关的安全技术,威胁来自哪里?,病毒泛滥黑客猖獗内奸捣乱,造成的结果:数据丢失、网络瘫痪,客户的反映:我们的产品安全防卫做的太差,导致了这一切的发生,应用服务器级的安全,我们产品基于的是微软的IIS5.0/5.1/6.0应用服务器Win2k:IIS5.0WinXP:IIS5.1Win2003:IIS6.0,推荐解决方案,数据库服务器级的安全,两种验证方式:混合验证/Windows验证主要的安全配置策略,与其他server相同关注的重点:非法数据的入侵,几个例子,正常的请求:ID:1001SELECT Name FROM Customer WHERE ID=1001,跳过门卫的检查:ID:1001 or 1=1 SELECT Name FROM Customer WHERE ID=1001 or 1=1,几个例子-2,破坏性的行为:ID:1001;drop table orders;-SELECT Name FROM Customer WHERE ID=1001;drop table orders;-,暴徒式的行为:ID:1001;exec xp_cmdshell(“format d:/q/u/x”);-SELECT Name FROM Customer WHERE ID=1001;exec xp_cmdshell(“format d:/q/u/x”);-,如何保证安全,每天检查/更新操作系统的补丁建立严格的审核制度应用厂商,很少需要在此方面考虑,主题,3-TierIIS.NET FrameworkADO.NETWeb ServiceSecurityTeam DevelopmentPerformance,团队开发环境,三种开发模型,极力推荐的模式。,缺点:debug的时候,会对WebServer产生lock,缺点:在WebApp中,会发生dll相互覆盖的情况,两种Solution模型的比较(1),单一Solution优点:对于引用关系,可以建立在Project一级上;避免了版本更新的问题;编译流程与编译脚本都变得很简单。缺点:如果你只负责一个project,那么get的时候,却一般需要把所有的proj都get下来。任何一个project的修改,都会导致build的时候可能进行build all。,两种Solution模型的比较(2),多Solution优点:引用关系被弱化了,因为每个solution中只包含了少量的proj。缺点:solution之间只能使用文件引用方式,这样对于版本控制是很难作的。,关于DailyBuild,一个build脚本的demo,C:windowssystem32integration.batset ssdir=server2000sourcedbe:arcasss get$/arcas-r-yjq,devenv arcas.sln/rebuild releasexcopy arcas_web*.htm dataserverarcassysmenushow/q/r/yxcopy arcas_web*.aspx dataserverarcassysmenushow/q/r/yxcopy arcas_web*.ascx dataserverarcassysmenushow/q/r/yxcopy arcas_combin*.dll dataserverarcasbin/q/r/yxcopy arcas_webbin*.dll dataserverarcasbin/q/r/yxcopy arcas_webjs*.*dataserverarcassysjs/q/r/yxcopy arcas_webcss*.*dataserverarcassyscss/q/r/y,主题,3-TierIIS.NET FrameworkADO.NETWeb ServiceSecurityTeam DevelopmentPerformance,消除幻想!,软件交工不仅仅是代码编写完成。性能是软件需求中的必不可少的一部份。兼顾性能,是程序员的天职,绝不能逃避。性能调优,牵扯到方方面面,一个人不可能完全掌握。工具不可能替代人来完成所有的工作。,进入正题-让我们抓狂的问题,你们的软件速度太慢,如果再不改进,就投诉到老板那里,要退货了。(BAD)早上程序还挺快的,中午就慢了。有时候到下午,速度又快了。(Good)机器内存已经加到2G了,速度没有明显改善。(Better)机器慢的时候,dllhost/aspnet_wp.exe占用了100%的CPU,内存占用到了600M。(Best),准则1,数字观念,客户可以接受的性能标准是什么?客户端总部打开制单页面的时间应该低于多少?分公司低于多少?客户端总部右键帮助的时间应该低于多少?分公司低于多少?客户端总部保存单据的时间应该低于多少?分公司低于多少?按销售区域分类的销售统计报表,打开的时间应该低于多少?分公司低于多少?.,准则2,隔离,找到瓶颈问题,大瓶颈在哪里?WebServer的问题?DBServer的问题?网络传输的问题?防火墙的问题?客户端配置的问题?.,总结,心中有对“快”、“慢”的标准找到最慢的地方集中处理该瓶颈问题GOTO 步骤2,如何处理瓶颈问题?,怎么解决?,了解系统,了解软件架构合理使用工具丰富的调试技巧,服务器的物理优化,关闭任何不必要的启动进程安装杀毒软件、防间谍软件关闭任何不必要的端口合理设置虚拟内存关闭任何不必要的服务保证足够的网络带宽可以使用,究竟哪里是瓶颈?,Web服务器DB服务器客户端配置网络带宽,最大的瓶颈在哪里?,如何模拟客户场景?,Win Runner、Load Runner模拟客户带宽模拟客户并发用户数量修改脚本重复运行,系统本身提供的工具,Performance MonitorProcess、ProcessorMemory、ThreadsTask ManagerMemory、Virtual MemoryCPU、None paged cache poolEvent Log,Sql Server提供的工具,Sql Server Enterprise ManagerLogDead lockSql ProfilerI/O reads/writes、CPU、TimeSql AnalyzerExecution PlanningIndex Tuning Wizard,针对COM+组件的辅助工具,AdplusVbscriptCreating memory dump fileCreating call stack informationDebugDiagCreating memory dump fileCreating call stack informationAutomation analyzingBounds CheckerMemory Leak/Pointer/API/,针对.NET的辅助工具,FxCop.NET ProfilerAdpulsBounds CheckerMemory Leak/Pointer/API/,调试器,WindbgVS.NETCordbgSofticeIDA,稍微高级点的调试技巧,断点的设置:Breakpoint ConditionData Condition观察Call Stack善用Assert/Trace/DebugAttach Process合适的PDB/DBG/MAP文件,常见的性能问题,Memory LeakNative CodeManaged Code调用Native CodeManaged Code调用COM+组件Dead LockTable IndexSQL杀毒软件网络带宽,推荐的一些资料,sun company,推荐的一些资料,数据库系统实现Windows核心编程JAVA与模式80X86汇编语言设计教程Windows95系统编程奥秘Windows WDM驱动程序开发指南代码阅读技巧与实践.NET与Windows应用程序调试Applied Microsoft.NET Framework Programming,推荐的一些资料,COM本质论.NET本质论黑客反汇编揭秘.NET系统架构与开发企业应用架构模式深入JAVA虚拟机UML和模式应用设计模式(Gang of 4)C+PrimerC+STL,祝大家身体健康!,http:/,