VB6遗留系统与现代网页

时间:2014-04-02 19:40:39

标签: .net vb6 applet vb6-migration xbap

我有一个传统的VB6应用程序。我想将它与我的网络应用程序集成。 VB6应用程序驻留在客户端PC上,我希望与我的网页直接通信。

我正在考虑的选项是Java applet或ActiveX或者xbap app(在我的页面的iframe中运行)。

你可以看到我在技术方面的迷失。如果有人可以指出我正确的方向(或教程/示例),将不胜感激。

我也不确定这个组件如何与VB6 app(COM ??)进行通信

2 个答案:

答案 0 :(得分:1)

我一直在VB6和网站之间传递数据。我使用VB6可以轻松访问的XML对象。我在下面显示的代码使用Web服务器上的经典asp页面,但它可以很容易地成为任何其他类型的页面。

我的VB6应用程序中有这个功能

Public Function Download(ByVal AsmxUrl As String) As String

    Dim objDom As Object
    Dim objXmlHttp As Object
    Dim strRet As String

    On Error GoTo Err_PW

    ' Create objects to DOMDocument and XMLHTTP
    Set objDom = CreateObject("MSXML2.DOMDocument")
    Set objXmlHttp = CreateObject("MSXML2.XMLHTTP")

    ' Load XML
    objDom.async = False

    ' Open the webservice
    objXmlHttp.Open "GET", AsmxUrl, False

    ' Create headings
    objXmlHttp.setRequestHeader "Content-Type", "text/xml; charset=utf-8"

    ' Send XML command
    objXmlHttp.send objDom.xml

    ' Get all response text from webservice
    strRet = objXmlHttp.responseText

    ' Close object
    Set objXmlHttp = Nothing

    ' Return result
    Download = strRet

Exit Function
Err_PW:
    Download = "Error: " & Err.Number & " - " & Err.Description

End Function

您可以这样称呼它:

Dim Output As String

Output = Download("http://YourWebsite.com/data.asp?EyeColor=Blue&ShoeSize=9")
Call MsgBox(Output)

在Web服务器上,您将看到一个名为data.asp的页面,如下所示:

<% 
Response.Expires = -1000 'Make sure the browser doesn't cache this page
%>
<!-- #include virtual="\include_database.asp" -->
<%
    Response.ContentType = "text/plain"

    EyeColor = Request("EyeColor")
    ShoeSize = Request("ShoeSize")
    ' Do something interesting with the data

    Response.Write "Ouput here"
%>

注意一些有趣的事情。 Response.Expires有一个负数。这意味着该页面会立即过期,因此您无法获得缓存结果。另请注意,内容类型设置为&#34; text / plain&#34;。这意味着响应只是文本。

答案 1 :(得分:0)

如果vb6 GUI和业务逻辑之间存在良好的分离,这将有所帮助。您将需要重构Vb6应用程序,以便尽可能多地从Exe中分离应用程序,并将其放入ActiveX DLL中,该DLL具有您从Web应用程序实例化的一个或多个类。

如果您使用ASP或ASP.NET作为Web技术,这将是最简单的。但是,它可能适用于其他Web技术。

如果你绝望,你可以调整你的Vb6 EXE用于CGI(通用网关接口),但这严格来说是老式的,速度很慢,现代网络服务器可能不支持。