日期:2013-11-14  浏览次数:20374 次

这篇文章很多地方借鉴了David Chappell的《Understanding .NET》和其他的一些网上的文章,但是也有一些我自己的文字。写这篇文章的本意是希望能用一些较少的文字能给读者对.NET一个全面的、但是并不深入的印象。这里谨对《Understanding.NET》的作者David Chappell及译者侯捷、荣耀还有其他的作者们表示感谢!

.NET概观
微软.NET的出现,可以说是一场地震。它将震撼Windows环境下工作的任何人,同时也将在范围更广的世界里产生余震。微软一次性的带给我们那么大的变化,要我们适应它,短期来看,将使我们的日子更加难过,毕竟要学的东西太多!然而一段我们掌握了这套新工具和新技术,大多数Windows开发人员将会发现,他们有能力在更短的时间内构建数更具威力、更有用的软件。

一. 什么是.NET
.NET是一个施用于一系列技术上的商标

微软将.NET视为数字化未来的一个远景和平台。如果更具体更准确地看待这种创新,则是把.NET视为一个商标,一个微软已经施行于数种不同技术上的商标。这些技术有些是全新的,提供新的服务和新的可能性,另一些则允许我们以最新的方式来创建我们今天已经知道的各类Windows应用程序。当然,也有一些.NET家族成员只不过是装饰着.NET牌子的现有技术的新版本而已。

.NET是软件成为一种服务的转移

.NET在这个方面的意义是最被广泛接受和理解的。“软件就是服务”的历年最初是在
1997年左右由Oracle的CEO Larry Ellison以及SUN的CEO Scott McNealy在网络计算机的概念大行其道的时候提出的。不过Oracle和SUN并没有真正将这个概念变为现实,他们的视角更多的集中于资源集中化方面。不过,当初听到Ellison和McNealy这番见解的公司——当然包括Microsoft,也认识到了这种见解说出了软件产业面临的一个巨大改变,.NET则是Microsoft对这种概念,这种变化作出的自己的反应。

.NET是一个新的编程模型——也就是说是Internet平台

Micorsoft正在趋向于将.NET看作一个系统。在表面下,它包含了两种不同的编程模型:一个是Web服务编程模型,另一个是系统编程模型。

Microsoft开始把.NET系统编程模型作为.NET整体的一个组成部分。计划最终以此代替现有的组件对象模型(Component Object Model,COM)以及Windows应用程序编程接口(APIs),这个现在还没有最终正式定名的模型使用一系列新的基础类。



.NET之中最重要的新技术首推Web Services。如其名称所示,Web Services提供了某些功能,让我们得以通过网络加以调用。大多数顶着.NET商标的技术都可以在某种程度上直接支持Web Services。然而.NET绝非仅仅是Web Services而已,微软置于.NET商标伞下的技术包括:

.NET Framework:包括通用语言运行层(Common Language Runtime,CLR)和.NET框架类库。CLR是建造一系列新应用程序的标准基础,.NET类库则为许多基于CLR的应用程序提供一个新的标准开发环境。这个类库,包含的技术有:ASP.NET,最新一代的ASP(Active Server Pages)技术;ADO.NET,最新一代的ADO(ActiveX Data Objects)技术;以及对“构建和使用Web Services”的支持等等。微软还发行了一个.NET Framework精简版,名为.NET Compact Framework,用于小型设备如个人数字助理(personal digital assistants,PDAs)上。

Visual Studio.NET:支持多种可使用.NET Framework的编程语言,包括Visual Basic;一个增强版的C++;一个基于.NET的Java替代语言J#,以及一个为.NET Framework量身打造的全新语言C#。

.NET My Services:一组服务,允许用户存储和访问位于互联网可达之服务器上的个人信息,例如日程表和地址簿等等。这些服务还提供诸如认证(Autherntication)这样的通用功能,使客户能够证明自己的身份;也提供了一个“向不同设备上的客户发送消息”的方式。

.NET Enterprise servers:这是一系列软件服务器,包括、Exchange Server 2003、SharePoint Server 2003、Project Server 2003、BizTalk Server2000,Application Center 2000、Commerce Server 2000、Host Integration Server 2000、SQL Server 2000等等。除了几个叫2003的产品外,其他的很大程度上与这里说的.NET技术没有什么关联,但是显而易见,在未来的版本当中,他们将全部基于.NET技术构建,上面几个叫2003的版本已经证明了这一点。

二. .NET的特点
1. 高效率开发
通过.NET Framework为我们提供的一个庞大而有结构清晰的类型,使得我们的编程变得异常轻松,还有自动垃圾回收机制等等一系列新的特性,可以让我们的程序员腾出更多的精力放在考虑如何实现客户所需要的业务逻辑上,而不是计算机的控制上为内存如何分派之类的事情头痛。甚至无论你是开发哪一种应用程序,无论是C/S、B/S、还是智能设备亦或是数据库编程,都可以使用你最熟悉的一种编程语言而不需要去学习诸如C++、ASP、SQL等等各不相同的多用语言。.NET还带来了多种语言之间的无缝集成,例如一个系统同时可以采用多用编程语言来开发,VB.net编写的类可以方便的再用C#继承。这些都大幅了提高我们的开发效率。

2. 多平台特性
尽管不可否认,到目前为止.NET应用程序还只能运行于Windows平台上,但.NET天生就为跨平台应用做好了准备,据我们所知,微软自己还有第三方开发商已经在为.NET程序运行在Unix、OS2、Linux等等系统上工作着(如开源项目Mono)。我们还可以看到我们的.NET应用程序将可以运行在PDA甚至手机上。不久的将来,我们将可以只关心我们的应用程序将如何满足客户的需求而不用考虑基于何种平台来开发。

3. 无接触部署
借助于.NET的反射特性,.NET应用程序都可以精确的描述自身。这就使得无接触部署成为可能,.NET应用程序无需在注册表中储存信息,只需简单的XCOPY便可正确的在用户的机器上运行,这使得企业的部署成本将会大为降低。

4. 消除Dll Hell
同样是基于.NET的反射特性,每一个应用程序将可以清楚地知道自己需要使用哪一个Dll,同一个Dll的不同版本可以彼此和平共处,从而彻底消除让我们头痛的Dll Hell。

5. 可信赖计算
长期以来,微软系统的安全性问题一直备受诟病。但终于,比尔盖茨决定改变这种现状。在.NET中,这种安全性的考虑直接放到了代码级。通过一系列的技术,如代码访问安全(Code Access Security)、基于角色的安全、强名称(Strong Name)、权限和权限集等等,最大限度地保证了系统的安全性。

三. .NET Framework体系结构
.NET是分层的、模块化的,一及层次结构化的。.NET Framewok的每一层都是一个抽象层。其中,.NET语言是顶层,也是最为抽象的一层。而公共语言运行库则位于底层,它是最不抽象、最靠近本地环境的一层。这一点很重要,因为公共语言运行库需要与操作环境紧密合作来管理.NET应用程序。.NET Framework被分成了多个模块,每个模块都有它们各自特定的责任。最后由于高层只从底层请求服务,所以.NET又是层次结构化的。



四. WebServices(Web服务)
要想透彻理解.NET,就必须透彻理解Web Services,还必须领会刚刚列举出来的每一种.NET技术的基本要素。

今天,Web应用程序的典型访问方式为GUI

近十年来,软件世界没有什么比Interne和WWW带来的冲击更大。区区20年以前,还是大型机的时代。那时只有极少数人能够使用计算机,而且只能通过邻近的信息产业机构。个人电脑和图象化用户界面的出现却改变了一切,将计算机普及到了千家万户,并使它真正成为一种可以大工业生产的商品。企业界意识到,由个人电脑联结的网络和基于个人电脑的服务器可能改变他们的商务模式,而个人电脑对消费者来说也迅速地成为新兴的娱乐媒介。然后,因特网接踵而至。它革命性地改变了我们的交流方式,创造了丰富而新颖的信息和娱乐资源,并且在“商务”的前面加上了一个代表“电子”的字母“e”。今天,全球有将近三亿人口正在使用因特网。国际