.NET 2.0
在去年底
(2005
年
)
风光上市,就笔者来看,最大的新增在
Team System
架构,与丰富了
ASP.NET
的开发功能。而对广大的使用者来说,无疑是
ASP.NET 2.0
最让人兴奋。
Web
应用程序开发的新页章
ASP.NET 2.0
改良
1.x
版的设计,让
Web
应用程序的开发架构变得更有弹性,例如:
l
开发项目
(project)
以档案和目录为单位,不由项目文件启动。利用临时的
Web
服务执行测试,在开发环境免掉了
IIS(Internet Information Services)
服务。
l
使用免费的
SQL Server Express
版本数据库伺服程序,搭配自动建立的数据库档案,以存放各种服务的中继数据。
l
透过各种设定管理的工具,简化
web.config
和
machine.config
等设定档的管理。
l
经由各种档案独立且自动化的编译,让开发环境所提供的
IntelliSense
功能更聪明,部署个别网页更为简单,不会因为一两个网页,坏了整个网站的编译。
l
提供数量倍增的控件
(control)
。
l
...
种种设计,让开发者的环境需求较为轻便。而内建丰富的功能,让你我透过点选、拖曳就可以完成大部份的基础工作。
Web
应用程序在企业内越来越风行,随着信息教育普及,员工倚赖
IT
辅助日深,各种客制化小系统如雨后春笋遍布在企业内。虽然系统需求各异,但有许多共通的基本功能很重要,做起来却麻烦。例如使用者账号管理、登入、授权与加密,个人化网页,浏览路径导览,一致性的网页设计风格
...
等。
ASP.NET 2.0
内建这些功能,并透过预设的
Provider
,将实做这些功能所需之管理信息存放到自动建立的
SQL Express
数据库内。开发人员仅靠设定就可以替网站系统完成大部分的基础设施。
ASP.NET 2.0
除了提供很多新的内容,也改善了旧技术,例如
Web Part
。新的
Web Part
技术在
ASP.NET 2.0
网页中,搭配预设的个人化功能,可以让使用者随意布置网站版面,而开发者却不需要花费什么功夫。但这与以往透过
Visual Studio 2003
搭配额外下载的
Web Part
模板,开发在
Windows 2003 SharePoint Services(WSS)
使用的
Web Part
并不相同。或许在下一版的
WSS
中,将会全面采用
ASP.NET 2.0
的架构。
快速拼装的快餐系统
「
FrontPage
出现后,全世界产生了几百万张丑网页
」
曾在美国的大型研讨会听演讲者这么说,主讲人是希望藉此提醒基础知识的重要。笔者赞同深入技术的必要,但另一方面来说,
FrontPage
让人们敢于尝试建立网页也功不可没,毕竟要跨出第一步最难。就曾经拜访过的企业,不知多少小网站是起自于
FrontPage
,而后若该系统变得重要,再重新思考网站的定位,与进一步采用更专业地开发设计流程。而非技术人员用
FrontPage
愉悦地在网络上建立出自己的首页,更丰富了整个
Web
世界。
我相信
ASP.NET 2.0
所提供的各式服务,如
membership
、
role management
、
profile
、
web part personalization
、
site map...
等,再加上一大堆的控件,将会让企业内,部门级的网站系统开发更为相像。就像
Visual Basic
所造就的
Windows Form
充斥,或如上述,透过
FrontPage
来建立的初级网站林立。今后用
Visual Studio
所快速开发的
ASP.NET
网站也将随处可见,且都大同小异。
笔者在授课时,与学员的互动中可感受到,大家惊艳于
ASP.NET 2.0
大幅简化了基础功能的开发,但又惧怕日后需求变易时,难于驾驭。大堆头的功能越多,越容易拼装上阵。一旦用上了,要修改得精细合身却又不易。且下层绑定运作的机制必定复杂,非一时三刻可以搞懂。就好像骑脚踏车时,若有问题还可能自己维护。但汽车抛锚时,修理它会让你我却步。但,行远路时,你要开车还是骑脚踏车呢?
登堂入室
若你已玩过一阵
ASP.NET 2.0
,在此介绍一本关于该技术的好书:
Programming Microsoft ASP.NET 2.0 Application Advanced Topics
。这不是入门书,它未曾介绍如何无中生有建立一个
ASP.NET
网站,或一步步说明如何使用
Visual Studio 2005
开发工具,乃至于
C#
语法解说
...
等等。简言之,满是字,很少图。
就作者
Dino Esposito
的规划,若你是刚入门者,可能他的另外一本书
Programming Microsoft ASP.NET 2.0 Core Reference
比较适合。但依笔者来看,还是到坊间找中文书比较便宜,原文书太贵了
L
这本书着重解释基础机制的运作原理,例如:各种程序代码、定义、资源等不同档案的配置、动态编译、加载与释放,
Handler
与
Module
的设计,异步执行网页的方式,自行撰写控件等。
其功用比较像是工具书,让你在实做较为艰深的功能时可以参考专章。或是查阅一些细部的设定,例如透过第三章
ASP.NET Configuration
寻找繁多的
machine.config
或
web.config
等设定之格式与意义。
第四章的
Building Custom ASP.NET Providers
是要深入了解
ASP.NET 2.0
的一个重点,
Provider Model
[1]
应该是此版最值得研究的架构之一。其它的技术,如动态编译与加载、
Handler
与
Module
、
Web User Control
和
Custom ASP.NET Control...
等,
在本书虽都有深入的探讨,但毕竟它们自
ASP.NET 1.0
始就已经存在,
2.0
对这些部份算是小幅改良。
提供建置网站的程序基础架构时,如何能让开发者自由扩充是最难的项目。由于各企业多存在行之有年的数据结构与商业逻辑,如何让新建立的网站可以套用旧的资料,尽量保有以往对信息技术的投资。例如,旧的会员数据库已经存在,但如何让新撰写的
ASP.NET 2.0
网站可以使用到该数据库来认证会员身份,使用个人数据
(profile)
。抑或是网站导览的数据结构早已存在旧网站中,又如何让新的
SiteMapPath
或
TreeView
、
Menu
与
SiteMapDatSource
等控件与旧数据结合,好在以新技术撰写的网页中提供整合的网站导览。
ASP.NET 2.0
针对上述问题的解法是
Provider Model
。模型最具威力的地方就是从繁琐的表征中,抽象出核心运作之原理,在提纲挈领描绘出骨干后,你可以将相同的经验类推到各种功能开发中。就笔者来看,
Provider
对
Design Pattern
,对象导向分析、设计与撰写,组件化重用等方面,都做了绝佳的示范
[2]
。
ASP.NET 2.0
这次新增的
membership
、
site maps
、
profile...
等服务,都依照
Provider Model
的精神实做,也就是提供四个层次的架构:
l
与使用者互动的控件
(UI)
l
标准的程序存取接口
(API)
l
存取数据提供者
(Provider)
l
实体中继数据结构
在每一层,
ASP.NET 2.0
都提供了直接可用的对象。但你仍可依自己的需要,随意置换某个服务任一层的组件,而其它层的既有架构照旧使用。
除了上述内容之外,本书对于一些越来越热门的主题,例如
Ajax
和微软未来的
Atlas
,或是为行动装置开发网页,作者都稍有着墨,但并未深入探讨。
阅读建议
再次强调,此书不是入门书。若你是
ASP.NET 2.0
的生手,但某些场合让你亲炙了许多
ASP.NET 2.0
炫丽的功能,例如很酷的控件、
Master-Content
网页的设计,
Theme
与
Skin
的套用、整合自身与
Reporting Services
的报表
...
等,这些都在前述作者的另一本书内,本书并不适合你。
当你需要深入了解
ASP.NET 2.0
的基础原理,架构较为大型的网站,并希望重复使用自己曾经开发的模块或组件时,此书所讨论的主题:如
Handler
和
Module
、自订
Provider
、自订控件等,就很值得你深究。
建议你先看完第一、四、七、十章,分别了解
ASP.NET 2.0
的档案配置与编译、提供各种服务的
Provider Pattern
、
Web Part
架构,以及
site navigation
等技术。因为相较于其它内容,这四章或许会比较快用到
J
。其它的章节稍做浏览,让你往后钻研进阶功能时,知道在哪可以找到资源。
本书的范例很多,且彼此独立,在翻阅各章内容时,可以同时执行一下范例程序,先了解功能为何,是否吸引你进一步深研该章节。不过,由于一些应用程序的基本设定可能与你的系统环境不合,因此,若不熟悉
ASP.NET 2.0
的设定与执行,
SQL Server
数据库联机的方式,基本的
C#
语言,则可能很多范例执行起来会有问题
L
相关阅读
ASP.NET
的中文书籍向来是许多作者的最爱,你可以驻足书店,寻找自己喜欢的风格。在此,笔者仅建议你逛逛以下的网站:
l
MSDN
:
http://msdn.microsoft.com/asp.net/
。微软技术的大本营不可不去
J
,对于初学者而言,以下的内容蛮不错的:
http://msdn.microsoft.com/asp.net/learning/learn/newtodevelopment/default.aspx
而
MSDN
为本书作者
Dino Esposito
提供的网页如下:
http://msdn.microsoft.com/asp.net/community/authors/dinoesposito/default.aspx
l
http://www.gotdotnet.com/
分门别类地整理相关技术,而官方的讨论区也有相当丰富的内容
http://forums.microsoft.com/MSDN/default.aspx?SiteID=1
@
书名:
Programming Microsoft ASP.NET 2.0 Application Advanced Topics
@Dino Esposito
着
@Microsoft Press
@
售价:
1650
元
[1]
相關資料可參閱 MSDN 所提供的說明與原始碼範例, http://msdn.microsoft.com/asp.net/downloads/providers/。ASP.NET 2.0 內建的各種服務,其預設的資料儲存區都是 SQL Server,在此網址有提供 C# 原始碼,實做各種 provider 存取放在 Access/Jet 資料庫內的中繼資料。或許使用哪種 DB 格式並不重要,但一窺各種 Provider 的 C# 原始碼,卻是練功的好方法J
[2]
就筆者自己的感覺,它示範了 Factory、Adapter、Façade 等 design pattern。同時,ODBC、OLE DB、ADO.NET 似乎早已使用了這種設計方式,你可看到大家用的都是 driver、provider、adapter 等字樣J。不過,將各種 Web 網站服務的開發架構標準化,雖不是新想法,但的確是值得鼓勵與學習的新技術。