购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.1 理解.NET Framework

.NET框架用来运行.NET应用程序,对于客户端应用程序,比如WPF或Windows Forms桌面应用程序,客户端电脑必须安装这个应用程序框架才能运行程序。对于服务器应用程序来说,在部署之前必须安装.NET Framework框架,比如要部署ASP.NET程序时,必须要先安装.NET Framework运行库,Web应用程序才能正常服务客户端的请求。

1.1.1 什么是.NET Framework

.NET Framework是微软主推的应用程序开发框架,由一系列的基础架构组成,支持多语言开发,比如C#、VB.NET、F#、C++。其中C#是.NET Framework框架上主要的程序设计语言。

.NET Framework由以下两个主要的组件组成。

· 公共语言运行库(Common Language Runtime,CLR) :负责控制.NET Framework应用程序执行过程中的方方面面,如管理内存、线程的执行、代码的执行、代码级别的安全验证、中间语言编译等。

· .NET基础类库:提供程序运行时特性和经常用到的上层服务,使用命名空间把这些功能按层次组织起来。

公共语言运行库是.NET的核心,CLR是.NET框架支持多语言开发的一个引擎,所有的.NET托管代码都在CLR中运行,如运行一个ASP.NET Web页面或者是一个Windows Forms应用程序。 .NET CLR就像是.NET平台上的一个大管家,负责管理语言的类型安全、垃圾回收、异常处理、向下兼容等语言特性,CLR为开发者提供了如下服务:

· 多语言集成开发:CLR可以在多种语言之间紧密无缝地进行交叉引用,例如可以用VB.NET开发一个基类,然后在C#代码中直接派生出一个派生类。

· 自动内存管理:使用.NET提供的垃圾回收机制,当对象或变量的生命周期结束后,不需要程序员显式地调用析构函数进行释放,CLR会自动释放它们所占用的内存。

img

图1.1 .NET 框架的整体结构图

其他的一些服务包含跨语言的异常处理、版本控制、安全性控制互操作及自描述组件等,.NET框架的整体结构如图1.1所示。

位于CLR的上层是.NET框架类库,提供了大量的已经预定好的功能供应用程序使用,这些类库使用命名空间进行良好的组织,按特定的技术集进行组织,比如与数据库访问相关的ADO.NET或者是WPF类库。

位于类库上层的是通用语言基础CLI,通用语言基础架构定义了构成.NET Framework基础结构的可执行码,以及代码的运行时环境的规范,它定义了一个语言无关的跨体系结构的运行环境,这使得开发者可以用规范内定义的各种高级语言来开发软件,并且无须修正即可将软件运行在不同的计算机体系结构上。

1.1.2 .NET Framework 4.0的新增功能

每一个版本的革新总会伴随大量新的功能特性出现,在.NET Framework 4.0中,包含了大量的新增功能,其中比较核心的特性如下。

· 动态语言运行时DLR:是一套基于.NET的类库,用来简化在.NET CLR上开发动态语言的工作。

· 整合托管扩展性框架MEF(Managed Extensibility Framework) :用来开发动态的、可扩展的应用程序的一组类库。

· 支持并行计算:包括对PLINQ的支持、并行语言语句等,对己有的基类库进行了扩充和增强,用来支持并行特性。

· ADO.NET的增强:增强了ADO.NET Entity Framework的一些功能。

· 对WCF和WF框架的增强支持。

.NET Framework 4.0中的新增功能可以参考MSDN中关于新增特性的介绍,从语言到类库,.NET Framework 4.0提供了大量与时俱进的功能,如多核并行计算特性、对开源项目MEF的整合等。

1.1.3 ASP.NET 4.0简介

ASP.NET并不是.NET平台上的一门语言,而是基于.NET Framework的一套Web开发框架,与Windows Forms或WPF一样,可以使用任何支持.NET平台的语言,如VB.NET或C#进行开发。

img

图1.2 动态Web页面的请求与响应示意图

如果说得更精确一点,ASP.NET是.NET Framework平台上的一门用于开发服务器端Web应用程序的类库。微软在服务器端Web页面上最早发布的版本是ASP技术,随着.NET框架的推出,相应地推出了ASP.NET版本。服务器端的Web页面与静态客户端页面,如纯HTML页面的最大不同在于动态页面功能,静态页面是固定不变的,而服务器端ASP.NET页面将由IIS服务器进行编译然后发布,其运行示意如图1.2所示。

ASP.NET与其他的Web开发技术(如JSP或PHP)的最大不同在于它的基于事件的Web窗体编程模型,这类似于Windows Forms的编程,通过对控件的各种事件进行编程,由于ASP.NET基于HTTP的无状态协议,因此为了实现这种交互式的编程模型,ASP.NET使用了多种技术来保存客户端状态,如典型的视图状态或者会话状态。

为了实现这种基于事件的编程模型, ASP.NET提供了一系列的服务器控件,在事件触发时,HTTP运行时将负责根据用户的动作来向服务器端发送事件通知。

注意: ASP.NET引擎会对服务器端对象的状态进行编码,将其状态保存在客户端的隐藏字段中,运行时会解码这些状态数据,并使用解码后的状态信息来创建服务器端对象的新实例。

ASP.NET编程模型提供了服务器端控件与HTML页面元素的映射,一些组件与HTML元素具有一一映射的关系,而大多数复杂的控件由多个HTML标签组合实现,如Calendar或GridView这类复杂的控件。

1.1.4 ASP.NET MVC简介

在过去,ASP.NET程序员一直想像Java一样具有类似Struts和Spring的MVC框架,微软公司推出了ASP.NET MVC框架,这对于很多模式爱好者或是面对复杂项目的程序员来说是一个令人激动的事情。

MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为3个基本部分:模型(Model) 、视图(View)和控制器(Controller) ,这3个部分的作用如下。

· 控制器Controller:负责转发请求,对请求进行处理。

· 视图View:界面设计人员进行图形界面设计。

· 模型Model:程序员编写程序应有的功能(实现算法等) 、数据库专家进行数据管理和数据库设计(可以实现具体的功能) 。

这种分离的模型有助于对ASP.NET应用程序与单元测试,同时对于大型且复杂的项目来说,便于多个程序员分工合作,也便于后期维护。 ASP.NET MVC提供了相较于传统的ASP.NET Web窗体编程模型的一种选择,但它不是对ASP.NET Web窗体程序的一种替代。

ASP.NET的MVC的实现有些特别,用户对ASP.NET页面的请求被直接重定向到控制器的方法中,这些方法称为控制器行为。控制器负责与模型进行通信,将数据传递给视图交由用户端进行显示,正是因为这样的编程模型,因此在开发ASP.NET MVC应用程序时,将需要关心URL路由、控制器返回的视图、同时因为视图与控制器这种分离的特性,在ASP.NET MVC中可以使用多种视图引擎来显示控制器传回的数据。

img

图1.3 ADO.NET Entity Framework架构图

1.1.5 ADO.NET Entity Framework概述

ADO.NET Entity Framework又称ADO.NET实体框架,是微软提供的ORM对象关系映射框架,这是一个类似NHibernate的ORM框架,目的是提高数据库编程的抽象级别,实体框架以实体数据模型(EDM)为主,将数据逻辑层切分为3块(概念架构、 映射架构与存储架构) ,其上还有实体客户端、数据上下文及LINQ 可以使用,如图1.3所示。

1.概念架构

所谓概念架构,是指定义了对象模型(Object Model) ,让上层的应用程序码可以使用面向对象的方式访问数据,概念层结构是由CSDL(Conceptual Schema Definition Language)概念架构定义语言所撰写的,一个CSDL概念架构定义语言代码片断如代码1.1所示。

代码1.1 CSDL概念架构定义语言代码片断

img
2.映射架构

映射架构负责将上层的概念层结构及下层的存储体结构中的成员结合在一起,以确认数据的来源与流向。对应层结构是由MSL(Mapping Specification Language)映射规范语言所撰写的,代码片断如代码1.2所示。

代码1.2 MSL映射规范语言代码片断

img
img
3.存储架构

存储层结构是负责与数据库管理系统中的数据表做实体对应,让数据可以输入正确的数据来源,或者由正确的数据来源取出。它是由SSDL(Storage Schema Definition Language)存储架构定义语言所撰写的,代码片断如代码1.3所示。

代码1.3 SSDL存储架构定义语言代码片断

img

当定义好实体数据模型CS/MS/SS之后,就可以利用ADO.NET实体框架的用户端来访问EDM,EDM中的数据提供者会向数据来源访问数据,再传回用户端,如可以使用LINQ to Entities查询实体模型中的数据。

4.微软Visual Studio 2010的实体生成工具

在微软Visual Studio 2010中,所有这些架构语言的定义都由“ADO.NET实体模型设计器”来自动生成,如在使用设计器创建好了实体模型之后,可以在解决方案资源管理器中用鼠标右键单击.edmx文件,在弹出的快捷菜单中选择“打开方式”菜单项,在弹出的对话框中选择“XML(文本)编辑器”选项,如图1.4所示。

在XML文本编辑窗口中,就会看到实体模型设计器中生成的架构代码,除此之外,Visual Studio 2010提供的模型浏览器提供了模型的树状视图显示,如图1.5所示。

img

图1.4 使用XML文本编辑器打开实体模型

img

图1.5 Visual Studio 模型浏览器

img

图1.6 Visual Studio表映射窗口

还可以使用Visual Studio 2010提供的表映射工具来查看实体与表之间映射的详细信息,如图1.6所示。

其实使用ORM的最大好处是与底层数据库的隔离,实现了真正的数据库无关性编程,便于将程序代码部署到任何目标数据库上,当然前提条件是这些数据库能支持ADO.NET实体框架,以后会有越来越多的数据库厂商开始支持ADO.NET实体框架,如MySQL、IBM、Sybase等。

1.1.6 ASP.NET 4.0 AJAX功能的增强

AJAX是异步JavaScript和XML的简称,是一种创建页面无刷新的交互式网页开发技术,AJAX由HTML、JavaScript、DHTML 和DOM 组成,使用AJAX可以获得更快的页面输出和局部页面更新的支持、具有丰富和高可响应的用户界面、减少服务器端资源的消耗。

ASP.NET AJAX框架提供了在ASP.NET中应用AJAX技术的支持,ASP.NET AJAX主要由两大部分组成,分别是服务器端组件和客户端组件。

(1)服务器端的组件包含:

· 脚本服务:包含对AJAX的脚本的控制,例如调试、全球化、本地语系化等。

· Web服务:设置Web服务的路径,让AJAX 客户端可以获取Web服务的参数。

· 应用程序服务:让AJAX客户端可以使用ASP.NET的成员角色服务和个性化服务。

· 服务器端组件:包含 ASP.NET AJAX 的4个主要控件。

(2)客户端的组件包含:

· 组件:非可视化组件的支持。

· 浏览器支持:为个别浏览器所提供的支持。

· 网络访问支持:对网络访问的支持,包含异步处理、JSON、WebRequest、Web服务与应用程序服务。

· 核心部分:对JavaScript的基础支持,例如事件、串行化、类型系统等。

在新近发布的AJAX 4.0中,包含了以下一些新增的AJAX功能。

(1)活动数据绑定:是指数据被实时绑定,即在数据源中的任何改变会立即更新到数据绑定控件,这是通过观察者模式来实现的, Sys.Observer接口提供了在ASP.NET 4.0 AJAX中的活数据绑定的技持。

注意:这类数据绑定可以使用单向或双向的绑定模式,对于单向绑定来说,如果模板已经输出后数据源发生了变更,输出数据不会被自动变更。

例如,下面的标记演示了如何在标记语言中指定单向绑定:

img

对于双向绑定来说,变更会自动改变己输出的模板,或者在模板中的改变会自动变更后台数据源的值,双向绑定的代码如下:

img

(2)支持Data Context和ADO.NET Data Service:AJAX在MicrosfotAjaAdoNet.js中包含了两个数据上下文,分别是Sys.Data.DataContext和Sys.Data.AdoNetDataContext,通过这两个上下文可以访问ADO.NET数据服务或WCF服务。例如,可以使用下面的代码访问ADO.NET Data Service:

img

代码中指定的set_serviceUri被用于连接到ADO.NET Data Service或者是WCF服务。也可以使用DataContext类来连接ADO.NET Data Service,代码如下:

img

当然最好是使用AdoNetDataContext,该类扩展了DataContext类,提供了特定于ADO.NET的特性,如标识管理、变更管理、支持层次式数据及乐观并发等。

(3)对观察者模式的支持:使得一个普通的JavaScript对象发生改变时,将能触发一个通知以便在代码中进行处理,观察者模式由Sys.Observer类提供。例如,下面的代码使用Sys.Observer类实现了对于employee的变更观察:

img

代码中一旦status属性状态发生变化,将会显示一个警告消息。

(4)新增的DataView控件:DataView 控件用于绑定活数据,可以使用这个控件开发一个动态数据驱动的用户控件。 DataView控件位于System.UI.DataView命名空间中,包含两个重要的属性,分别是Data和DataProvieder,前者被用于绑定到一个JavaScript对象,后者用于连接到WCF服务。下面的标记代码显示了如何使用DataView控件显示员工姓名和地址信息:

img

上面的代码中创建了一个DataView控件,绑定到dataArray数组中,然后分别指定绑定的属性为EmployeeName和Address。

1.1.7 在ASP.NET中使用jQuery

jQuery是一个快速且简洁的JavaScript类库,该类库用来简化对HTML DOM的遍历、事件处理、动画及AJAX交互。jQuery的目标是改变程序员写JavaScript代码的方式,可以从http://jquery.com/中下载jQuery这套类库的最新版本。

Visual Studio 2010版已经整合了jQuery的1.4.1版本,并且提供了对jQuery的智能感知的支持。在使用Visual Studio 2010创建一个Web应用程序项目后,可以在Script文件夹中看到用于jQuery的3个js脚本文件,如图1.7所示。

img

图1.7 jQuery脚本库

这3个文件的作用如下。

· jquery_1.4.1-vsdoc.js:用于为Visual Studio 2010提供JavaScript智能提示的类库文件。

· jquery-1.4.1.js:标准的jQuery类库文件,包含了详尽的注释。

· jquery-1.4.1.min.js:压缩后的jQuery类库文件,用于发布程序,该文件的功能与标准版类似,但文件较小。

要使用jQuery,只需要在页面中添加对min压缩版类库的引用,代码如下:

img

添加了引用之后,在HTML代码中就可以使用jQuery类库,并且Visual Studio 2010将会提供中文化的代码提示功能,如图1.8所示。

使用jQuery的优势是很明显的,这套类库提供了强大的功能函数,特别是选择器,另外可以解决不同浏览器对于javaScript脚本的兼容性问题,jQuery也可以实现丰富的UI等功能,在本章的实例中,将会介绍jQuery的具体使用方法。

img

图1.8 使用jQuery的代码提示功能编写代码 61f521LUVJO3orZAlXvrr/9aH2Lqje4T0PiXw6UrJlnPT6CFwEEn4NfckI41+KqK

点击中间区域
呼出菜单
上一章
目录
下一章
×