2012-01-27 4 views
4

vb6 앱과 .net 앱간에 데이터를 전달해야합니다. 이 데이터는 매초마다 기록되거나 읽힐 것입니다. 그것은 약 30 필드입니다. 두 앱 모두 같은 컴퓨터에 있습니다. 나는 현재이 데이터를 레지스트리를 통해 전달하고 있으며 훌륭하게 작동하지만 조금 긴장하게 만듭니다. 나는 텍스트 파일로 그것을 할 것이지만 나는 데이터 손실에 대해 걱정하고있다.VB6 앱과 .Net 앱간에 데이터 전달

가장 좋은 방법은 무엇입니까?

+2

꽤 무섭다. 이것은 레지스트리가 의도 한 것이 아닙니다. 레지스트리 하이브 조각화에 대해 들어 본 적이 있습니까? – Bob77

답변

1

일반적인 백엔드? 예, 레지스트리가 작동하지만 텍스트 파일은 작동하지만 다중 사용자 환경에서는 데이터베이스 (예 : MS Access 또는 SQL Server)를 사용하는 것이 좋습니다.

+1

+1. 다중 프로세스 환경에서 SQL Server가 더 좋습니다. 어쩌면 [SQL Server Compact] (0120-557-002) – MarkJ

+1

데이터베이스는 아마도 가장 비싼 형태의 IPC 일 것입니다. 거기있다. – Bob77

+0

OK, 비싸다. 예, 특히 DBA를 고용해야하지만, 레지스트리 나 텍스트 파일보다 다중 사용자 업데이트를 더 잘 처리 할 수있다. – Beth

2

당신이 이것을 쉽게하고 싶다면 어떤 종류의 RPC 프로세스를 사용하여 정보를 공유 할 것을 권합니다.

가장 쉬운 사람은 아마 모두가 필요한 라이브러리가에

VB6.NetXML-RPC 보일 것입니다.

데이터가 손실 될 염려가있는 경우에도 동일한 데이터베이스에 연결할 수 있습니다.

0

메일 선택, 메모리 매핑 파일, 명명 된 파이프, 소켓. 웹에는 많은 도움과 코드가 있습니다.

동일한 컴퓨터의 프로세스 간 작은 메시지 (Windows OS 모두) : MailSlots로 이동하십시오.

동일한 시스템의 프로세스간에 큰 데이터 블록 : 메모리 맵 파일로 이동하십시오.

프로세스 간의 스트리밍 메시지 (동일하거나 다른 컴퓨터, 두 Windows OS 모두) : 명명 된 파이프로 이동하십시오.

프로세스 간 스트리밍 메시지 (동일하거나 다른 컴퓨터, 동일하거나 다른 OS) : 소켓으로 이동하십시오.


이제 레지스트리를 사용하고 있기 때문에 대신 메일 슬롯을 사용하고 있습니다.

+0

나는 Mailslots를 사용하지 않았습니다. 나에게 좋은 본보기를 가르쳐 주시겠습니까? – jocoder

+0

@jocoder : 체크 아웃 할 곳이 두 곳 있습니다. 첫째, http://www.codeproject.com/Articles/19231/Fully-functional-Asynchronous-Mailslot-Control-in – rskar

+0

@jocoder에서 C# 프로젝트 : 둘째, 이것은 누군가의 VB 코드이며, 대부분은 작동합니다. 문제가 있음) : http://forums.devx.com/archive/index.php/t-160327.html – rskar

1

실제로 메일 슬롯은 컴퓨터간에 잘 작동합니다. 400 바이트가 넘는 메시지에는 제대로 작동하지 않지만

DDE는 여전히 지원되며 매우 빠릅니다. 아마 닷넷 지원.

물론 단순한 out-of-process COM은 Windows RPC의 맨 위에있는 단순한 계층입니다.

+0

DDE에 대해서도 생각했습니다. VB6에서 돌아가는 답변이었고, 저기에 .NET 코드가 있다고 확신합니다. – JohnFx

+0

그러나주의 사항이 있으며 R. Chen이 가장 좋아하는 것이 아닙니다. http://blogs.msdn.com/b/oldnewthing/archive/2007/02/26/1763683.aspx – Bob77

+0

@Bob : "Mailslots는 기계도 "- 일반적으로 그렇지만 메시지를 수신하는 것은 바람직하지 않습니다. – rskar

관련 문제