Transcript Slide 1
.Net vs. J2EE 刘灏 微软(中国)有限公司 议程 .Net回顾 J2EE体系架构 .Net 与 J2EE的比较 MiddleWare .Net/J2EE 指标测试 总结 .Net 回顾 .NET 技术架构 组件 适 配 器 … 组件 编 排 服 务 Biztalk 安 全 企 业 服 务 Biztalk 消 息 队 列 组件 .NET Framework 公共语言运行时 Windows 组件 .Net 应用体系结构 Web Tier WinForm Non-Web Clients Web Browser Web Clients Middle Tier Data Tier .Net Components ASP.Net IIS-01 Transaction Message Queue ADO.Net Scalability Monitoring Security Web Service Transaction Message Queue ADO.Net Scalability Monitoring Security SQL Server Microsoft.Net 平台 Commerce CS2000 BizTalk / HIS Integration Collaboration Exchange / SPS Content Mgmt Content Mgmt Server Visio 3rd party Add-ons Wireless/Mobile Mobile Info Server SQLData Server Application Server Windows Server Operating System App Center Management + Analysis Visual Studio Tools Cache ISA / Proxy Server / Fwall MOM Biz Analytics Microsoft.Net 软件平台 Visual Studio Windows XP, Windows CE, Pocket PC, Office Passport, Alerts, .NET My Services Windows Server, Enterprise Servers .NET Framework 架构 VB C++ C# JScript … 公共语言规范(Common Language Specification) Windows Forms ADO.NET and XML 基类库(Base Class Library) 通用语言运行环境(CLR) Windows COM+ Services Visual Studio.NET ASP.NET 通用语言运行环境(Common Language Runtime) .Net应用的运行环境 管理运行代码 提供公共类型系统 可以访问系统资源 确认类型的安全性 提供垃圾收集,错误处理 对半信任代码的访问安全控制 本地 API, COM interop 软件构造的突破--基于特性的编程 统一的开发模式 .Net Framework Windows 应用 Web 应用 System.Windows.Forms System.Web 移动设备应用 MMIT .Net Compact Framework 多语言开发 统一的对象系统 先进的多语言互用功能 跨语言继承,异常处理 目前支持20多种语言 只要选择喜欢的语言使用即可 不需要学习更多的规则或API VB, C++, C#, Java, JScript, Perl, COBOL 功能强大的工具 调试器等可以跨语言工作 .Net技术概览 展示层 – ASP.Net, Windows Forms 中间层 - .Net组件 中间层可使用的企业服务 System.EnterprisesServices 事务服务 MTS 消息服务 MSMQ 目录服务 ADSI, UDDI 对象池 Object Pooling 异步组件 Queued Component 数据层 – ADO.Net 远层调用 - .Net Remoting/ Web Service 利用现有资源 - .Net Interop / Web Service /BizTalk 对XML的普遍内在支持 Documents & Msgs Data XML SQL 2000, ADO.NET Objects XML DOM, XmlReader XmlWriter SOAP, Serialization, Remoting J2EE体系架构 什么是J2EE? Java 2 Platform, Enterprise Edition (J2EE) 运用Java技术开发企业应用的标准 包括了 多层应用开发模型 开发平台 - APIs 和服务 测试软件包 参考实现 将所有Sun的企业技术集合在一个体系结构 下的平台 特定版本下的EJB, Servlet, JSP Java Web Server JNDI, JDBC, JTA, JMS, JavaMail, CORBA… J2EE 技术架构 … 组件 JCA 组件 ebXML JTA JMS 安 全 组件 J2EE Framework Java虚拟机 任何平台 组件 J2EE 应用体系结构 HOME Entity Bean B C REMOTE Data Servlet or JSP Browser HTTP JDBC HOME Session Bean Containers REMOTE AppServer A Data EJB Server IBM 平台 WebSphere Edge/ Server Cache / Proxy Fwall WebSphere Commerce Srvr Commerce Tivoli WebSphere Integration Integration Lotus / WebSphere Portal Collaboration WebSphere Studio Management + Analysis Tools Visual Age for Java WebSphere Site Analyzer Content Mgmt Content Mgmt Server Wireless/Mobile Everyplace Servers Data DB2 UDB WebSphere App Server Application Server Multiple Operating Systems Operating System Java 运行环境 JVM - Java应用的运行环境 编译运行Java语言 管理运行代码 类型安全 内存管理 异常处理 跨越平台 Windows/UNIX/Linux EJB J2EE的中间件技术 Session Bean 传统的对象 无隐含的数据映射 编写你自己的数据访问代码 Entity Bean 对象等价于数据库记录 提供数据映射方法 Create, Load, Store and Remove BMP/CMP Entity Bean Transacted Entity Bean Read-only Bean (BEA 特有的功能) Property true 意味着在每个事务的开始和结束都要读数据和写 数据 (即使数据没有变化) Propery false 指仅在生成时读一次数据, 以后再也不读(即使数 据已陈旧) BEA 特有的功能以防止在状态无变化时不调 Store 方法 BEA 亦有刷新的设置可允许数据按时间间隔刷新 只读的, 事务的 entity bean 行为类似于 .NET 中运用 DataReader 的类 (每次读, 重不写) CMP Opt Tool 是 WebSphere 的优化 读取 bean 的源代码, 判断数据访问模式, 删除不必要的 Store 调用 Option A, B and C caching 亦可规定 bean 的数据库访问是否 是排他的 Option C意味着排他的数据访问, 所以 Store method 可以懒方 式调用 J2EE应用开发 企业级Web应用的开发 J2SE - Rich Client J2ME – 移动设备应用开发 均基于Java 2/JDK J2EE技术概览 展示层 – ServLet/JSP 中间层 – EJB 中间层可用的企业服务 事务服务 目录服务 消息服务 异步组件 JTA JNDI JMS Message-Driven EJB 数据层 - JDBC 远程调用 – RMI/IIOP 使用现有资源 - JCA 对XML的支持 J2EE标准未包括对XML Web服务的支持 各个厂商提供自己的方案 支持UDDI/WSDL/SOAP WSI组织保证互操作性 SUN的方案 JAXP/JAXB/JAXM/JAXR/JWSDL JAX/RPC JAX* – Java API for XML * .Net与J2EE 的比较 技术架构整合 WS-I J2EE CLR JVM Windows Linux … .NET JCA ebXML JTA 适 配 器 JMS 编 排 服 务 Security 企 业 服 务 … 安 全 消 息 队 列 Web 架构: J2EE vs .NET .NET J2EE 表示层 ASP.NET IIS Web 表单 Server 控件 Code-Behind 状态: ASP.NET Session, .NET 数据缓存 业务逻辑层 CLR .NET Assembly ADO.NET (可使用 COM+ 服 务; 比如事务) JSP Servlets 状态: 封装于 EJB 中, 也可在 Web Sessions 中 JavaBeans EJBs 数据层 SQL Server Oracle DB/2, etc. 可运行于大多 数主要应用及 Web服务器 SQL Server Oracle DB/2, etc. J2SE/EE JDBC (事务使 用 JTA) 支持大多数 数据库 (通 过 Type 4 驱动程序) .Net/J2EE主要技术比较 J2EE .Net JDBC ADO.NET JTA .Net Transaction JNDI Active Directory JMS .Net Messaging JavaMail SmtpMail RMI/IIOP Web Services/Remoting JAF .Net JIT (Just In-Time Activation) .NET与J2EE平台的详细对比 技术 .NET J2EE 支持技术 发布协议 DCOM, SOAP RMI/IIOP 防火墙 ISA* 没有定义 HTML页面缓存 ISA*, ASP.NET 没有定义 基础结构 IIS JWS 程序设计模型 ASP.NET Servlets, JSP 高可用性 NLBS*, ACS*, 其他 没有定义 负载平衡 NLBS*, ACS*, 其他 没有定义 基础结构 COM+ EJB 程序设计工具 Visual Studio.NET 没有定义 高可用性 ACS* 没有定义 负载平衡 ACS* 没有定义 安全性API COM+ Security Call Context JAAS 消息队列API MSMQ JMS 1.0 异步组件 Queued (COM+) Message driven beans (EJB 2.0) 命名与目录服务 ADSI JNDI 分布式事务处理 MS-DTC JTS 关系型数据库API ADO.NET JDBC 2.0 层次型数据库API ADO.NET - 数据库存储 SQLServer** - 大型机数据库连接性 HIS* Java连接器 电子商务架构 Commerce Server* - B2B BizTalk Server* - 表示层技术 中间层技术 数据层技术 架构技术 技术的成熟性 EJB JMS JDBC JSP MDB JAXP JNDI J2EE J2EE 1996 1997 1998 1999 2000 2001 Microsoft .Net Mar 1992 MTS/COM+ ASP QC MSMQ ODBC ADSI MSXML MMC WinDNA LCE VS.Net EJB 与 .NET 组件比较 J2EE .NET Session Beans 无状态 有状态 Entity Beans 永远有状态 .NET 类 无状态 传统的对象 无隐含的数据映射 编写你自己的数据访问代码 .NET中 无等价类 对象等价于数据库记录 数据映射通过以下 4个方法: Create, Load, Store and Remove BMP = 这4个方法由你自己编写 CMP = container 提供这些方法 除了这4个方法再没有其它的数据访问 Java阵营对EJB的看法 J2EE项目中只有10%使用EJB Sun’s Java PetStore: “EJB makes Java look bad. ” “write your data persistence twice” . “bimodal data access layer” IBM Redbook: 不要使用EJB, 用存储过程 James Gosling, Borland Developer conference, May 2002 You have to manage it by ignoring it. The complexity of J2EE is pretty extereme…There’s a dirty little secret about J2EE; most people don’t need J2EE; XML Web Service 比较 “.NET is a brilliant strategy that enables Microsoft to define the next shift in the software business.” - Gartner Group “Everyone should build on the XML/SOAP foundation.” - Meta Group “Gartner believes Microsoft is now providing more vision and influence regarding this shift than any other vendor.” - Gartner Group “.NET is a leading example of what we believe will be the dominant architectural model for the third generation of Internet applications.” - Patricia Seybold Group Gartner Magic Quadrant: Major Vendor Web Services Platform Influence Microsoft IBM Sun Microsystems HewlettPackard Oracle Completeness of Vision *Source: Gartner Research, 9/13/2001 J2EE的移植性与互操作性 理论上J2EE应用可以采用多个厂商的产品 实际情况 只要符合J2EE的标准 J2EE标准不完整,如 Web Service J2EE的技术需改进,如 EJB 各厂商发展各自的技术 不同产品很难协同和移植 J2EE可选择同一厂商支持的不同操作系统 .Net的移植性与互操作性 理论上.Net应用可移植到任何平台 实际情况 CLS提交给标准化组织 只要支持CLR 只有Windows/Free BSD .Net支持Web Service 可以使用任何平台运行的Web Service 任何平台可使用.Net Web Service 技术比较结论 .Net和J2EE应用有着相似的架构 .Net和J2EE有相应的主要技术 .Net所有技术来自Microsoft J2EE的技术有多个厂商的实现 .Net和J2EE可以满足大多数应用的需求 主要的差别不在技术的可行性上 开发效率 性能 成本 稳定性 MiddleWare .Net/J2EE Benchmark Java Pet Store 是什么? Java Pet Store 是 Sun J2EE 的主要示例应用 展示了 J2EE 企业应用编码的最佳实践 作为示例程序发布于 源代码: http://java.sun.com/j2ee/blueprints IBM WebSphere 4.0 Oracle Application Server 9i Sun iPlanet BEA WebLogic 在JavaOne 2001活动中作为 J2EE 的主要示例 应用广泛地强调 依照 SUN 的说法 Java Pet Store 是…. “一个展现如何最佳利用J2EE技术的完整的成熟 的在线商店.” “…一个展示了J2EE技术基本使用方法的示例应 用程序,同时也展现了系统设计的最佳实践方 法.“ .NET Pet Shop是什么? Java Pet Store 在 .NET 架构上的实现 源代码: http://www.gotdotnet.com/team/compare 实现了完全同样的功能 (v 1.1.2) 以C#书写的完全分层的3层逻辑设计 展示 .NET Framework 的最佳编程实践 应用扩展以展示 .NET 对移动设备 (PDA, 手 机) 的支持 应用扩展以展示 .NET 对创建和使用Web服 务的支持 Middleware公司 提供高级J2EE培训和咨询 丰富的J2EE 开发经验和服务器技术 建立并维护 TheServerSide.com 领先的在线J2EE社区 注重于企业架构 Middleware 指标 接触 Microsoft 来重测J2EE / .NET 性能 花了4个月 测试J2EE / .NET 性能 新的全面的指标 所有结果由Middleware 公司取得并鉴定 报告发布在 http://middlewarecompany/j2eedotnetbench 可下载代码,测试脚本, 另有讨论论坛 检测的指标 Web 应用指标 三层Web体系结构 数据驱动的页面创建, 中间层商务逻辑, 中间层数据缓 存, 用户会话管理, 事务. 分布式事务处理指标 测试 .NET/COM+ vs. J2EE/JTA分布式事务管理 运行24小时以测试可靠性 包括性能 (TPS) 和价格/性能比 ($/TPS)指标 Web 服务指标 测试 XML Web 服务 (SOAP 1.1) 性能 测试作为SOAP服务器和SOAP客户的应用 测试的产品 两个领先的, 商用的J2EE应用服务器 因为许可限制, 标记为J2EE应用服务器A和B 用最新支持的JVMs, 由各个应用服务器的专家全面调节 Windows 2000 AS 运行.NET Framework 1.0 Windows.Net Server 2003运行.NET Framework 1.1 所有测试用Mercury LoadRunner 7.5进行 报告要点 配置/调节 J2EE应用服务器花费巨大时间 J2EE应用服务器在 MS Windows 2000 和Linux RH 7.2 测试 应用服务器A 在Windows 2000的性能明显优于 Linux 应用服务器B 在两个系统上的性能相当 基于这些原因, 选择了Windows 2000作为测试平台 J2EE应用服务器A 和 B 展示出完全不同的性能特性 因为性能原因, Middleware 公司 抛弃了CMP 为匹配.Net性能, 每个J2EE应用服务器的调节花费了10个人-周的 时间 调节.Net应用只花了两个人-周的时间 实现 EJB基于 BMP的方案 为避免性能问题, 必须在Entity Beans实现特殊的 “只读”接口 Windows 2000上 运行.NET 1.0 轻易击败J2EE Windows.Net Server 2003上 运行.NET 1.1获得更加明 显的改进 实验室配置 Web 应用指标 在50/50配置下运行两个脚本 只流览 脚本模拟用户访问和进行搜索, 观看产品 详情 下单脚本包括搜索和订购随机物品 下单过程包括5 页的购买过程 最后一步是分布式事务 分两个阶段向Orders 数据库 (加入定单和详情) 和 Products 数据库 (更新库存))提交 测试有/无图形下载的情形 完整的错误检测/报告 巨大的用户负载量以测试系统扩展到2, 4 和 8 CPU的能力 Web 应用指标 Web Application Benchmark (no images) Peak Throughput 1600 1400 Pages/Sec 1200 1000 2CPU 800 4CPU 8CPU 600 400 200 0 J2EE Application Server A J2EE Application Server B .NET 1.0/W2K .NET 1.1/Windows.NET Web 应用指标 Throughput Browse/Order Mix (image download off) 4 CPU Application Server 1000 900 800 Pages Served per Second 700 J2EE App Server A 600 500 J2EE App Server B 400 .NET 1.0/W2K 300 .NET 1.1/Windows.NET Server 200 app server errors beyond 1850 users 100 0 0 2000 4000 6000 8000 User Load (10 sec think time) 10000 12000 14000 Web 应用指标 Web Application Benchmark (image download on) Peak Throughput 8000 7000 Pages/sec 6000 5000 2CPU 4000 4CPU 8CPU 3000 2000 1000 0 J2EE Application Server A J2EE Application Server B .NET 1.0/W2K .NET 1.1/Windows.NET Web Application Benchmark Throughput Browse/Order Mix (image download on) 4 CPU Application Server 4500 4000 J2EE App Server A 3500 Pages Served per Second J2EE App Server B 3000 .NET 1.0/W2K 2500 .NET 1.1/WIndows.NET Server 2000 1500 1000 500 app server errors beyond 0 0 1000 2000 3000 4000 5000 6000 7000 User Load (10 sec think time) 8000 9000 10000 分布式事务指标 事务集中的测试脚本只进行下单操作 每个下单导致2-阶段提交的分布式事务 事务由中间层管理 (应用服务器) 测试使用COM+企业服务的 .NET 事务指标 测试使用JTA的J2EE事务指标 在尖峰负载下运行24 小时 ecPERF只运行30分钟 包含每个事务下价格/性能成本指标 类似 ecPERF 和TPC-C的价格/性能比 包含应用服务器软件, OS和硬件成本 不包括数据库软件/硬件成本, 维护/支持成本 24 小时分布式事务指标 Peak Throughput Distributed Transactions per Second 140 120 100 80 60 40 20 0 J2EE Application Server A J2EE Application Server B .NET 1.0/W2K .NET 1.1/Windows.NET 24 小时分布式事务指标 Price/Performance in Dollar per Transaction/Second (lower is better) 864$ .NET 1.0/W2K 613$ .NET 1.1/Windows.NET 227,4$ J2EE Application Server B $- 503,1$ J2EE Application Server A $500 $1,000 $1,500 $2,000 $2,500 $3,000 $3,500 $4,000 $4,500 $5,000 Web 服务指标 测试A 施加负载客户直接发送SOAP/http请求 单个应用服务器提供Web 服务 返回结构良好的XML定单对象 测试B 施加负载客户向JSP/ASPX SOAP客户应用发送 HTML/http 请求 客户应用向提供Web 服务的机器发送SOAP请求 SOAP客户应用和提供Web服务的机器运行同样的应用 服务器软件 (没有测试交互) 返回结构良好的XML定单对象 用JSP/ASPX将定单对象作为HTML显示 Web 服务指标 测试 A: 直接访问 Web Service Peak Throughput 1000 900 SOAP Requests/sec 800 700 600 2CPU 4CPU 500 8CPU 400 300 200 100 0 J2EE Application Server A J2EE Application Server B .NET 1.0/W2K .NET 1.1/Windows.NET Web 服务指标 测试 A:直接访问 Throughput SOAP Web Service Call 4 CPU Application Server 700 600 Requests/second 500 400 J2EE App Server A J2EE App Server B .NET 1.0/W2K 300 .NET 1.1/Windows.NET 200 100 0 0 1000 2000 3000 4000 5000 6000 Users (10 second think time) 7000 8000 9000 Web 服务指标 测试 B: 通过代理访问 Web Service via Proxy to Remote WS Host Peak Throughput 800 700 pages/sec 600 500 2CPU 4CPU 8CPU 400 300 200 100 0 J2EE Application Server A J2EE Application Server B .NET 1.0/W2K .NET 1.1/Windows.NET Web 服务指标 测试 B: 通过代理访问 Throughput Remote SOAP Call via Proxy Object 4 CPU Application Server 600 500 J2EE App Server A Requests/second 400 J2EE App Server B .NET 1.0/W2K 300 .NET 1.1/Windows.NET 200 100 0 0 1000 2000 3000 4000 Users (10 second think time) 5000 6000 7000 MiddleWare 结论 独立的Middleware指标显示, .NET的性能明显优 于 J2EE Web应用服务 事务性能 XML Web 服务性能 .NET 比市场上领先的J2EE应用服务器明显的节省成本 基于计算出的价格/性能比较 .NET应用比相应的 J2EE 应用更可靠, 在负载下明显易于 调节 Windows.Net Server 2003上运行的.Net 1.1性能明显优于 Windows 2000上运行的.NET 1.0 Middleware 报告, 源代码, 和测试脚本已在线发布: http://www.middleware-company.com/j2eedotnetbench/ 总结 .Net与J2EE是企业应用解决方案的技术 .Net与J2EE在体系结构和主要技术上有明 显的对应性 .Net与J2EE的差别主要体现在开发效率, 性能, 成本和可靠性上 独立的MiddleWare测试表明, .Net在开发 效率, 性能, 成本和可靠性上明显优于J2EE © 2002 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.