如何从另一台机器调用VB6 DLL(DLL作为服务)

时间:2012-08-22 13:28:06

标签: dll vb6 windows-services client-server desktop-application

我有一个vb6-mysql客户端 - 服务器桌面应用程序,它作为安装文件分发。

它使用DLL所有逻辑操作以及数据库操作。 EXE和DLL安装在服务器以及客户端计算机上。当我说服务器只表示数据库驻留在该机器上时,EXE或DLL没有其他区别。

由于所有数据库操作都是在从客户端计算机连接时在DLL中完成的,因此性能会更低。现在无法将所有逻辑更改为数据库。

  • 是否可以仅将DLL存储在服务器计算机中,并且客户端计算机也使用相同的DLL,以便数据库连接始终来自服务器本身?

  • 将DLL转换为Windows服务可能的解决方案吗?

  • 如何将其转换为服务?
  • 最后,如果可以使DLL充当服务,连接问题会是什么?

1 个答案:

答案 0 :(得分:1)

您似乎正在尝试重新发现n层应用程序开发。

在LAN 中使用VB6 执行此操作的常用方法是创建ActiveX EXE而不是DLL,以便您可以使用DCOM。但是,DCOM不是您希望通过Internet公开的内容。

对于这种情况,更典型的是使用常见的开放端口协议,例如HTTP或HTTPS。几乎每个人都有防火墙设置,允许出站HTTP和HTTPS连接,并且大多数主要Web服务器都会定期加固,以便更安全地暴露给Internet。

使用VB6执行此操作的经典方法是使用IIS来托管远程数据服务,该服务使用一种“隐藏”的Web服务形式,其中您的程序不处理血腥细节。然而,这是一种弃用的方法,今天配置IIS和RDS组件可能是一件苦差事,因为它们在默认情况下被严格锁定。

这将为您提供诸如弃用的SOAP Toolkit或第三方工具(例如PocketSOAP套件中的工具)之类的东西......或者您可以自己动手。

从头开始这样做可能有点工作,但更灵活,允许REST而不是SOAP,它本身就具有优势。您可以使用任何可以与VB6一起使用的Web服务器(通过CGI等)。

最难以证明的方法似乎是最简单的:通过TCP创建自己的协议并编写Windows服务。这可能是最灵活的,但它可以比其他选项更多的工作,并且你自己做它并保持其安全。您可能还会遇到防火墙问题,具体取决于客户端的位置以及本地防火墙策略的位置。

当我们可以依赖DCOM时,除了安全配置问题之外,问题相对较小。有了互联网,这是一个完全不同的故事。

这真的不是你随便进行的事情。即使假设你的数据库安全暴露在互联网上也是天真的,应该重新思考。