加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

.NET Framework 基本构成

(2007-11-30 14:46:12)
标签:

IT/科技

分类: .net
 NET 框架是 Windows Server System 构建,部署与运行 Web 服务与应用程序的编程模型。该框架托管了大部分深层结构,让开发人员专注于撰写应用程序的业务逻辑代码。.NET 框架的基本构成如下:
"

公共语言运行库

"

.NET Framework 类

"

ASP.NET

"

Web 服务

"

.NET 远程处理

"

Windows 窗体

公共语言运行库

公共语言运行库是 .NET 框架应用程序的运行引擎。它提供了一系列服务,包括:

"

代码管理(装入与执行)

"

应用程序内存隔离

"

类型安全检查

"

中间语言到机器语言的转换

"

访问元数据(增强类型信息)

"

托管对象的内存管理

"

强制的代码访问安全性

"

异常处理,包括跨语言异常

"

托管代码(指向公共语言运行库服务的代码)、组件对象模型 (COM) 对象以及非托管代码和数据(早先的动态链接库 [DLLs])之间的交互操作

"

对象布局的自动化

"

为开发人员提供的服务支持(如配置文件和调试)

公共语言运行库负责运行时服务,如语言集成,强制安全,以及内存、进程和线程管理。除此之外,它还在开发时期承担如生命周期管理,强类型命名,跨语言异常处理以及动态绑定之类的角色,以减少开发人员将事务逻辑转成可重用组件必须写的代码数量。

图 1 显示了公共语言运行库的基本构成。

http://img.microsoft.com/china/technet/images/itsolutions/msit/images/dotnet01.gifFramework 基本构成" />

图 1 :公共语言运行库的基本构成
查看完整的图像。

公共语言运行库支持超过 20 种开发语言。这些语言通过编译器编译成中间语言,而正是中间语言代码,通过为特定系统优化的实时 (JIT) 编译器,再转换成机器语言。其后,这些托管代码通过客户端设备上的公共语言运行库而执行。

优点

公共语言运行库为开发人员构建不同类型的的应用程序提供了可靠的基础。无论是 ASP.NET 应用程序,Windows 窗体应用程序,XML Web 服务,移动应用程序,分布式应用程序,或者一个基于此几类模型的混合应用程序,公共语言运行库都提供了下列优点:

"

简单化的开发过程

"

不同语言的代码集成写作

"

代码识别的安全性

"

部署过程中消除了被称之为“DLL Hell”的 DLL 版本问题

"

可重用组件的版本控制

"

通过实现继承而实现复用

"

对象生命周期管理

"

对象描述

公共语言运行库让设计含有跨语言对象的组件与应用程序变得更加容易。不同语言写成的对象可以互相通讯,他们的行为可以被紧密集成。举个例子,一个开发者可以定义一个类,然后使用另外一种语言从此原初类中派生出另一个类,或是调用原初类的方法。开发人员也可以将某个类的实例传递至另一种语言写成的其他类的某个方法中。这种跨语言的集成之所以成为可行,是因为面向运行时的语言编译器和工具使用了一个由运行库定义的公共类型系统,它们遵从运行库的约束来定义新的类型,或者建立、使用、保持和绑定类型。

在任何环境中开发程序,从 notepad.exe 到高级集成式开发环境 (IDE) 如 Visual Studio .NET,都可以使用公共语言运行库。

.NET Framework 类

.NET 框架包括了大量类,接口,以及值类型,使开发过程得以加速和优化,同时提供了系统功能的访问途径。为了实现跨语言操作性,.NET 框架类型遵从公共语言规范 (CLS) ,因此可以使用任何有编译器支持的语言。这就允许企业的 IT 部门在保留现有开发人员基础上得以拓展,迅速开始 .NET 应用程序的开发,或利用完全的互操作性对现有应用程序用 .NET 特性加以改进。通过跨语言的继承,代码的复用性提高了,也就减少了投向市场所需的时间。

.NET 框架类型是连接 .NET 的应用程序,组件与控件的基础。.NET 框架包含了完成如下功能的类型:

"

代表基本数据类型及异常

"

封装数据结构

"

完成输入/输出

"

访问加载类型的信息

"

调用 .NET 框架安全性检查

"

提供数据存取访问

"

实现胖客户端图形用户界面 (GUI) 以及服务器端控制的客户端 GUI Enable rich client-side Graphical User Interface (GUI) and server-controlled, client-side GUI

.NET 框架提供了丰富的接口集合,以及抽象与具像 (非抽象) 类。开发人员可以原封不动使用具像类,或者在许多情况下,派生出自定义的类。要使用接口的功能,开发人员既可以创建一个实现接口的类,也可以从某个实现该接口的 .NET 框架类中派生出类。

优点

更快的市场反应。曾经难于实现,或是需要第三方组件支持的应用程序特性,如今使用 .NET 框架后,可以通过少量代码得以实现。.NET 框架提供超过 4500 个类,封装了全功能的特性例如 XML,数据访问,文件上传,正则表达式,图像生成,性能监测与记录,事务处理,消息队列,SMTP 发信等,不一而足。

举例来说,Release Service Manager (RSM) 2.0,一种内部应用的业务应用程序,为 Microsoft 提供了对产品和发布数据的实时访问,支持用电子方式向制造商及合作伙伴提交产品信息。RSM 2.0 的设计是基于一种 n 层体系结构,其中中间层含有几个 Web 服务,使用中间层框架类实现与数据库通讯。通过构建 Windows 窗体智能客户端应用程序,用比修改以前版本 RSM 的 Web 界面还少的代价就完成了 RSM 2.0 的非常复杂的用户界面。好几个 .NET 框架类用来实现客户计算机上的文件操作。后台处理与多线程特性令程序对计算机性能的影响减少到最小。

技术要求

.NET 公共语言运行库必须安装在运行 .NET 应用程序的客户机或服务器上。框架库与公共语言运行库是用一个大约 21MB 的安装包发布的。在本文创作之时,该包可以从 .NET 框架 SDK 中安装。

Web 服务

一个 XML Web 服务是一个包装成单个实体的系列函数集,并发布出来为其他应用程序提供数据和服务。应用程序通过行业标准的万维网协议与数据格式,如 HTTP,XML,以及简单对象访问协议 (Simple Object Access Protocol, SOAP) 来访问 Web 服务,且不需要关心 Web 服务的具体实现方法。Web 服务是建立开放分布式系统的基石。

优点

Web 服务提供了如下优点:

"

互操作性。 任一 Web 服务可以与其他 Web 服务通过 SOAP 而实现交互。

"

普及性。Web 服务使用 HTTP 和 XML 进行通信。因此,任何支持这些技术的设备都可以发布或访问 Web 服务。

"

相对较低的进入壁垒。 Web 服务蕴含的概念十分容易理解,同时免费的工具包让开发人员能够快速创建和部署 Web 服务。此外,一部分工具包还允许现有组件轻松的表达为 Web 服务。

"

行业支持。 大多数主流软件公司都支援 SOAP 以及相关的 Web 服务技术。例如,Windows Server System 就是基于 Web 服务的,因此可以十分方便的将 Visual Basic 写成的组件部署为 Web 服务,同时被 IBM VisualAge 写成的 Web 服务所调用。

图 2 说明了如何链接 Web 服务来创建分布式应用程序。

一个使用 Web 服务的应用程序例子是 Account Explorer,这是一个基于 Web 的程序,为 Microsoft 雇员提供一个单一用户界面,使他们可以浏览储存于许多不同数据库中的自定义数据。用户可以通过 Web 服务访问 SQL Server 2000 数据库服务器。为了满足安全需要,Web 服务同样提供了对用户证书的验证。Account Explorer 的设计策略允许开发团队使用熟悉的行业标准,如简单对象访问协议 (Simple Object Access Protocol, SOAP) 和 XML,以继承他们的全部优点与 Web 服务相联。

Microsoft 发现了 Web 服务另一有价值的用途:改进 Microsoft 主网站的搜索功能。一个包含有关 Microsoft 的常见问题解答的 Web 服务现在已经集成入“搜索”结果(在“最适匹配”表单),以及通常情况下输入浏览器会产生 HTTP 404 错误的 URL(在智能 404 表单)中。因为“搜索”现在是一个 Web 服务而不再仅具单一功能,它可以在任意平台上用任意语言调用与部署,无论是在 Microsoft.com 内,还是在 Internet 上的任何一处。

.NET 远程处理

通信是跨网络或跨应用程序域对象的关键因素,这些对象又被称作远程对象。.NET 远程处理提供了一种强力高效的机制,允许对象之间跨越应用程序域实现交互。

存在于 .NET 应用程序及应用程序域之间的通信,通过负责在远程对象之间传送消息的通道而产生。一条消息被通道传送前,会首先被格式化程序格式化(编码或解码)。

.NET 框架支持 HTTP 和 传输控制协议 (TCP) 通道,以及 SOAP 和二进制的格式化程序。HTTP 通道使用 SOAP 格式化程序来传送消息,而 TCP 通道使用二进制格式化程序。这两种通道都可以自定义使用其他的格式化程序。第三方提供的通道同样是可行的。

HTTP 通道使用 SOAP 格式化程序来传送消息,而 TCP 通道使用二进制格式化程序。这两种通道都可以自定义使用其他的格式化程序。第三方提供的通道同样是可行的。

优点

.NET 远程处理的优点包括以下方面:

"

很容易与网络或 Internet 结合使用

"

透明的对象交互过程,藉由简单的编程模型与运行库支持

"

客户端可以与远程对象通过任意已注册的通道通信(通道必须先于对象注册)

Windows 窗体

Windows 窗体拓展了传统的完全桌面化的 Windows 应用程序,同时,Visual Studio 带来的开发体验将我们带入托管代码与公共语言运行库的世界。

优点

"

简单的部署。 Windows 窗体应用程序可以由传统的 setup.exe/msi 文件来安装,也可以通过 HTTP 由浏览器而动态分发,如同分发 ActiveX 控件那样,但仅当需要使用时才下载。与传统的单一 ActiveX 组件部署过程相比,此特性显著的简化了企业的部署过程。

"

改进的安全性。 Windows 窗体在公共语言运行库下运行,会强制应用程序执行代码访问的安全性策略。

对 Microsoft 内部的 Release Services Manager 应用程序来说,开发人员使用 Windows 窗体创建了一个强有力的智能客户端版本 (2.0),与基于 Web 的应用程序有着同样的伸缩性与可用性。在以前版本的 RSM 中,用户需要为每个文件点击三次,浏览三屏信息。使用 Windows 窗体后,用户只需点击两次就可以处理完一个组件中的所有文档,而不必浏览多屏信息。此外,由于 Windows 窗体提供的灵活性,整个应用程序并不包含在单一的可执行文件中,而是在几个 DLL 中,按需从 Web 服务器下载。这有助于在不必修改或重新编译现有应用程序的情况下添加新的显示与新的功能。

技术要求

为了在桌面机器上运行 Windows 窗体应用程序,必须在宿主计算机上安装 .NET 框架。

使用 Windows 窗体需要公共语言运行库,.NET 框架类库,为了简化开发过程,也需要安装 Visual Studio .NET IDE。

运行 Windows 窗体应用程序需要在客户端计算机上安装 .NET 公共语言运行库,无论该程序是通过传统的 setup.exe 安装的,还是从 Web 浏览器流式下载的。

Visual Studio .NET

要创建在 .NET 公共语言运行库和 .NET 框架类中运行托管代码的 .NET 应用程序,Visual Studio .NET 是首选的集成开发环境 (IDE)。它延续了 Visual Studio 的传统,允许开发人员编译以前的非托管 C++ 或 C# 应用程序。

优点

Visual Studio .NET 让快速开发应用程序 (RAD) 通过高效开发工具得以实现。一个紧密集成且统一的可视环境简化了开发 Web 应用程序的过程,降低了学习曲线。共享的超文本标记语言 (HTML),XML,以及样式表编辑器令使用任何 Visual Studio 语言开发 Web 应用程序变得十分容易,包括使用新的 C# 编程语言。

Visual Studio .NET 提供的结构完善且易用的编程模型是 Microsoft 出版社更新其 Microsoft Press Connections 网站的理想选择。开发团队发现,较之于其前辈语言,C# 有着更好的封装性与可维护性;该团队因此可以非常容易的创建项目中重要的动态页面。该团队同样能用 C# 写出多个批量运行的控制台应用程序。Visual Studio .NET 提供了简单化开发与调试批量数据的更新功能所必需的框架环境。

同样的,内部开发的 MS Contract 顾客反馈应用程序在 2.0 版本时移植到了 Visual Studio .NET 中。在迁移到 Visual Studio .NET 后,开发团队可以在 Visual Studio .NET 中做所有与数据库无关的开发,代替了以前混合使用 Microsoft Visual InterDev,Visual Basic,Microsoft Visual C++ 的开发过程。在单一环境中编译 MS Contracts 2.0 节省了开发人员在不同层次代码及不同工具中切换思维所花费的时间。

Consensus 开发团队则非常热衷于他们对 Visual Studio .NET 的第一手体验,如 LeadByte 首席技术官 (CTO) 所说:这不仅仅是凭直觉展示的 IDE,也不仅仅是一个强大的调试器或自动产生的 SOAP 内部类型,而是整个开发过程得以集成化,协助开发者写程序,基于能提供杰出生产效率的 .NET 框架。在这个项目的过程中,除了共享与托管代码,开发人员本身在开发公共组件时也变得效率更高。

Visual Studio .NET 允许开发人员快速构建新的托管代码的应用程序,面向 .NET 框架丰富的功能与类库。Visual Studio .NET 同样允许开发人员采用优化过的编译器出品传统的非托管代码的 C++ 应用程序,如 Microsoft Word 或 Microsoft Excel。

明确些说,开发人员可以用 Visual Studio .NET 做下面这些:

"

快速设计无所不及的 Web 应用程序。利用 Web 窗体,开发人员可以创建跨平台,跨浏览器的可编程 Web 应用程序,通过使用与以前构建基于窗体的桌面程序几乎相同的技能。Web 窗体在 Web 服务器端执行,提供快速的运行时性能,产生 HTML 3.2 兼容的文档,可以运行在任何浏览器中。

"

方便的使用 Web 服务来简化分布式计算。有了 Web 服务,开发人员就可以使用标准的 Internet 协议跨越电缆调用业务逻辑。Web 服务使用超文本传输协议 (HTTP) 作为基本的传输途径,允许功能请求穿过公司防火墙。XML 被用于格式化请求的输入输出参数,因此该请求不依赖任何特别的组件技术或对象调用约定。其结果是,Web 服务可以被任意语言访问,被任意组件模型使用,运行于任意操作系统中。

"

快速构建中间层业务组件。Visual Studio 的一个主要目的就是为基于服务器的开发提供 RAD 工具。Visual Studio .NET 为创建中间层业务逻辑带来的效率提升,如同 Visual Basic 为基于窗体的应用程序开发带来的改变一样显著。

"

构建可伸缩的,有效的解决方案。Visual Studio .NET 令依据默认生成可靠的应用程序和组件变得更加容易。例如,当一个开发者使用 Microsoft Visual C++ 构建 Web 应用程序时,新的活动模板库 (Active Template Library, ATL) 服务器可以提供显著的性能提升。

Windows Server System

Windows Server System 是 Microsoft 启用 XML 的一系列企业产品:Microsoft SQL Server 2000, Microsoft Exchange 2000, Microsoft BizTalk Server 2000, Microsoft Application Center 2000, Microsoft Commerce Server, Microsoft Content Management Server, Microsoft Host Integration Server 2000, Microsoft Internet Security and Authorization Server, Microsoft Mobile Information 2001 Server, Microsoft SharePoint, 以及 Windows Server 2003 家族。

优点

这些产品实现了以 XML 方便访问数据与功能的特性。这就使得将其与 .NET 框架集成变得更加方便,由于 XML 简化了分布式 .NET 程序中大部分的数据处理与访问问题。

TWindows Server System 集成式服务器软件的优点在 Microsoft 的 eSupport 倡导中显现无疑。该倡导提供了一个基本框架,旨在鼓励顾客通过 Internet 使用低成本且迅速有效的方法来联系取得 Microsoft Support 服务。对 XML 的利用为顾客与 Micrsoft Support 服务之间,以及 Microsoft 内部支持站点间的信息交换提供了充分的灵活性。有些事务处理过程接受格式化好的 XML 作为输入参数,使用 SQL Server 2000 的 XML 特性以顾及到灵活和可扩展的设计(新的数值可以在不接触或重新编译第二层组件的情况下传递并返回)。

SQL Server 2000 已经凭借 Windows Server System 集成服务器软件的广泛使用而受益匪浅。例如,SQL Server 2000 用作 Microsoft 的内部 Account Explorer 应用程序的数据库服务器。Microsoft 依赖于它基于 SQL Server 2000 的分布式数据仓库来有效管理与客户的关系 — 这里面储存着接近 1 Terabyte 的用户相关数据,以及 1500 万条 SQL 事务记录。

结论:托管的代码与数据

为了指定公共语言运行库的服务,托管的代码至少需要向运行库提供最小量的信息(元数据)。所有的 C#,Visual Basic .NET,以及 JScript .NET 代码都是默认托管的。 Visual Studio .NET C++ 代码默认情况下是非托管的,但可以通过指定一个命令行开关 (/CLR) 让编译器生成托管的代码。

与托管代码紧密相关的是托管数据,通过公共语言运行库的垃圾收集器分配与回收。C#,Visual Basic,JScript .NET 数据默认情况下是托管的。然而,C# 数据可以通过特殊关键词标记为非托管的。Visual Studio .NET C++ 数据在默认情况下是非托管的(即便使用了 /CLR 开关),但可以在 Managed Extensions for C++ 中使用 __gc 关键词将某个类标记为托管的。如关键词的名字所提示,该类的实例使用的内存委托给垃圾收集器管理。此外,该类还会成为 .NET 框架社群的共享成员,分享此种成员拥有的优势和限制。优势的例子如与其他语言写成的类的互操作性(如一个托管的 C++ 类可以继承于某个 Visual Basic 类)。限制的例子如一个托管类只能继承于一个基类。

为 .NET 框架编写的应用程序与控件都需要 .NET 框架安装在程序或控件运行的计算机上。.NET 框架的 1.0 版本提供了一个可再次分发的安装程序,包含了公共语言运行库以及运行.NET 框架应用程序必需的 .NET 框架组件。可再分发的 .NET 框架由单个执行文件提供,名为 Dotnetfx.exe。您可以手工在计算机上运行安装 Dotnetfx.exe,或者作为一个 .NET 框架应用程序安装的一部分运行安装。

部署 .NET 框架应用程序的公司会发现一次性部署 .NET 框架比将其包含在每个需要的应用程序中更加方便,最主要因为安装 Dotnetfx.exe 需要管理员权限。可以用不同的电子分发工具跨越安全的网络来部署 Dotnetfx.exe 以及当需要时部署 MDAC 2.6 或更高版本。

Systems Management Server (SMS) 让您用管理员身份在网络中部署软件。有关使用 SMS 在网络中部署 Dotnetfx.exe 的 Windows Installer 安装包的描述信息存在于《.NET 框架部署指南》中,包含了一份白皮书,为 Visual Studio .NET 用户描述了特定的部署情境。部署 Dotnetfx.exe 的不同情境包括了使用电子软件分发工具,手工从网络共享、内部网络或 Microsoft 网站的下载点安装,以及使用 Setup.exe Bootstrapper 示范来建立包含 Dotnetfx.exe 和 .NET 框架应用程序的安装项目。

 

引用自微软官方网

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有