我需要在vb6应用程序和.net应用程序之间传递数据。这些数据将每秒写入或读取。它大约有30个领域。这两个应用程序驻留在同一台计算机上。我目前通过注册表传递这些数据,它工作的很好,但它让我有点紧张。我会用文本文件来做,但我担心数据丢失。在VB6应用程序和.net应用程序之间传递数据
这样做的最好方法是什么?
我需要在vb6应用程序和.net应用程序之间传递数据。这些数据将每秒写入或读取。它大约有30个领域。这两个应用程序驻留在同一台计算机上。我目前通过注册表传递这些数据,它工作的很好,但它让我有点紧张。我会用文本文件来做,但我担心数据丢失。在VB6应用程序和.net应用程序之间传递数据
这样做的最好方法是什么?
常见后端?是的,注册表工作,文本文件将起作用,但在多用户环境中,最好用数据库(例如MS Access或SQL Server)。
+1。 SQL Server在多进程环境中可能会更好。也许[SQL Server Compact](http://stackoverflow.com/questions/416716/would-you-use-sql-server-compact-for-a-desktop-application) – MarkJ 2012-01-27 20:58:44
数据库可能是最昂贵的IPC形式有。 – Bob77 2012-01-27 21:03:27
好的,很贵,是的,特别是如果你不得不雇用一个DBA,但它会比注册表或文本文件更好地处理多用户更新。 – Beth 2012-01-27 21:04:49
选择你的毒药:邮筒,内存映射文件,命名管道,套接字。网上有很多帮助和代码。
同一台计算机上的进程之间的小消息(包括Windows操作系统):使用MailSlots。
同一台机器上的进程之间的大块数据:使用内存映射文件。
在进程(相同或不同机器,Windows操作系统)之间流式处理消息:使用命名管道进行操作。
在进程(相同或不同机器,相同或不同操作系统)之间流式处理消息:使用套接字进行。
由于您现在正在使用注册表,因此可能会使用Mailslots。
我还没有使用Mailslots。你能指点我一个很好的例子吗? – jocoder 2012-01-30 19:34:19
@jocoder:有两个地方可以签出。首先,C#项目在http://www.codeproject.com/Articles/19231/Fully-functional-Asynchronous-Mailslot-Control-in – rskar 2012-01-30 22:12:31
@jocoder:第二,这是某人的VB代码,主要是作品(他有一个问题与它):http://forums.devx.com/archive/index.php/t-160327.html – rskar 2012-01-30 22:13:05
实际上,Mailslots也可以在机器间正常工作。虽然它们对于超过400字节的消息不起作用。
DDE仍然支持,而且速度非常快。可能没有.Net支持。
当然,简单的进程外COM只是Windows RPC之上的一个薄层。
非常可怕。这不是注册表的目的。有没有听说过注册表配置单元碎片? – Bob77 2012-01-27 20:57:47