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.