複製鏈接
請複製以下鏈接發送給好友

MTS

(Microsoft Transaction Server縮寫)

鎖定
MTS,Microsoft Transaction Server縮寫,用於在程序級進行事務操作多線程程序能夠使程序的不同部分同時運行。
外文名
MTS
全    稱
Microsoft Transaction Server
用    途
用於在程序級進行事務操作多線程程序能夠使程序的不同部分同時運行
MTS仿真圖 MTS仿真圖
Windows*.Net*和XP*等操作系統和許多科學應用都是多線程程序。當創建應用時,開發人員必須創建代碼,以便線程能夠獨立運行,不互相干擾。
是微軟為其Windows NT操作系統推出的一箇中間件產品,由於它具有強大的分佈事務支持、安全管理、資源管理和多線程併發控制等特性,使其成為在Windows平台上開發大型數據庫應用系統的首選產品
由於MTS屏蔽了底層實現的複雜性,極大地簡化了這類應用的開發,程序員可以將精力集中在業務邏輯上,因而有效地提高了軟件的開發效率。本文將通過實例介紹用VB和MTS開發多層數據庫應用系統的方法和步驟。
基於MTS開發多層數據庫應用系統的步驟是:第一步,開發MTS組件提供服務,程序員可以用任何一種支持COM的語言編寫MTS組件,如VB、VC、Delphi和COBOL等;第二步,分發MTS組件到MTS軟件包中,並且把MTS軟件包安裝到MTS環境之中;第三步,編寫客户端程序調用執行在MTS環境之中的MTS組件,以取得服務。詳細開發過程如下:
1. 創建MTS組件
本例中我們將編寫一個MTS組件,運行於中間層的應用服務器上,由它建立與數據庫服務器的連接,完成對某課程的授課教師信息的查詢。
啓動Visual Basic,新建一ActiveX DLL項目。選擇工程選單,在引用窗口中選中Microsoft ActiveX Object Library 和Microsoft Transaction Sever Type Library。按“確定”將這兩項加到項目中。
從工程選單中選擇工程屬性,在通用選項中將項目名稱改為MtsDemo。線程模塊選擇分部線程DLL,將類模塊名稱改為Course,將下列程序加入類模塊的通用聲明中:
Option Explicit
Public Function ListCourses( ByVal mcourse as String) As ADODB.Recordset
On Error GoTo ErrorHandle
Dim strSQL As String
Dim objContext As.ObjectContext
Set objContext = GetObjectContext()
' 建立事務性組件
Dim objADOConn As ADODB.Connection
' 利用ADO訪問數據庫
Dim objRS As ADODB.Recordset
Set objADOConn = New ADODB.Connection
With objADOConn
.connectiontimeout=10
.connectionstring="Provider=SQLOLEDB.1;UserID=sa;Initial Catalog=DBcourse"
' 通過OLEDB建立與數據庫的連接
.Open
End with
Set ObjRS = New ADODB.Recordset
StrSQL="SELECT
Teacher. name,Teacher.sex,Techer.age,Teacher. edu_level,Teacher.tiltle"
strSQL=strSQL&&" From Teacher,TeacherCourse,Courses "
strSQL=strSQL&& "Where Teacher.teacher_NO=TeacherCourse.teacher_no
and TeacherCourse.course_no=Courses.course_no
and Courses.course like'" && mCourse && "'"
'“like”關鍵字可實現模糊查詢
ObjRS.Open strSQL, ObjADOConn
' 進行數據庫查詢
Set ListCourses = ObjRS
ObjContext.SetComplte
' 若事務成功完成,則提交該事務
objADOConn.Close
Set objADOConn = Nothing
Set objRS=Nothing
strSQL = ""
'關閉數據庫連接,釋放所有對象
Exit Function
ErrorHandle:
ObjContext. SetAbort
Set ListCourses=Nothing
' 若事務失敗,則回滾事務
End Function
2. 註冊MTS組件
所有運行於服務器端的ActiveX DLL都應在MTS中註冊,這是通過Transaction Server Explorer完成的。其過程如下:
(1)創建軟件包
軟件包是在同一進程中運行的組件集合,不同軟件包中的組件以進程隔離的方式運行在隔離的進程中。在創建軟件包時,開發者應儘量把共享資源的組件分配在同一軟件包內;考慮到軟件包中各個組件所共享的資源類型,可以把那些共享“昂貴”資源(如對某個特定數據庫的連接)的組件編為一組。
(2)向軟件包添加組件
在想安裝組件的包中選擇Component文件夾,單擊Install New Component(s) 按鈕,當提示添加文件時找到新生成的MtsDemo.dll文件將其加入。
3. 編寫客户端程序
創建一個標準EXE項目。選擇工程選單,接着選擇引用,在引用窗口中選中剛才創建的MtsDemo,加入到項目中。
窗體中添加如下內容:
名稱 標題
標籤 label1 請輸入課程名:
文本框 txtcourse
命令按扭 cmdok 查詢
數據網格dgresult
再將下列程序加入通用聲明中:
Private Sub cmdOK_Click()
Dim rsResult As ADODB.Recordset
Dim objMts As Object
Dim mCourse As String
mCourse = Trim(txtCourse.Text)
Set objMts = CreateObject(mtsDemo.Course)
Set rsResult = objCourse.ListCourses(mCourse)
If rsResult.EOF Then
MsgBox ("無滿足條件的記錄!")
Exit Sub
End If
Set dgResult.DataSource = rsResult
Dgresult.Columns(0).Caption = "姓名"
Dgresult.Columns(1).Caption = "性別"
DgResult.Columns(2).Caption = "年齡"
Dgresult.Columns(3).Caption = "學歷"
DgResult.Columns(4).Caption = "職稱"
DgResult.Refresh
Set objMts = Nothing
End Sub
4. 運行客户端
首先將編寫好的客户端程序進行編譯發佈,然後在Microsoft Management Console中找到新的軟件包,擊右鍵選擇導出,將它導出到c:\Program File\Packages中,在該文件夾的Client下自動生成了MtsDemo的客户端安裝程序。在客户機上運行Client文件夾下的Setup.exe文件,再安裝客户端程序即可運行