轉: ASP.NET進階應用程式 (2)

來源:互聯網
上載者:User
asp.net|進階   三層結構及其應用

  概念及環境

  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>

  我們看到,在這個頁面當中,沒有出現與資料庫互動的語句,這樣我們就很好的把資料操作封裝起來了


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.