免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1398 | 回复: 0
打印 上一主题 下一主题

ASP.NET 2.0下的三层架构(一) [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-08-11 19:28 |只看该作者 |倒序浏览
两篇AListPart的文章开了个好头,下面的文章来自MSDN,因为以前面试的痛苦,所以一开始就和架构有关。一共有三篇文章,总标题是3-tier,到了子标题却成了Layer,和我那点架构的知识不符了,带着疑问去翻译吧。作者,可是牛人啊~

题目:数据访问层的创建   Scott Mitchell

        
源码下载

        介绍
        作为Web开发人员,工作中要不停的和数据打交道。数据库存储数据,代码查找和修改数据,而一张张网页再把它们显示出来。此文是关于ASP.NET2.0公共模式应用系列的第一篇技术指南,接下来我们即将用使用了Typed DataSet的DAL(Data Access Layer),和能增强客户业务体验的BLL(Business Logic Layer),以及由共享了页面输出的ASP.NET页体现的表现层(Presentation Layer),来创建一个软件架构。后端(backend)基础确定了,就要转入主题,说明如何从web应用程序显示,总结,收集和验证数据。这些指南着力于简洁明了,附带大量插图,一步步带领你了解相关的主题。每篇文章都附有C#和VB的源码(第一篇很长,另外两篇比较注意重点细节的讨论)。

        我们用了Microsoft SQL Server 2005 Express Edition版的Northwind数据库,它在App_Data目录下。另外,App_Data文件夹包含创建数据库的SQL脚本,以防用到其它数据库版本。这些脚本也能直接从Microsoft下载。如果用了SQL Server Notrthwind数据库的其它版本,必须更新应用程序Web.config文件的NORTHWNDConnectionString设置。我用Visual Studio 2005 Professional Edition,将此Web应用程序创建为基于文件系统(a file system-based)的网站项目。不过,所有例子都与Visual Studio 2005的免费版——
Visual Web Developer
兼容。

        这篇指南我们将从细节开始描述,一直到创建出DAL,接下来的第二篇我们创建BLL,第三篇我们讨论页面布局和访问。到那时会给我们展示出一个完整体系结构的基础。好了,开场白到此,打开Visual Studio开始今天的课程吧~

        第一步:创建Web项目,连接到数据库
        创建DAL之前,先要建网站和数据库。首先创建一个基于文件系统的ASP.NET网站。打开文件菜单选“New Web Site”,弹出对话框。选择ASP.NET Web Site模板,在Location下拉框里选择“File System”,然后选择适当路径并设置C#为默认语言。


图1  创建基于文件系统的网站

        新网站包括一个叫"Default.aspx"的ASP.NET页面和App_Data文件夹。

        网站有了,接下来在Visual Studio的Server Explorer里加入数据库引用。这样就可以从Visual Studio界面中向这个数据库添加新表,存储过程,视图等等元素了。你也能通过Query Builder以手工或图形的方式查看表数据或者创建自己的查询。再者,为DAL建立Typed DataSet之前,必须保证它们所对应的数据库被连接到Visual Studio。在我们提供连接信息的同时,Visual Studio会自动生成在Server Explorer里注册的数据库下拉列表清单。

        如果你安装了Microsoft SQL Server 2000和2005,那添加Northwind数据库到Server Explorer的步骤会不太一样。

        App_Data中数据库的用法
        如果没有安装SQL Server 2000或2005,或者有意避免添加数据库到数据库服务器,你可以使用Express版的Northwind数据,它就在源码的App_Data文件夹中(NORTHWND.MDF)。

        App_Data文件夹里的数据库自动添加到Server Explorer。如果你的电脑安装了SQL Server 2005 Express Edition,应该能在Server Explorer里看到一个叫NORTHWND.MDF的节点,你可以扩展和浏览它的表,视图,存储过程等等(见图2)。

        App_Data文件夹也支持Microsoft Access .mdb文件,和SQL Server一样,也会自动添加到Server Explorer。如果在项目里你不想用SQL Server,只要从Microsoft
下载它的Access版本
放到App_Data目录就可以了。切记,无论如何,Access数据库在功能上都不如SQL Server强大,并且它不是为网站应用而设计。还有,等级35+的几篇指南(me:不知道怎么翻译a couple of the 35+ tutorials)里提到的数据库级的特性都不被Access支持。

        连接Microsoft SQL Server 2000和2005的数据库
        另一种选择,你也可能连接到数据库服务器上的Northwind数据库。如果数据库服务器没有安装Northwind,你必须运行
安装脚本
添加它。

        装好以后,打开Visual Studio的Server Explorer,右击Data Connection节点并选择Add Connection。Server Explore在View菜单下,快捷键是Ctrl+Alt+S。Add Connection对话框打开后,你这里在这里指定服务器连接,验证信息和命名数据库。配置连接信息后单击OK,Northwind数据库就会被添加为Data Connection下的一个节点。打开这个节点能浏览数据库表,视图,存储过程等等。


图2  添加Northwind数据库的连接

        第二步:创建数据访问层
        操作数据的一个重要内容就是把指定的数据逻辑直接嵌入到表现层(在Web App中,ASP.NET页面组成表现层)。可能会在后台里写ADO.NET代码或者在前台使用用SqlDataSource控件。不管怎样,这些方法增加了数据访问逻辑和表现层的耦合度。推荐的方法是把它们两者尽可能分开。分离出来的数据访问逻辑成了DAL,具体上的表现是类库项目。这种分层架构的好处已经说过很多了(请参见文章末尾"Further Readings"的相关信息),接下来将详细描述。

        被指定到底层数据源的代码,应该属于DAL。如创建数据库的连接,发布SELECT,INSERT,UPDATE,DELETE命令等等。表现层不需要包含访问数据的代码,只能向DAL放送数据请求。DAL一般只有存取底层数据的方法。例如,Northwind数据库有销售产品的Products和产品分类的Categories表。在我们定义的DAL应该包含下面的方法:

  • GetCategories(),返回所有分类的信息
  • GetProducts,返回所有产品的信息
  • GetProductsByCategoryID,返回特定种类的产品
  • GetProductByProductID,返回某种产品信息

        调用这些方法时要连接到数据库,运行查询,然后返回结果。如何返回结果就显得很重要。可以返回查询得到的DataSet或者DataReader,但是理想的返回类型应该是strongly-typed对象。strongly-typed对象的模式(schema)在编译时严格定义(rigidly defined),反之,looely-type对象的模式在运行时之前还未确定。

        例如,DataReader和DataSet(缺省)就是loosely-typed对象,因为它们的模式是由数据库查询返回的列确定的。要取loosely-typed DataTable的某个列的写法:DataTable.Rows[index]["columnName"]。因为用字符串和序列号访问列名,所以我们说DataTable是弱类型(loos typing)。反之,强类型DataTable的每个列都是属性:DataTable.Rows[index].columnName。

        要返回强类型的对象,开发人员既可以创建自定义业务对象,也可以使用Typed DataSets。业务对象就是开发人员创建的类,这个类将底层数据库表的列映射为业务对象的属性。Typed DataSet也是一个类,不过这个类是Visual Studio在数据库模式的基础上生成,它的成员是strongly-typed的。Typed DataSet由扩展DataSet,DataTable和DataRow组成。除了strongly-typed DataTable,Type DataSet现在有了TableAdapter类,这个类为DataSet中的DataTable提供方法,并将修改结果以DataTable的形式传回数据库。

        注意  对比较使用Typed DataSet和自定义业务对象优劣的更多信息,请参考
这里


        这几篇指南提到的架构就要用到strongly-typed DataSet。图3演示了使用Typed DataSet的应用程序不同层间的工作流程(workflow)。


图3  所有的数据访问代码都交给DAL处理

        创建强类型数据集(Typed DataSet)和表示配器
        开始创建DAL之前,现给项目里添加一个Typed DataSet。在Solution Explorer里右击项目节点,选Add a New Item。在模板列表里选择DataSet并命名Northwind.xsd。


图4  给项目添加一个新的DataSet

        按添加后,弹出添加DataSet到App_Code文件夹提示,选Yes。Typed DataSet设计器打开ia,TableAdapter配置向导启动,可以开始添加第一个TableAdapter到Typed DataSet了。

        Typed DataSet




未完待续
水平有限,仅供个人参考。转载请注明出处和链接。


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/22676/showart_154283.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP