首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 开源 FAQ 第二书店 博文视点 程序员
频道: 研发 数据库 中间件 信息化 视频 .NET Java 游戏 移动 服务: 人才 外包 培训
    图书品种:235680
       
热门搜索: ASP.NET Ajax Spring Hibernate Java

创建优质软件需要什么?尽管可以在任何环境中编写出一流的代码,然而如果有合适的平台和工具,创件优质软件将变得大为容易。对于今天大多数Windows开发者来说,此平台非.NET莫属。尽管清晰地定义.NET曾经是一项挑战,然而如今已经非常清楚,.NET标签主要是指两样东西。

         .NET框架,包括通用语言运行时(Common Language RuntimeCLR)和.NET框架类库(.NET Framework class library)。CLR为构建应用程序提供了标准的基础设施,.NET框架类库则提供了一大套标准类及其他类型,以任何语言编写的.NET框架应用程序都可以使用它们。

         Visual Studio,一种用于创建Windows应用程序的集成开发环境Integrated Development EnvironmentIDE)。虽然这个工具能够用

    于建造直接运行于Windows之上的软件,但其主要目的在于帮助开发者创建.NET框架应用程序。Visual Studio支持若干种用以开发这类应用程序的编程语言,包括C#[1]Visual BasicVB)以及C++

¢ 观点:.NET命名之旅

_______________________________________________________________

今天,将“.NET”名字看成主要是指 .NET框架和Visual Studio是很自然的。然而,事情并非一直如此简单。2000年夏天当.NET初次亮相时,微软将这个术语滥用在很多东西上。当然,今天的.NET技术也包含在其中,但同时里头还含有些别的东西。例如,微软的很多服务器产品,包括SQL ServerBizTalk Server在内,都被划归为.NET企业服务器(Enterprise Servers),下场凄惨的 .NET My Services也被投放市场。甚至有谣传将来某个时候会发布Windows .NET以及Office .NET

但是,所有这些东西都有共同的技术基础吗?很遗憾,答案是没有。当微软最初向公众宣扬.NET时,它将该术语视作一个宽泛的商标,一个可以贴到该公司正在开发的几乎任何东西之上的商标。结果适得其反,这给其客户造成了极大的混乱和混淆。

幸好,事情变得越来越简单。现在.NET企业服务器被视作Windows服务器系统的一部分,因此它们被撕掉了.NET标签。.NET My Services逐渐淡出舞台,同时,Redmond的商标专家们反对把.NET商标贴到WindowsOffice上。今天,当某人提到“.NET”时,就是指.NET框架和Visual Studio

这些技术存在着多种版本。本书中描述的版本为微软在2005年末发布


.NET Framework 2.0版和Visual Studio 2005

The .NET Framework

.NET框架

.NET框架是创建Windows应用程序的基础

.NET的核心是.NET框架。它首次发布于2002年,给编写和管理Windows软件的人员的生活带来了巨大的改变。图1-1展示了框架的两个主要组成部分:CLR.NET框架类库。.NET应用程序总会用到CLR,并可以使用类库中任何所需要的部分。

CLR为所有.NET语言提供了一个通用基础

使用这个框架编写的每一个应用程序都依赖于CLR。撇开其他不谈,CLR提供了一套通用数据类型,担当C#VB以及其他所有针对 .NET框架而设计的语言的基础。开发人员会看到一个更加协调一致的环境,因为无论他们选择何种语言,都使用同一套基础设施。

1-1  .NET框架由通用语言运行时(Common Language RuntimeCLR)和 .NET框架类库构成

 

 

¢ 观点:.NET框架对决Java环境

_______________________________________________________________

今天,主流软件开发已经明确地分割为两大阵营。微软提倡.NET框架,成为一派;其他许多厂商支持Java环境,成为另外一派。每种技术都有它的爱好者和批评者,而且今天每种技术都有坚实的安装基础。

这两个相互竞争的世界有十分明显的相似。为了看清楚有多么相似,请将上图和图1-1进行比较。两个环境都支持相同类型的应用,而且都提供了一巨大的标准库来帮助构建那些应用。今天为人熟知的Java程序库是Java 2企业版(Java 2 Enterprise EditionJ2EEJEE),其中包括:用于Web scriptingJava Server PagesJSP),用于构建GUIsSwing,用于实现基于Web services通讯的JAX-WS(以前名为JAX-RPC),用于建造可伸缩的服务器应用程序的Enterprise Java BeansEJB),用于访问数据库的JDBC,以及其他类库。这些技术分别类似于.NET框架的ASP.NETWindows FormsASP.NET Web Services、企业服务(Enterprise Services)以及ADO.NETJava虚拟机与.NET框架的CLR也很像,甚至占优势地位的语言——微软的C#VB和与之相对的Java——都非常相似。

当然啦,它们之间也有差异。两者之间的一个明显差异是Java环境可运行于不同的操作系统上,.NET框架则专注于Windows。这种取舍很

清楚:移植性是很好,但却阻碍了与任何系统的紧密整合,而整合是有好处的。你不能什么都想要,至少你不能同时都得到。此外,基于Java的产品可以从多家厂商获得,但 .NET框架却是由微软独家提供。由于不同的Java厂商可以对核心规范做一些不同的扩展,因此开发人员弄不好就被锁定于单一厂商。尽管如此,跨越不同Java平台的移植性还是可能实现的,而 .NET框架却明确地将你的应用程序绑在微软这一方。

这种情况所造成的分歧和竞争终究是一件好事。每一个阵营都有好的观念,每一方都可以借鉴对方。如果这个世界只存在一种居绝对统治地位的技术,不管那是 .NET Framework也好,是Java也罢,都会导致愚蠢的垄断。但是如果出现一大堆选择,又将导致混乱的局面。两个强有力的竞争对手,每一方都努力胜过另一方,这种竞争刚刚好。

.NET框架类库为通用功能提供了标准代码

以任何.NET语言编写的应用程序都可以使用.NET框架类库中的代码。在这个类库提供的技术中,最重要的包括如下。

         ASP.NET专注于构建浏览器应用程序。

         Windows Forms:用于以任何基于CLR的编程语言构建Windows图形用户界面(graphical user interfacesGUIs)。

         ASP.NET Web Services(也被称为ASMX):用于创建利用Web services与其他应用程序进行通讯的应用程序。

         企业服务(Enterprise Services):提供分布式事务、对象实例控制,以及其他用以构建可靠的、可伸缩的应用程序的服务。

         ADO.NET集中于访问存储在关系型数据库管理系统(DBMSs)中的数据。


.NET框架类库内含的东西远比上述简单列表多得多,在它提供的其他服务中,还包括一系列安全服务、用于创建和处理XML文档、用于与使用旧的Windows技术(例如COM)构建的应用程序的互操作(interoperating)的机制。

.NET框架支持各式各样的应用程序

如这个简短描述所言,.NET框架类库可以用于构建许多不同类型的应用程序。而且由于.NET框架类库中的所有这些服务都建立于CLR之上,因此应用程序可视需要将它们联合起来使用。例如,以ASP.NET构建的浏览器应用程序,可使用ADO.NET来访问存储数据(stored data),使用企业服务(Enterprise Services)来实现分布式事务。

.NET框架应用程序由托管代码(managed code)构成

使用.NET框架(并因此而依赖CLR)建立的软件,通常被称为托管代码(managed code)。如图1-2所示,一个应用程序可以单单采用托管代码进行构建,完全依赖CLR以及 .NET框架类库的相关部分。一个应用程序也可以联合使用托管代码与普通非托管代码进行构建,必要时两者交互作用。显示于图中右侧部分的第二个选项对于现存应用程序尤其重要。今天,

1-2  一个应用程序可以完全采用托管代码构建,也可结合使用托管代码与非托管代码进行构建


大多数新创建的Windows应用程序完全采用托管代码编写,同时利用托管代码来扩展 .NET之前的应用程序也是很有意义的。尽管上图未作展示,但你仍然可以完全使用非托管代码创建新的Windows应用程序——并不是非得使用 .NET框架不可。

托管代码往往使用托管对象进行构建

这种代码通常是面向对象的(object oriented),它所创建和使用的对象被称为托管对象(managed objects)。一个托管对象可以使用(甚至继承)另一个托管对象——即使这两个对象是以不同语言编写。这正是 .NET框架类库之所以成为一个有效的基础设施的关键原因:以任何CLR语言编写的对象,都可以继承和使用这个类库中的代码。鉴于CLR所扮演的基础角色,透彻理解 .NET框架必须以透彻理解此运行时环境为起点。

Common Language Runtime

查看所有评论(0)条】

最近评论



正在载入评论列表...
热点评论