2012-01-27 59 views
4

我需要在vb6应用程序和.net应用程序之间传递数据。这些数据将每秒写入或读取。它大约有30个领域。这两个应用程序驻留在同一台计算机上。我目前通过注册表传递这些数据,它工作的很好,但它让我有点紧张。我会用文本文件来做,但我担心数据丢失。在VB6应用程序和.net应用程序之间传递数据

这样做的最好方法是什么?

+2

非常可怕。这不是注册表的目的。有没有听说过注册表配置单元碎片? – Bob77 2012-01-27 20:57:47

回答

1

常见后端?是的,注册表工作,文本文件将起作用,但在多用户环境中,最好用数据库(例如MS Access或SQL Server)。

+1

+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

+1

数据库可能是最昂贵的IPC形式有。 – Bob77 2012-01-27 21:03:27

+0

好的,很贵,是的,特别是如果你不得不雇用一个DBA,但它会比注册表或文本文件更好地处理多用户更新。 – Beth 2012-01-27 21:04:49

2

我建议使用某种RPC过程共享信息,如果你想这样做很容易。

最简单的一个很可能是XML-RPC

VB6.Net似乎都有必要的库。

如果您担心数据丢失,也可以连接到同一个数据库。

0

选择你的毒药:邮筒,内存映射文件,命名管道,套接字。网上有很多帮助和代码。

同一台计算机上的进程之间的小消息(包括Windows操作系统):使用MailSlots。

同一台机器上的进程之间的大块数据:使用内存映射文件。

在进程(相同或不同机器,Windows操作系统)之间流式处理消息:使用命名管道进行操作。

在进程(相同或不同机器,相同或不同操作系统)之间流式处理消息:使用套接字进行。


由于您现在正在使用注册表,因此可能会使用Mailslots。

+0

我还没有使用Mailslots。你能指点我一个很好的例子吗? – jocoder 2012-01-30 19:34:19

+0

@jocoder:有两个地方可以签出。首先,C#项目在http://www.codeproject.com/Articles/19231/Fully-functional-Asynchronous-Mailslot-Control-in – rskar 2012-01-30 22:12:31

+0

@jocoder:第二,这是某人的VB代码,主要是作品(他有一个问题与它):http://forums.devx.com/archive/index.php/t-160327.html – rskar 2012-01-30 22:13:05

1

实际上,Mailslots也可以在机器间正常工作。虽然它们对于超过400字节的消息不起作用。

DDE仍然支持,而且速度非常快。可能没有.Net支持。

当然,简单的进程外COM只是Windows RPC之上的一个薄层。

+0

我也想过DDE。这是VB6时代的回答,我敢打赌,有一些.NET代码可以用来实现这个功能。 – JohnFx 2012-01-27 21:17:02

+0

但有一些注意事项,它不是R.陈最喜欢的东西:http://blogs.msdn.com/b/oldnewthing/archive/2007/02/26/1763683.aspx – Bob77 2012-01-27 21:31:42

+0

@Bob:“邮筒工作正常机器也“ - 通常它是,但收到的消息不保证。 – rskar 2012-01-27 21:32:57

相关问题