하이브리드 VB6 / .Net 애플리케이션은 실제 환경에서 어떻게 작동합니까?


11

VB6 응용 프로그램을 유지 관리하고 .Net으로 마이그레이션하는 방법을 연구하고 있습니다. COM visible .Net 클래스의 새로운 기능을 구현하고 기존 기능을 천천히 마이그레이션하여 점진적으로이 작업을 고려하고 있습니다. 이 작업을 수행하는 방법에 대한 유용한 'Hello World'예제를 찾았으며 앱과 잘 작동합니다. 그러나 이러한 하이브리드 애플리케이션의 실제 동작은 어떻습니까? 그들은 안정적이고 유지 보수가 가능합니까? 우리의 프로그램 중 하나는 동일한 컴퓨터의 더 많은 사용자가 사용자 계정을 전환하여 사용한다는 것입니다.

편집 : VB6 앱은 USB 연결에서 데이터를 읽고 Access 데이터베이스에 저장합니다. 사용자는 데이터에 대한 다양한 뷰를 불러올 수 있습니다. 데이터는 하드웨어 장치에 캐시되므로 데이터를 읽을 때의 간섭은 치명적이지 않습니다.

2015 년 10 월 4 일 수정 : 후속 조치 시간 : 아직 기존 VB6 코드를 단계별로 .Net으로 교체하는 중입니다. 먼저 데이터 액세스 루틴을 수행 한 다음 비즈니스 로직과 현재 하나의 양식을 WPF로 변환합니다. 우리는 실제로 (VB.Net에서) 변환 한 모든 코드를 다시 작성했지만 느리고 동시에 기능을 향상시킬 수있었습니다. 하이브리드 응용 프로그램은 Windows 8, 8.1 및 10으로의 전환에서 살아 남았습니다.

2018 년 3 월 9 일 수정 : 다음 달에는 완전히 변환 된 코드가 릴리스됩니다. 하이브리드 애플리케이션은 최소 1 년 이상 지원됩니다. 고해상도 화면에서는 주로 문제가 있지만 그렇지 않으면 잘 작동합니다. 솔직히 말해서, 우리는 VB6 코드베이스와의 호환성 문제보다 .Net Framework 설치 및 종속성의 손상된 설치 (SQL Server LocalDb)로 인해 더 많은 지원 문제를 겪고 있습니다 ...


1
'레거시'응용 프로그램의 기능은 무엇입니까? 더 자세한 내용은 질문에 대답하는 데 도움이 될 것입니다.
Darknight

"PCI 연결"보다 더 "USB 연결"이 없습니다. USB 버스에 일부 장치가 연결되어있을 가능성이 높으며 장치 유형이 중요합니다.
Bob77

답변:


5

COM 인터페이스를 통해 .NET을 VB6에 공개하는 놀라운 성공을 거두었습니다. 이를 통해 초기에 대량의 VB6 코드를 리팩터링하고 .NET으로의 업그레이드 경로를 설정할 수있었습니다. 관용적 VB6은 C # 또는 VB.NET으로 잘 변환되지 않으므로주의해서 살펴야합니다.

우리가 상당히 성가신 한 가지 문제는 공용 COM 인터페이스의 변경으로 인해 과도한 재구성이 필요했습니다. 이것은 Visual Make에 의해 완화되었습니다 .


감사합니다. Visual Make가 해결하는 문제에 대해 더 자세히 설명해 주시겠습니까? 잘 모르겠습니다.
Dabblernl

@Dabblernl-Visual Make를 사용하면 VB6 프로젝트의 모음 인 프로젝트를 만들 수 있으며 올바른 순서로 빌드합니다.
ChaosPandion

6

FWIW, 내 경험상 VB6 앱을 .Net으로 업그레이드해야 할 필요성은 다시 쓰기에 대한 이상적인 변명을 제공합니다. 원래의 코더가 훌륭한 비전을 가진 사람이 아니라면 VB6에서 널리 사용되는 기술은 거의 .Net으로 포팅되지 않습니다.

당신이 겪을 기쁨 중 일부 :

  1. 결국 원하지 않는 Microsoft.VisualBasic에 대한 참조로 끝납니다.
  2. VB6 하위 문자열 (a, b, c)이 a.SubString (b, c)로 조용히 렌더링되고 VB6에서 1을 기반으로했기 때문에 얼굴이 터져 나오는 버그를 찾기가 어렵습니다. .Net에서 0을 기반으로합니다.
  3. 코딩하기 쉬운 암시 적 변환은 모두 목공 작업에서 나오며, 일반적으로 목록 구분 기호 및 / 또는 ""로 ","가없는 첫 번째 PC에서 나옵니다. 소수점 구분 기호로.
  4. 변환 된 클래스에는 재 디자인이 가져야하는 바람직한 데이터 숨김이 없습니다.

HTH


1
당신은 아주 좋은 점을 제기합니다. 이것이 나쁜 관행을 리팩터링하기 위해 코드를 처음 통과해야하는 이유 중 일부입니다. 이상적으로 Option Explicit는 켜져 있고 마법의 암시 적 변환에 대한 모든 의존성이 제거 되었는지 확인하십시오 .
ChaosPandion

나를 응원 해 주셔서 감사합니다 ;-)하지만 지금은 내가 알고 싶은 것이 아닙니다. 진정한 변환 악몽은 여전히오고 있습니다.
Dabblernl 2012 년

1
@ 카오스 맞아. 사실 나는 명시 적으로 시작하여 오류가 남아 있지있을 때, 나는 어떤 하이라이트 많은, 많은 문제를 유용, 엄격한에 최대 잭
smirkingman

1
화염 방사기와 함께 VB6 코드를 따르는 팀에 대해 들었습니다. VB6 코드에서 이것이 더 많이 발생하는 이유는 너무나 많은 VB "개발자"가 시작할 때 프로그래밍 경험이 없었기 때문이라고 생각합니다. 그 결과이 세대의 전문가가 처리 할 수 ​​있도록 잘못 설계되고 코딩 된 수많은 응용 프로그램이 만들어졌습니다.
그것은

1

그것은 당신에게 잘 작동합니다. 특히 문제를 일으킬 수있는 빠른 사용자 전환 / 다중 세션에 대해서는 아무것도 없습니다.

유지 관리 측면에서 하이브리드 VB6 / VB.NET은 임시 솔루션 일뿐입니다. 계획은 시간이 지남에 따라 VB.NET으로 완전히 마이그레이션해야합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.