Як функціонують гібридні програми VB6 / .Net в реальному світі?


11

Я підтримую додаток VB6, і ми вивчаємо, як перейти до. Я знайшов кілька повчальних прикладів "Hello World" про те, як це зробити, і це добре працює з нашим додатком. Але як у реальному світі поведінка цих гібридних додатків? Чи вони стабільні, ремонтопридатні? Особливістю нашої програми є те, що більше користувачів на одному комп’ютері використовуватимуть її, перемикаючи облікові записи користувачів.

EDIT: Додаток VB6 зчитує дані з USB-з'єднання та зберігає їх у базі даних Access. Користувач може викликати різні погляди на дані. Дані кешуються в апаратному пристрої, тому втручання в його читання не є фатальним.

EDIT 4 жовтня 2015: Час для подальшого контролю: ми все ще перебуваємо в процесі заміни існуючого коду VB6 крок за кроком на .Net. Спочатку ми взяли на себе підпрограми доступу до даних, потім логіка ділових ситуацій і в даний час одна форма за іншою перетворюється на WPF. Ми дійсно закінчили переписати кожен фрагмент коду, який ми перетворили (у VB.Net), але ми могли це зробити повільно і в той же час покращуючи функціональність. Гібридна програма пережила перехід до Windows 8, 8.1 та 10.

РЕДАКЦІЯ 9 березня 2018 року: ми випустимо повністю перетворений код наступного місяця. Гібридна програма буде підтримуватися щонайменше на рік довше. Він відображає в основному проблеми на екранах з високою роздільною здатністю, але працює нормально інакше. Якщо чесно, у нас більше головних болів у зв'язку з пошкодженими .Net Framework установками та корумпованими установками залежностей (серед них SQL Server LocalDb), ніж у нас проблеми сумісності з базою коду VB6 ...


1
Що робить додаток "спадщина"? ще кілька деталей допоможуть відповісти на ваше запитання.
Темна ніч,

"USB-з'єднання" більше немає, ніж у вас "PCI-з'єднання". Швидше за все, у вас якийсь пристрій підключено до шини USB, і тип пристрою є важливим моментом.
Bob77

Відповіді:


5

Я мав дивовижний успіх піддаючи .NET VB6 через COM-інтерфейси. Роблячи це, ми змогли спочатку перефактурувати величезну кількість коду VB6 та встановити шлях оновлення до .NET. Пам’ятайте лише про те, що ідіоматичний VB6 не добре перекладається на C # або навіть на VB.NET, тому вам потрібно буде уважно ступати.

Єдине питання, яке було у нас досить прикро, - це надмірна кількість перебудов, які нам довелося зробити через зміни в публічному інтерфейсі COM. Це було полегшено Visual Make .


Дякую. Чи можете ви поясніть більше про проблему, яку вирішує Visual Make. Я не впевнений, що розумію.
Dabblernl

@Dabblernl - Visual Make дозволяє створити проект, який є колекцією проектів VB6, і він буде будувати їх у належному порядку.
ChaosPandion

6

FWIW, на мій досвід, необхідність оновити додаток VB6 до .Net - ідеальний привід для перезапису. Якщо оригінальні кодери не були блискучими провидцями, методи, що переважають у VB6, рідко переносять чисто.

Деякі з приємностей, з якими ви зіткнетеся:

  1. Ви закінчите посилання на Microsoft.VisualBasic, яких ви дійсно не хочете.
  2. Вони будуть важко відшукати помилки, наприклад, коли підрядок VB6 (a, b, c) непомітно видається як a.SubString (b, c) і підірветься вам в обличчя, оскільки він був на базі VB6 і На базі 0 у мережі .Net
  3. Усі ці легкі в коді неявні перетворення вийдуть з дерев’яних виробів, як правило, на першому ПК, у якого немає "," як роздільника списку та / або "." як десятковий роздільник.
  4. Ваші перетворені класи не матимуть бажаного приховування даних, яке має принести перепроектування.

HTH


1
Ви пропонуєте кілька дуже хороших моментів. Ось деякі з причин того, що первинне передавання коду для виправлення поганих практик є обов'язковим. В ідеалі ви переконайтеся, що Option Explicitвін увімкнено, і вся залежність від магічних неявних перетворень знімається.
ChaosPandion

Дякую, що розвеселили мене ;-) Але наразі це не те, що я хочу знати. Справжній кошмар перетворення ще належить чекати.
Dabblernl

1
@chaos Правильно. Насправді я починаю з явного, і коли не залишається жодних помилок, я підключаю його до строгої, яка корисно висвітлює багато, багато питань
smirkingman

1
Я чув про команди, які йшли за кодом VB6 з вогнеметами. Я вважаю, що причина цього трапляється набагато більше для коду VB6 в тому, що стільки "розробників" VB не мали досвіду програмування при їх запуску. Це, у свою чергу, створило безліч погано розроблених та кодованих програм у дикій природі для цього покоління професіоналів, з якими вони мали справу.
Це Грунт

1

Це повинно працювати нормально, нічого, зокрема, щодо швидкої комутації користувача / декількох сеансів, що може викликати у вас проблеми.

Що стосується ремонту, майте на увазі, що гібрид VB6 / VB.NET має бути лише тимчасовим рішенням: ваш план повинен полягати в повному переході на VB.NET з часом.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.