国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

ASP.NET高級應用(2)

2024-07-10 12:57:45
字體:
來源:轉載
供稿:網友
,歡迎訪問網頁設計愛好者web開發。三層結構及其應用

  概念及環境

  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>

  我們看到,在這個頁面當中,沒有出現與數據庫交互的語句,這樣我們就很好的把數據操作封裝起來了
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 长寿区| 沽源县| 航空| 祁连县| 军事| 崇阳县| 利川市| 德化县| 仪陇县| 桃园县| 商城县| 遂川县| 洛川县| 交城县| 云浮市| 定安县| 新竹市| 沙坪坝区| 荥经县| 手机| 武城县| 府谷县| 灯塔市| 那曲县| 汝城县| 高阳县| 黄平县| 奇台县| 永年县| 竹溪县| 宁乡县| 遂溪县| 万年县| 大石桥市| 新和县| 德格县| 景泰县| 南雄市| 乐山市| 绥江县| 无锡市|