我有一个vb6-mysql客户端 - 服务器桌面应用程序,它作为安装文件分发。
它使用DLL所有逻辑操作以及数据库操作。 EXE和DLL安装在服务器以及客户端计算机上。当我说服务器只表示数据库驻留在该机器上时,EXE或DLL没有其他区别。
由于所有数据库操作都是在从客户端计算机连接时在DLL中完成的,因此性能会更低。现在无法将所有逻辑更改为数据库。
是否可以仅将DLL存储在服务器计算机中,并且客户端计算机也使用相同的DLL,以便数据库连接始终来自服务器本身?
将DLL转换为Windows服务可能的解决方案吗?
答案 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时,除了安全配置问题之外,问题相对较小。有了互联网,这是一个完全不同的故事。
这真的不是你随便进行的事情。即使假设你的数据库安全暴露在互联网上也是天真的,应该重新思考。