N-Tiers开发方式(如何使用VB.NET撰写COM+组件)

时间:2019-09-11
本文章向大家介绍N-Tiers开发方式(如何使用VB.NET撰写COM+组件),主要包括N-Tiers开发方式(如何使用VB.NET撰写COM+组件)使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

摘要:N-Tiers开发方式(如何使用VB.NET撰写COM+组件)


小喵撰写COM+组件开始于VB6的年代,撰写与注册的方式还算不是很复杂,不过随着进入了.NET的世界,撰写的过程也变得比较复杂了许多。

以下是撰写的步骤

假设要撰写的是一个数据库DDMO中的数据表(TDMOMenu)的数据存取组件,要产生一个组件服务中的Package名称为【KDMO1000】,里面有个组件PDMOMenu.dll内有两个COM+组件分别是
Project.Class

  1. PDMOMenu.CDMOMenu1(无Transaction):用以读取数据
  2. PDMOMenu.CDMOMenu2(有Transaction):用以维护数据

撰写步骤:


Imports System.Runtime.InteropServices
Imports System.Data.SqlClient
Imports System.Data
Imports System.IO


 _
Public Class CDMODEMO1

    Inherits ServicedComponent
    Const DBName as String = "DDMO"   

    Public Function Test1(ByVal In1() As String, ByVal Out1() As String, ByRef P As String, ByRef R As String, ByVal RUser As String) As String
        '*
        '     撰写者:topcat(topcat)     撰写日期:2008/7/23
        '     用途:  1.
        '     做法:
        '             1.
        '     注意事项:
        '             1.
        '             2.
        '     维护记录:
        '         维护者:姓名(员工代号)     维护日期:日期
        '         维护项目:
        '                 1.
        '                 2.
        '         做法:  1.
        '                 2.
        '         注意事项:
        '                 1.
        '*

        Dim ConnStr As String = GetConnStr(DBName)

        Try

            Test1 = "Success"

        Catch ex As Exception
            Test1 = "False"
            Throw New Exception(ex.Message)

        Finally

        End Try
    End Function

    Public Function GetConnStr(ByVal DBName As String) As String
	    '*
	    '     撰写者:topcat(topcat)     撰写日期:2006/2/8
	    '     用途:  1.读取Connection String的方式
	    '     做法:
	    '             1.传入参数DataBase Name DBName
	    '             2.透过Stream将文字档读出
	    '             3.将取得的数据返回
	    '             4.关闭相关对象
	    '     注意事项:
	    '             1.
	    '             2.
	    '     维护记录:
	    '         维护者:姓名(员工代号)     维护日期:日期
	    '         维护项目:
	    '                 1.
	    '                 2.
	    '         做法:  1.
	    '                 2.
	    '         注意事项:
	    '                 1.
	    '*

	    Dim StrmRd As New StreamReader("C:DataLink" + DBName + ".ini")
	    Dim Line As String = ""
	    Dim ConnStr As String = ""
	    Try
	        Do
	            Line = StrmRd.ReadLine()
	            If Line <> "" Then
	                ConnStr += Line
	            End If
	        Loop Until Line Is Nothing
	        GetConnStr = ConnStr

	    Catch ex As Exception
	        Throw New Exception(ex.Message.ToString)

	    Finally
	        StrmRd.Close()
	        StrmRd.Dispose()
	        StrmRd = Nothing

	    End Try
    End Function
End Class


Imports System.Runtime.InteropServices
Imports System.Data.SqlClient
Imports System.Data
Imports System.IO


 _
Public Class CDMODEMO2
    Inherits ServicedComponent

    Const DBName as String = "DDMO"   


     _
    Public Function Test2(ByVal In1() As String, ByVal Out1() As String, ByRef P As String, ByRef R As String, ByVal RUser As String) As String
        '*
        '     撰写者:topcat(topcat)     撰写日期:2008/7/23
        '     用途:  1.
        '     做法:
        '             1.
        '     注意事项:
        '             1.
        '             2.
        '     维护记录:
        '         维护者:姓名(员工代号)     维护日期:日期
        '         维护项目:
        '                 1.
        '                 2.
        '         做法:  1.
        '                 2.
        '         注意事项:
        '                 1.
        '*

        Dim ConnStr As String = GetConnStr(DBName)

        Try


            Test2 = "Success"
        Catch ex As Exception
            Test2 = "False"
            Throw New Exception(ex.Message)

        Finally

        End Try
    End Function

    Public Function GetConnStr(ByVal DBName As String) As String
	    '*
	    '     撰写者:topcat(topcat)     撰写日期:2006/2/8
	    '     用途:  1.读取Connection String的方式
	    '     做法:
	    '             1.传入参数DataBase Name DBName
	    '             2.透过Stream将文字档读出
	    '             3.将取得的数据返回
	    '             4.关闭相关对象
	    '     注意事项:
	    '             1.
	    '             2.
	    '     维护记录:
	    '         维护者:姓名(员工代号)     维护日期:日期
	    '         维护项目:
	    '                 1.
	    '                 2.
	    '         做法:  1.
	    '                 2.
	    '         注意事项:
	    '                 1.
	    '*

	    Dim StrmRd As New StreamReader("C:DataLink" + DBName + ".ini")
	    Dim Line As String = ""
	    Dim ConnStr As String = ""
	    Try
	        Do
	            Line = StrmRd.ReadLine()
	            If Line <> "" Then
	                ConnStr += Line
	            End If
	        Loop Until Line Is Nothing
	        GetConnStr = ConnStr

	    Catch ex As Exception
	        Throw New Exception(ex.Message.ToString)

	    Finally
	        StrmRd.Close()
	        StrmRd.Dispose()
	        StrmRd = Nothing

	    End Try
    End Function

End Class

  1. 建项目:
    1.请在适当的目录下,建立您组件项目的目录【PDMOMenu】  

    2.建立项目(Create Project),选择【类库(Class Library)】,目录请设定为您项目的目录,Name设定为【PDMOMenu】  

    3.方案总管(Solution Explorer)中点选Class1.vb,变更属性(Properties)中的文件名(File Name)为【CDMOMenu1.vb】(无TranSaction),【CDMOMenu2.vb】(有Transaction)  

    4.参考(Reference)右键→加入参考,增加【System.EnterpriseServices】  

     

    →步骤二
  2. 项目内容:
    1.点选项目(Project)右键→属性(Properties)
    2.点选【签署(Signing)】,勾选【签署组件】
    	在选择强势名称金钥档(Choose a strong name key file)
    	选择新增(New)→输入【PDMOMenu】
    3.点选【应用程序(Application)】
    	检查【组件名称(Assembly Name)】、【根命名空间(Root NameSpace)】是否是【PDMOMenu】
    4.按【组件资讯】,将【让组件成为COM-Visiable(Make assembly COM-Visiable)】打勾
    →步骤三

  3. AssemblyInfo.vb:
    1.请在最上方Imports加入:
    Imports System.EnterpriseServices
    
    2.请在最下方加入以操作:
     '*设定组件服务的项目名称
    
    

  4. Class 内容:
    无Transaction Class(CDMOMenu1.vb):

  5. 有Transaction Class(CDMOMenu2.vb):

撰写完相关的程序后,接着就是Build项目,然后就会依照Project的Property设定的位置产生dll


补充,感谢网友小魔告知内容有误,把取得数据库连线的Function补上

说明:

存取数据会透过ConnString的设定来指定要存取的是哪台Server上的哪个数据库,使用验证方式是用什么方式。如果ConnString写在组件内,那么当Server的位址改变、甚至数据库名称改变,那么就必须把组件的程序一个个叫出来修改,然后再编译注册,这样的过程太过繁复

那么怎么把ConnString的设定抽离组件,小喵的做法是建立一个.ini的文字档,放在C:DataLink,里面就放着ConnString的内容,然后在组件中透过System.IO读取该文字档的内容。

如此一来,未来数据库有异动(位置、名称),就可以不需要改写组件,直接修改配置文件即可。


以下是签名:

  • 欢迎转贴本站的文章,不过请在贴文主旨上加上【转贴】,并在文章中附上本篇的超链接与站名【topcat姗舞之间的极度凝聚】,感恩大家的配合。
  • 小喵大部分的文章会以小喵熟悉的语言VB.NET撰写,如果您需要C#的Code,也许您可以试着用线上的工具进行转换,这里提供几个参考
    • http://converter.telerik.com/
    • http://www.carlosag.net/tools/codetranslator/
    • http://www.developerfusion.com/tools/convert/vb-to-csharp/


Visual Studio and Development Technologies
(2005~Now)

topcat
Blog:http://www.dotblogs.com.tw/topcat


原文:大专栏  N-Tiers开发方式(如何使用VB.NET撰写COM+组件)


原文地址:https://www.cnblogs.com/chinatrump/p/11505398.html