- 热门文章:
- · ASP.NET高级应用(1)
- · Net 是未来的趋势, 为什么?
- · 迁移到 ASP .NET:需考虑的重要问题
- · ASP+与VB.Net问答QA总汇
- · 基于.NET的Web应用框架构建模式
- · Observer模式深度探索
- · VSS控制存储过程,及其asp.net的远程调试
- · 简介使用ASP.NET访问Oracle数据库的方法
- · ASP.NET编程中的十大技巧
- · ASP.NET Whidbey中personalization和membership的一些特征
- · 使用更精简的代码保证 ASP.NET 应用程序的安全
- · ASP.NET Whidbey 中新的代码编译功能
上一篇:ASP.NET高级应用(3) >>
ASP.NET高级应用(2)
概念及环境
ASP.NET中的三层结果开发方法,其实其思想跟Java的一样。Java中的三层架构为前端的html、Jsp、Servlet,中间层为JavaBean、EJB,后面为数据库服务器。而在ASP.NET中,前段为html、asp、aspx等,中间层为有.vb、.cs等文件编译而成的.dll控件,后面为数据库服务器。
在我们的三层架构中,我们的数据库层通过中间层来连接以及操作,前端给中间层传递参数,并接受中间层的参数。在我们的ASP.NET中,我们主要关注的是我们的中间层与前端的数据交互。
我们一般统称中间层为组件,组件可以用.vb编译而成,也可以用.cs文件编译而成。中间层一般为.dll文件。微软的.NET技术在这个方面比他的以前的任何版本都要来的简单,这也是它的一打好处之一。以前我们要注册一个.dll文件,有是注册有是重启动,而在.net上,我们的.dll文件拿来就用,不用再考虑注册的问题。
在没有Visual stutio.net之前,我们用写成的.bat文件来把.vb和.cs文件编译成.dll文件,在.bat文件里,我们写入编译的文件名称、相关联的名字空间、要编译成的文件名以及对应的命令名称,然后运行就行了。听起来很复杂,这也是很多初学者在编译第一个.dll文件时所害怕的事情。但是做起来很简单的。下面我们举一个例子来说明.bat文件的写法,假设我们有一个文件名为:saidy.vb的文件,我们要把它编译成saidy.dll的文件,其中用到System、System.Data、System.Data.SQL名字空间,我们可以创建一个dblink.bat文件,内容如下:
vbc /out:..\bin\saidy.dll /t:library /r:system.dll /r:system.data.dll / r:system.data.sql.dll
dblink.vb
这是编译.vb程序的命令,如果是编译.cs文件,则命令会是不一样,我们假定有一个saidy.cs的文件,按照上面的要求,我们编译如下:
cs /out:..\bin\saidy.dll /t:library /r:system.dll /r:system.data.dll / r:system.data.sql.dll
dblink.cs
我们可以看出来,大部分是一样的。
当然,如果我们有微软公司的vs.net编程环境,则我们不用这么麻烦,我们可以象编译vb或者vc程序一样方便的编译.dll文件。微软公司的vs.net是一个集大成者,把各种语言整合起来,在这个环境下都可以写出不同语言的程序。具体的应用我们会在专门的章节上介绍的。
一个基于三层架构的例子
我们通过具体的例子来说明三层架构的应用,我们建一个小项目来说明这个问题。有时为了安全性,我们通常把与数据库的连接用一个动态连接库文件封装起来,这样我们就要把写数据库连接的.vb或者.cs文件编译成动态连接库.dll文件。甚至我们把对数据库的相关操作页编译成.dll文件。
下面是我们的与数据库连接以及操作的文件dblink.vb的主要部分,对数据库的连接:
Dim dbl As SQLConnection
对数据库的操作,我们把它写在一个方法里面,在返回相应值:
Function getdata() as DataView
Dim sComm as SQLDataSetCommand
Dim sDS as DataSet
Dim sStr as String
dbl = New SQLConnection("server=localhost;uid=sa;password=;database=howff")
sStr = "select * from color"
sComm = new SQLDataSetCommand(sStr,dbl)
sDS = new DataSet()
sComm.FillDataSet(sDS,"color")
Return sDS.Table["color"].DefaultView
End Function
我们第六个语句就用到上面的与数据库的连接变量,我们这个函数的功能是从表"color"中选出所有的元素,并返回表结构的形式。完整的代码如下:
Imports System
Imports System.Data
Imports System.Data.SQL
@#创建名字空间
Namespace db
@#创建一个类
Public Class dblink
@#建立数据库的连接
Dim dbl As SQLConnection
@#方法
Public Function getdata() As DataView
Dim sComm As SQLDataSetCommand
Dim sDS As DataSet
dbl = New SQLConnection("server=localhost;uid=sa;password=;database=howff")
Dim sStr As String
sStr = "select * from color"
sComm = New SQLDataSetCommand(sStr, dbl)
@#填充数据
sDS = New DataSet()
sComm.FillDataSet(sDS, "color")
@#返回
Return sDS.Tables("color").DefaultView
End Function
End Class
End Namespace
我们再写一个前端掉用页面saidy.aspx,我们首先要引入我们创建的名字空间:
<%@ Import Namespace="db" %>
在页面装入的时候,我们用此方法:
Sub Page_Load(Sender As Object, E As EventArgs)
@#建立一个新的对象
Dim newdb As dblink
newdb = new dblink()
@#数据来源
Products.DataSource = newdb.getdata()
@#数据绑定
Products.DataBind()
End Sub
下面看看我们完整的代码(advanceapp\dblink.aspx):
<%@ Import Namespace="db" %>
<html>
<script language="VB" runat="server">
Sub Page_Load(Sender As Object, E As EventArgs)
@#建立一个新的对象
Dim newdb As dblink
newdb = new dblink()
@#数据来源
Products.DataSource = newdb.getdata()
@#数据绑定
Products.DataBind()
End Sub
</script>
<body style="font: 10pt verdana" bgcolor="CCCCFF">
<BR><BR><BR>
<CENTER>
<h3>.NET->三层架构!</h3>
</CENTER>
<BR><BR>
<CENTER>
<ASP:DataList id="Products" ShowHeader=false ShowFooter=false RepeatColumns="2" RepeatDirection="horizontal" BorderWidth=0 runat="server">
<template name="itemtemplate">
<table>
<tr>
<td width="150" style="text-align:center; font-size:8pt; vertical-align:top;
height:50">
<p>
<%# DataBinder.Eval(Container.DataItem, "id") %> <br>
<%# DataBinder.Eval(Container.DataItem, "name", "{0:C}").ToString() %>
</td>
</tr>
</table>
</template>
</ASP:DataList>
</CENTER>
</body>
</html>
我们看到,在这个页面当中,没有出现与数据库交互的语句,这样我们就很好的把数据操作封装起来了
下一篇:ASP.NET高级应用(1) >>
相关文章:
- · ASP.NET的缓存技术
- · ASP.net 中的页面继承实现和通用页面的工厂模式的实现
- · ASP.NET下MVC设计模式的实现
- · 页面无限跳转间如何保存页面状态 (3)
- · 页面无限跳转间如何保存页面状态(2)
- · 页面无限跳转间如何保存页面状态(1)
- · 基于asp.net的webmenu的数据操作(5)
- · 基于asp.net的webmenu的数据操作(3)
- · 基于asp.net的webmenu的数据操作(2)
- · 基于asp.net的webmenu的数据操作(1)
- · 十天学会ASP.net之第十天
- · 十天学会ASP.net之第九天
- · 十天学会ASP.net之第八天
- · 十天学会ASP.net之第七天
- · 十天学会ASP.net之第六天
- · 十天学会ASP.net之第五天
- · 十天学会ASP.net之第四天
- · 十天学会ASP.net之第三天
- · 十天学会ASP.net之第二天
- · 十天学会ASP.net之第一天
- · 图片上传到数据库并显示(C#+Access)
- · 关于ASPNET在IIS一些问题的经验总结
- · 认识Whidbey
- · 15秒:为ASP.NET应用缓存Oracle数据
- · 用ASP.Net写一个发送ICQ信息的程序
- · ASP.NET 开发聊天室程序(英文)
- · asp.net高级教程(续)
- · asp.net高级教程
- · ASP+与ASP有什么不同
- · NET 简介、Hello World 和 .NET Runtime 一瞥
- · ASP.NET 入门的五个步骤
- · 深入讲解 ASP+ 验证
- · ASP.NET Pre-Compilation and Keep-Alive
- · 动态创建DataGrid的模版列
- · 让Asp.Net输出图形
- · 文件下载的权限控制(asp.net)
- · 大数据量下的分页
- · 从 .NET 程序集提供图像(二)
