如果喜欢我就继续,如不喜欢就删掉吧。
5個實用網站功能速成
刊登於run!pc 1999/2月號
作者 喬篷科技 周世雄
本文重點
在前幾期的iis 4.0專欄當中,我們看到了威力強大的iis(internet information server)4.0之30個特異功能、ssl與數位認證、如何使用asp設計一個生動的網站、如何將web資料庫化、iis 4.0網站進階管理、如何將網站元件化、transaction server三層式架構技術速成、和sql server 7.0網站資料庫的技術等單元。本期將探討5個實用的asp網站功能。
筆者為微軟台北廳、經銷商訓練、technet等研討會講師,和微軟之友、run!pc雜誌專欄作者,著作有「asp網站熱門應用技術」、「微軟熱門web技術速成班」等網站網頁設計十幾本電腦書籍。現任「喬篷科技」公司總經理,從事internet、intranet之web資料庫應用設計、網站網頁規劃架設等服務。
iis 4.0示範網站:www.asp.com.tw
連絡e-mail:jackchou@tpts5.seed.net.tw。
5個實用的asp網站功能
前幾期學會了如何將網站asp化、資料庫化、和元件化的「網站3化」後,本期將教您如何善用5個實用的asp網站功能。
5個實用的asp網站功能如下:
transaction功能:「同生共死」的異動(transaction)功能。
ssl功能:安全傳輸。
message queue功能:非同步處理功能。
中文全文檢索功能。
郵件傳送功能。
網站如何加入transaction功能呢?
如何於您的網站加入異動(transaction)功能呢?
iis(internet information server)與mts(microsoft transaction server)緊密整合,資料庫更動可以有「同生共死」的異動(transaction)功能。
當asp程式中所有的資料庫更動都成功時,才算成功;有一個資料庫的更動失敗時,已經更動的資料庫資料將自動恢復(rollback),這就是所謂的異動(transaction)功能。
譬如從甲帳戶匯款到乙帳戶時,若乙帳戶的資料庫更動失敗時,已經更動甲帳戶的資料庫資料將自動恢復(rollback)。數個資料庫的資料更動,不是「同生」,就是「共死」。
並不是所有資料庫都提供異動(transaction)的功能,access沒有提供,sql server和oracle則提供異動(transaction)的功能。
asp程式中異動(transaction)功能的有效範圍為一個asp程式,換句話說,這個asp程式中所有的資料庫更動都具有異動(transaction)功能。
如何於asp程式中告訴iis要做異動(transaction)功能的處理呢?
方法為於asp程式碼當中的第一行加入「transaction=required」,告訴iis這一個asp程式使用異動(transaction)功能的處理方式,asp程式如下:
<%@ transaction=required language="vbscript" %>
若此asp程式內所有程式(包括更新數個資料庫)執行成功時,將呼叫ontransactioncommit()副程式。若執行失敗(包括更新任何一個資料庫失敗)時,將呼叫ontransactionabort()副程式。
您可以呼叫setcomplete方法表示執行成功,或呼叫setabort方法表示執行失敗。
譬如asp檔案如下:
<%@ transaction=required language="vbscript" %>
…
<% set obj1 = server.createobject("testobj.cls1") %>
<% = obj1.data3t(1,10) %>
<%
sub ontransactioncommit()
…
end sub
sub ontransactionabort()
…
end sub
%>
設計有transaction功能的元件
如何設計有異動(transaction)功能的元件呢?
方法為activex dll中使用asp的objectcontext物件,譬如說於visual basic 的activex dll定義如下:
dim objcontext as objectcontext
set objcontext = getobjectcontext()
執行成功時,呼叫setcomplete方法,執行失敗時呼叫setabort方法以釋放資源。
譬如說於visual basic 的activex dll,其visual basic程式碼如下:
function data3t(input1, points)
on error goto error1
dim objcontext as objectcontext
set objcontext = getobjectcontext()
…
objcontext.setcomplete
exit function
error1:
objcontext.setabort
end function
