透视和调整你的企业和商务系统(Ⅱ:COM+、ASP)

原创 2001年10月14日 10:12:00

透视和调整你的企业和商务系统(COM+ASP

<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

小气的神 2001-10-11

 

接着上一篇所说的三个过程中第一个步骤开始进行,环境需要两部机器,一部做SQL Server,一部做App和安装IIS。模拟现在常见的Windows DNA结构,在ASP中调用Biz组件。VBClient端我就省略了,选择IE作为Client端,唯一想验证的是构架和组件是OK的就好了。

 

这一篇和dotNET还没有任何关系,因为那时还没有dotNET技术,为了更真实的模拟现实比如复杂一点带有事务要求的逻辑,我决定把SQL Server和组件放在两台机器上。

 

    内容我选用SQL Server自带的Pub数据库的Author表作为原型。当我翻看原来的一些应用代码和组件发现整个的代码一般分为两类:一类是完成一个商业和业务逻辑的操作,带入必须的参数给Biz组件,Biz组件调用其它Biz组件或DB组件完成需要的各种操作,然后返回一个简单的数据类型回来给表现层。比如一个String字符串(错误描述),一个Long型(表示某种流水号,什么编号或是错误代码等);另一类是查询或某种操作之后返回的大量数据,让我庆幸的是自己已经习惯了用ADODB.Recordset来返回这些大量数据,所以这一类很统一,一般都是ADODB.Recordset类型的返回值。除此之外连Variant都很少很少,自己定义的结构类型在Biz这一层的返回值中几乎为零。

 

    对于WebService来说,数据被统一成XML的格式,我开始想象这些ADODB.RecordsetXML中会是什么模样的?客户端又如何使用这些XML格式的ADO数据呢?几乎第一个反应是用Microsoft SOAP Toolkit来解决这个问题,所以对SOAP Toolkit产生的WSDL文件充满好奇,想知道这种ADODB.Recordset返回值的WSDL会是怎样的。事实上,以后试验的结果让人泄气。不过问题更早的暴露出来了,就是这些自定义或说不是SOAP支持的数据类型的数据如何处理的问题,目前集中在ADODB.Recorset这种数据类型上。这些问题也就决定了要产生的dbBiz组件。

 

    DB组件没有特别的,Biz组件我决定直接调用这些DB组件,先没有任何的逻辑,事实上Biz中可能是很复杂的,调用很多其它的BizDB组件,但往往它最后只会有一个结果:成功或失败,或是返回一组数据,也就是我上面归类的两种。所以我开始用类似的Update,Delete功能:

Public Function DeleteAuthor(ByVal au_id As String) As Long

来模拟第一类返回SOAP支持的单一数据类型的情况,现实的应用中可能会是:

Public Function ChangePaymentType( Byval nTypeID as Long, Byval Value as Integer) As Long 一个修改用户付款方式的商业逻辑。

Select 功能

Public Function GetAuthorsByName(ByVal fName As String, ByVal lName As String) As ADODB.Recordset 来模拟第二类返回不是基本数据类型的返回值,现实的应用中可能会是

Public Function GetCustomerInfoByID( Byval nCustomerID as Long ) As ADODB.Recordset 一个根据客户ID来获得客户资料的商业逻辑。

 

我列出后面用的最多的两个函数的代码,特别是这两个函数名会在后面被大量涉及到:

Biz组件:bus_Authors.Authors ,编译成DLL: bus_Authors.DLL

Public Function Version() As String

Version = "VB & SOAP ver 1.00 "

objCtx.SetComplete

 

End Function

 

Public Function GetAuthors() As ADODB.Recordset

 

On Error GoTo ErrHandler

 

Dim obj  As Object

 

Set obj = CreateObject(dbcomName)

 

Set GetAuthors = obj.GetAuthors()

objCtx.SetComplete

 

Exit_Err:

    Exit Function

ErrHandler:

    Set GetAuthors = Nothing

    objCtx.SetAbort

    Err.Raise Err.Number, SetErrSource(modName, "GetAuthors"), Err.Description

    Resume Exit_Err

End Function

 

db组件:db_Authors.Authors ,编译成DLL: db_Authors.DLL

Public Function GetAuthors() As ADODB.Recordset

On Error GoTo HandleError

    Dim Rst As ADODB.Recordset

    Dim strSql As String

    Set Rst = newClientRstOnlyRead(5)

   

    strSql = " SELECT * FROM Authors "

   

    Rst.Open strSql, strConstruct, adOpenStatic, adLockReadOnly, adCmdText

 

    If Not IsRstEmpty(Rst) Then

        Set GetAuthors = Rst

    Else

        Set GetAuthors = Nothing

    End If

   

    objCtx.SetComplete

   

HandleExit:

    Exit Function

HandleError:

    objCtx.SetAbort

    Set GetAuthors = Nothing

    Err.Raise Err.Number, SetErrSource(modName, "GetAuthors"), Err.Description

    Resume HandleExit

End Function

Version()GetAuthors()分别用来模拟上诉的两类返回值的情况,剩下的还包括下面的函数:

Public Function Echo(ByVal sEcho As String) As String

Public Function GetAuthorsByName(ByVal fName As String, ByVal lName As String) As ADODB.Recordset

Public Function DeleteAuthor(ByVal au_id As String) As Long

Public Function UpdateAuthorByAddress(ByVal au_id As String, ByVal sAddress As String) As Long

这些不同的是加入了参数,和上面的VersionGetAuthors返回值没有什么不同所以我后面只讨论VersionGetAuthors这两个函数,剩下的实现上只有稍稍不同。

 

完成后编译组件,安装在Windows 2000COM +中,我建立了一个叫AuthorsApplication。然后利用Component Services分别将Authors ApplicationExport...功能倒出一个Server Application Application proxy的安装包,后面我们会用上它们。如图:

然后设置好IIS,建立一个虚拟目录Authors写一个简单的ASP页面调用bus_Authros.Authors组件的VersionGetAuthors方法产生一个Html的输出(VBASP的客户端的测试代码我都省略了)。保证Http://localhost/Authors/TestAuthors.asp

Http://henrysvr/Authors/TestAuthors.asp 调用正常在IE中产生页面输出。

 

<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />

ComplusExport

 

TestAuthors.asp放的物理的目录我假设是:C:/Inetpub/wwwroot/Authors中,这个目录在下面的章节中还会涉及到并且存放我们的WSDL等文件。

 

    如果上述一切OK那么基本上完成了第一步,有了一个简单的Windows DNA构架的例子使得下面的步骤可以开始进行,目前的构架可能象下面这样的:

 

AppSvr

 

另外防火墙都将不再考虑在内了,我没有模拟它。实际应用中防火墙是需要具体考虑的一个因素。 特别:

以上文字和图片涉及其他人的隐私和个人权利,如非被授权或经本人同意,任何网站或期刊请不要刊登、转载、改编、转贴或已其他形式进行传播。以上所有文字和图片只用于内部交流,不作任何新闻发表和商业用途。

写COM组件用于ASP/PHP等动态网页

ASP、PHP等动态网页语言的功能已很强大,但COM能使它如虎添翼。其实我们平时用的ADO、FSO、Jmail等也就是COM。借助COM,WEB可以调用本地应用程序的几乎所有功能来反馈给页面。例如,查...
  • asanscape
  • asanscape
  • 2014年04月12日 12:34
  • 2057

COM+/企业服务的作用

DCOM只是定义了一种在两个基于COM的软件之间创建通信通道的方式。为了完善用于构建功能丰富的分布式计算解决方案,微软最后发布了MTS(微软事物处理服务器),它在之后的发布中被命名为COM+. 不管...
  • u010953886
  • u010953886
  • 2013年08月11日 07:51
  • 444

我的java学习笔记之杰信商务管理平…

这个笔记是听陈子枢老师讲的杰信商务平台项目,主要是涉及到一些项目设计和实际开发中的业务场景,主要是分析业务及如何从业务中转换成技术细节以及如何开发一个项目,进入到一个项目组之后如何快速融入并上手,并大...
  • li951418089
  • li951418089
  • 2015年12月24日 16:22
  • 848

OpenCV 可自动调整参数的透视变换

转载地址:http://blog.csdn.net/wangyaninglm/article/details/41869535?locationNum=1&fps=1在shiter大牛的基础之上,对于...
  • zszszs1994
  • zszszs1994
  • 2016年11月22日 17:53
  • 1065

安装SQL Server2005提示COM+目录要求警告

COM+ 目录要求 假如 SQL Server 安装程序失利,安装程序将回滚所安装地系统,但能够不会删除一切 .manifest 文件。解决方法是重命名这些文件,然后重新运行安装程序。相关具...
  • keepupdreaming
  • keepupdreaming
  • 2013年05月23日 10:33
  • 2066

MVC大型商贸系统(库存管理)技术解释(三) 主界面设计

初学者的分享,仅供学习,禁止用于商业用途。
  • wQFLX
  • wQFLX
  • 2015年06月04日 19:59
  • 1242

ASP.NET企业人事管理系统源码

2.1 基本内容 要开发的企业人事管理系统分为五个模块:员工信息管理、考勤管理、工资管理、查询管理、系统管理。  本系统主要研究内容: (1)员工档案管理,员工离职管理,员工薪资的录...
  • quanjieLIHUI
  • quanjieLIHUI
  • 2017年11月15日 16:57
  • 592

ASP使用C#编写的COM+组件

1 新建类库MyTestDLL 2 右击项目“MyTestDLL”-》属性-》生成-》勾选“为COM互操作注册” 3 打开 AssemblyInfo.cs 文件 修改 [assembly: C...
  • jimmy0021
  • jimmy0021
  • 2015年05月28日 10:31
  • 218

在Unity3D中如何让摄像机进行平滑的透视(perspective)和正视(orthographic)角度变换(就像编辑器中点击Gizmos一样的效果)

在Unity3D中如何让摄像机进行平滑的透视(perspective)和正视(orthographic)角度变换(就像编辑器中点击Gizmos一样的效果) How to make a smooth ...
  • luckydog1120446388
  • luckydog1120446388
  • 2015年09月25日 11:21
  • 4460

微信JS接口 - 企业号开发者接口文档n

概述 微信JS-SDK是微信公众平台面向网页开发者提供的基于微信内的网页开发工具包。 通过使用微信JS-SDK,网页开发者可借助微信高效地使用拍照、选图、语音、位置等手机系统的能力,同时可以直接使...
  • sinat_17775997
  • sinat_17775997
  • 2017年01月15日 23:47
  • 1314
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:透视和调整你的企业和商务系统(Ⅱ:COM+、ASP)
举报原因:
原因补充:

(最多只允许输入30个字)