2012-01-27 152 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

相關問題