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

如何从另一台计算机调用VB6 DLL(DLL作为服务),dll,vb6,windows-services,client-server,desktop-application,Dll,Vb6,Windows Services,Client Server,Desktop Application,我有一个vb6 mysql客户机-服务器桌面应用程序,它作为安装文件分发 它使用DLL进行所有逻辑操作以及数据库操作。EXE和DLL安装在服务器和客户端计算机中。当我说服务器时,这只意味着数据库驻留在这台机器上,在EXE或DLL中没有其他区别 由于从客户机连接时,所有数据库操作都在DLL中完成,因此性能会降低。现在不可能将所有逻辑都更改为数据库 是否可以仅将DLL存储在服务器计算机中,并由客户端计算机使用相同的DLL,以便数据库连接始终来自服务器本身 将DLL转换为windows服务是否是可能

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

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

由于从客户机连接时,所有数据库操作都在DLL中完成,因此性能会降低。现在不可能将所有逻辑都更改为数据库

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

  • 将DLL转换为windows服务是否是可能的解决方案

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

您似乎试图重新发现n层应用程序开发

在局域网内使用VB6通常的方法是创建ActiveX EXE而不是DLL,这样您就可以使用DCOM。然而,DCOM并不是你想在互联网上公开的东西

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

使用VB6实现这一点的经典方法是使用IIS托管远程数据服务,该服务使用一种形式的Web服务“隐藏”,其中您的程序不处理血淋淋的细节。然而,这是一种不推荐使用的方法,今天配置IIS和RDS组件可能是一件麻烦事,因为默认情况下它们是硬锁定的

这就给您留下了不推荐使用的SOAP工具包或PocketSOAP套件中的第三方工具。。。或者你也可以自己滚

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

最难证明的方法可能看起来最简单:通过TCP创建自己的协议并编写Windows服务。这可能是所有选项中最灵活的一种,但它比其他选项更容易操作,而且您可以自行完成并确保安全。您可能还将面临防火墙问题,这取决于您的客户端所在的位置以及本地防火墙策略

当我们可以依赖DCOM时,除了安全配置问题外,问题相对较小。有了互联网,情况就完全不同了


这真的不是你随便做的事。即使假设您的数据库安全地暴露在互联网上也是幼稚的,应该重新思考。

你好,鲍勃,谢谢您的时间。很抱歉迟了答复。好的,看来我的选择是DCOM,因为它不是通过internet的。希望它能得到更多年的支持。。