第一讲 Microsoft.NET概述

第一讲 Microsoft.NET 概述

2002 年 3 月 22 日 ,微软推出了他的 Microsoft Visual Studio.NET 的第一个正式版,这个时间的选择是意味深长的,因为这正是微软的开发平台 Visual Basic 诞生十周年之际,他宣告了 Visual Basic 的结束,也宣告了编程理念的一个新的时代的开始。

在正式版推出以前,微软已经花了两年的时间检验它的测试版,并且,对它的测试版进行了几次大的改造,所以,我们会发现 .NET 的正式版和测试版有很大的不同。但是,即使是测试版推出来的时候,这种新的编程理念已经在国外造成了很大的反响,但令人奇怪的是国内反响并不大。但是从去年开始,国内对 .NET 的需求开始升温,人们终于认识到,在今后十年, .NET 必将成为一种占统治地位的编程体系,它是过去十年人们对编程探索的一个总结,也是对未来十年编程体系的一个架构。

我们必然的会提出一个问题,什么是 .NET ,为什么需要 .NET.

新一代开发平台的需求,主要是技术环境的变化,自从上个世纪 90 年代末 Internet 出现以来,人们在不断的开发 Internet 软件,但是这些软件所基于的技术都是在早期形成的,例如: Windows 是上个世纪 80 年代的技术, COM 是 20 世纪 90 年代初实现的, Unix 的出现是 1970 年的事情, Java 最初是为家用电器开发的,后来转而应用在 Internet 上。

以上这些平台最大的问题,就是它们出现的时候都不是为了 Internet ,所有网络功能都是后添加上去的,使用起来总是不能尽如人意。

进入 21 世纪以后,人们急需要一种全新观念的开发平台,在这样的背景下,微软经过多年研究,终于推出了全新的 Visual Studio.net 平台,这预示着一种技术上的全面更新和突破,因为它从一开始就考虑了 Internet 。

下面我们来讨论一下有关的问题。


** 一概述 ** ** **

** 一、 ** ** .NET ** ** 企业级解决方案 **

.NET 平台的全称是 Visual Studio.net Enterprise Architect (企业架构),这样的命名对 .NET 是用来干什么,它有什么特点提供了很好的说明,换句话说, .NET 平台主要是用来实现企业级解决方案的。

企业( Enterprise ),是指以实现其价值为目标的组织机构。这个价值可以是商业价值也可以是非商业价值。组织机构可以是大、中、小型或者是政府组织。事实上, Enterprise 的含义,本来就包含了国内所分出来的企业和事业两种形式。

企业级应用体系结构是指用于用于企业和商业组织的应用软件分布式实现体系结构。这种分布式小到可以在企业各部门中分布,大到可以跨国分布。

当我们学习了 C#.NET 或者 VB.NET 语言,学习了 ADO.NET 数据库处理,学习了 ASP.NET 为基础的 Web 应用程序开发以后,往往还会有一些疑虑,难道这些内容就是企业级开发吗?当然不是,这只是为了实现企业级开发的技术基础,企业级开发还需要有更深层次的问题需要解决。本课程的任务,就是研究 .NET 环境下的企业级软件开发的技术实现。简而言之,是在前面 .NET 编程学习的基础之上,在企业级解决方案的层面更深入的讨论问题,也以说,不学习这门课程,你并不会真正懂得 .NET 。

在微软推出 .NET 以前,唯一能称之为企业级开发的就是 Sun 提供的 Java2 企业版( J2EE ),我们都知道, J2EE 在此前很多大型商业应用中有很好的表现,被看成是事实上的标准,并且,许多服务供应商也在编写插入和内容丰富的模块工具。正是由于 J2EE 的这种表现,大批 java 程序员才有如此广阔的施展天地。

但是,至少在 Windows 为基础的服务器上, J2EE 的表现还是比较成问题的,它的速度比较慢,消耗资源比较多,而且无法和微软的主流 Web 服务器( IIS )融合,人们急需要一种具备 J2EE 所有能力,但又和 Windows 服务器很好结合的开发和运行平台,正是在这样的背景下,微软的 Visual Studio.net Enterprise Architect 应运而生。

关于开发平台的选择,有很多是来自于经验,很难说哪种平台更好一些,一般来说,如果你的服务器是采用 Windows 平台,那么无论项目多大,采用 .NET 平台开发是最佳的选择。如果你的服务器是使用 UNIX 系统的大型计算机,那开发平台只有采用 J2EE 。如果你只是想做一个小型的网站,那就没有必要这么麻烦,你可以使用 ASP 、 PHP 甚至更简单的一些东西。

.NET 是微软推出来的企业级应用程序开发工具,因此,应用 .NET 开发,必须了解企业级开发的基本思想。当前,企业级用程序的开发趋势,是提供 N 层框架,以便于实现安全、可升级、可维护、实用的应用程序。


** 二、企业级应用体系构建思想的发展 ** ** **

企业级应用体系架构的发展,经历了漫长的道路,也可以说是在不断产生问题和解决问题的过程中发展到今天这个样子的,下面,让我们先回顾一下企业级架构发展的过程。

1 、单层架构的开发

早期的企业级应用依赖于单一的大型机,在大型机和个人电脑盛行的时候,应用程序的所有功能都是放在一个大的软件体上(所谓“通心粉”代码),作为个人电脑,这个程序就在这个电脑上,作为大型机,是通过网络终端和客户联系。由于当时系统自身升级比较慢,因此这种系统曾广泛应用于大型机和企业数据中心。

但是,这样的布局意味着系统资源使用不充分。执行不相关任务的用户被迫使用相同的系统资源,一旦有故障将导致所有任务的终止。

这种模式的一个改变,就是所谓的 C/S 结构的出现,在上个世纪 90 年代中后期,客户机 / 服务器( C/S )模式被认为是建立企业级应用程序的一个比较合理的解决方案。这种模式的合理性是它的分布式本质,而且比终端模式提供了更多的灵活性。

C/S 结构使远程数据流动成为可能,但它本质上还是属于单层结构,如下图所示。

表示层 逻辑层 数据访问层


数据库


但是, C/S 模式有其自身的陷阱,由于每台客户机都是按照独立的机器而配置的,这样就使用户部分相当的复杂,服务器任何的变化,都需要客户机作相应的改变,在过去 20 年里,这种情况越来越严重,由于企业业务的不断变化,使用这些程序就需要高级维护,这就是说改变业务逻辑、重新编译程序几乎成为一种日常的工作。

在个人计算机上,这种模式业只能工作于特别简单的要求之上,虽然升级应用程序只涉及一台机器,但是当越来越多的用户使用这个程序的时候,软件新版本的推行将会变得越来越困难。

更加头疼的是,当企业数据库比较复杂的时候,在客户端就要求安装多种驱动程序,而如果企业数据库的类型发生了改变,那么重新改变客户程序简直成为一项无法完成的工作。结果,在系统很大时,任何企业逻辑的改变,都可能成为管理上的噩梦,

2 、多层架构开发

为了解决上面的困难,自然会想到把数据访问层独立放置在另一个物理环境上,这样做的好处是,不但能够共享数据,而且数据访问逻辑层的任何变化都可以在一个独立的物理环境下改变,这就大大简化了系统更新和维护的工作量,提高了可升级和可维护性。

表示层 业务逻辑层


数据访问层


数据库


把数据访问层分离出来放置在一个独立的物理环境里面,优点不但可以共享数据,而且数据访问的任何变化,都可以在第二个物理层中进行,提高了可升级可维护性。

尽管人们做了不少尝试,但企业及应用解决方案还是没有一个标准。在 90 年代后期,微软推出的 DNA 编程模型,把企业级应用体系结构分为三层:

表示层


逻辑层


数据层


Win32 客户


HTML


IIS/ASP


COM/DCOM/COM+ 组件


SQL Server 、 Oracle 等


事实上,目前多层结构各个层面的功能一般是这样分配的:

表示层( Presentation Logic ):指示用户如何与应用程序交互,以及信息如何表达;

逻辑层( Business Logic ):装载应用程序的核心,主要是应用程序的业务处理;

数据访问层( Data Access Logic ):与数据库的连接,提取数据。

这样的二层结构仍然是比较胖的,由于企业逻辑封装在客户端,企业逻辑的任何改变都会带来极大的维护上的困难,例如在 Web 服务器上,业务逻辑的任何变化都要求重新编译 Web 服务器程序,这就给版本控制和系统升级带来了很棘手的问题。

解决这个问题的办法,是引入另一个独立的层,也就是业务逻辑层。

表示层


业务逻辑层


数据访问层


数据库


这就成为一个三层结构,由于各个层是处在不同的物理层面上,所以这样的体系成称为多层分布式体系结构。这时候的表示层只是请求和获得数据,提供用户界面,并不做其它更多的的事情,所以,这样客户端也称为“瘦客户端”。

三层模式的优势在于,它有很强的安全性、可开发性、可升级性和可维护性,事实上,表示层的开发者并不需要知道业务逻辑方面的任何事情,逻辑层的改变也不会影响到其它层的执行效率,同时系统的分离,更有助于设计时任务的分离,这对团队开发提供了现实的可能。

这个多的一层,有时候也称为应用程序服务器( Application Server ),或者称为中间件。

这种多层分布式工作机制,主要基于这样几点考虑:

a) 减少客户机的维护量,因为前台程序比较简单;

b) 把企业逻辑封装在通用的中间件应用服务器中,不同的客户都可以共享同一个中间层(包括 Web ),而不必每个客户都单独实现企业规则,避免了重复开发和维护的麻烦。由于客户程序相当瘦(这就是现在流行的瘦客户机概念),无论是开发还是发布,都变得简单了。

c) 便于升级,当中间件升级的时候,客户程序可能不需要变化;

d) 实现了分布式数据处理,把一个应用程序分布在几台机器上运行,可以提高应用程序的性能,也可以把敏感部分封装在中间件,为不同的用户设置不同的访问权限,增强了安全性。

e) 减少直接连接数据库的用户数目,减少费用。

3 、用模块实现系统的团队开发

设计一个系统的时候,我们自然会将一些概念集合在一起,把这些概念放在一个共享的模块里面,这样可实现一定数量的分离,独立于目前我们所讨论的层。它的功能可以划分为各种类,并用这些类组成包或者组件。因为降低了各个包和各个类之间的依赖性,所以这些功能可以被应用程序不同的部分使用。

通过定义和维护各个类和包之间的接口,可以替代类的实际实现而并不需要改变依赖于这个类的其它类。

下图用统一的建模语言( UML )简图显示了这个过程。

组件



状态行为


状态行为



状态行为


状态行为


.NET 开发的基本方式,是使用组件装配的方法,每一个开发者并不需要知道系统的整体状况,只需要知道自己开发模块的要求并尽可能好的实现它。

当一个系统需要开发的时候,首先由系统架构人员书写系统设计规范,提供每个类的技术要求。

然后,模块开发人员根据规范开发相应的模块,同时,测试代码开发人员编写模块的测试代码,一般这两部分人员是同时工作的,边开发边测试,直到模块满足技术要求。

<SPAN style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font

Published At
Categories with Web编程
Tagged with
comments powered by Disqus