473,569 Members | 2,735 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

Question re Migration of VB6 App to .NET

Our company develops and markets a client/server application which is
written in VB6 as a rich Win32 Client/Server application. For a variety of
technological reasons we are looking to migrate toward the .NET environment.
However, a number of business factors make it impractical to accomplish this
through an abrupt termination of the VB6 product and complete rewrite.
Instead, we are looking to perform new development in .NET and slowly over
time migrate existing code to .NET.

At this time, we are looking to add a brand new module to our product.
Obviously, the new module has some connection to the rest of the application
in general. Be that as it may, it is sufficiently encapsulated unto itself
that we are contemplating developing this new module in .NET. I'm interested
in any advice which you can offer about how we might 'plug in' a module
written in .NET into our VB6 application, specifically at the UI layer. We
must provide the user with a seamless UI interface to our application,
regardless of whether the user is interacting with a VB6 Form or with a .NET
WinForm.

Thanks very much for any advice which you can provide.

- Joe Geretz -
Jul 21 '05 #1
4 1320
You should be looking at Interoperabilit y:

http://msdn.microsoft.com/vbasic/usi...p/default.aspx

chanmm

"Joseph Geretz" <jg*****@nospam .com> wrote in message
news:%2******** ********@TK2MSF TNGP11.phx.gbl. ..
Our company develops and markets a client/server application which is
written in VB6 as a rich Win32 Client/Server application. For a variety of
technological reasons we are looking to migrate toward the .NET
environment. However, a number of business factors make it impractical to
accomplish this through an abrupt termination of the VB6 product and
complete rewrite. Instead, we are looking to perform new development in
.NET and slowly over time migrate existing code to .NET.

At this time, we are looking to add a brand new module to our product.
Obviously, the new module has some connection to the rest of the
application in general. Be that as it may, it is sufficiently encapsulated
unto itself that we are contemplating developing this new module in .NET.
I'm interested in any advice which you can offer about how we might 'plug
in' a module written in .NET into our VB6 application, specifically at the
UI layer. We must provide the user with a seamless UI interface to our
application, regardless of whether the user is interacting with a VB6 Form
or with a .NET WinForm.

Thanks very much for any advice which you can provide.

- Joe Geretz -


Jul 21 '05 #2
when it is time to add a new module, this may not be the best time to move
to .net

I guess it depends on how independent the new module is.

I've had the opportunity to advise folks on how to move VB6 to .Net in the
past. I usually advise the following:
Step 1: Spend a few days getting used to your code again. Like an old
friend that you've lost touch with, code tends to deviate from the design
during development and maintenance. Take a fresh look. Consider this
question:
If I was to write an altogether new interface, could I use the same objects
I currently have? Would I?

Step 2: refactor the existing code, in the existing language. Clean up any
of the partitioning problems you saw in step 1. Some things will still
creep up in the development later, but taking a little time now to clean up
the objects can really make a difference in your ability to deliver on a
predictable basis.

Step 3: Create an ENTIRELY NEW USER INTERFACE. This is not for the faint of
heart. However, VB6 has a few advantages that your ordinary application
doesn't have. For one thing, all of it's objects comply with the COM
interface. Therefore, you can create an entirely new interface in .NET
without actually removing the old one. You can pop back and forth, validate
functionality, and even refactor the old code while writing the new
interface. Here is where the work done in Step 2 really pays off. If your
business object layer was actually designed to be independent of the U/I
layer, you will appreciate it today. If not, you will need to make it
independent. There is no way around it.

Step 4: retire the old user interface and release the code to business users
or beta testers. It takes time to create the new interface. Someone always
adds an "innovation " or two. Start collecting feedback now. Depending on
your business, it is perfectly acceptable to actually release the code at
this stage. If there are new features to add, do it using the OLD code base
and the OLD language, called from the new interface. In other words, keep
the layers intact.

Step 5: Create a parallel data access layer. This will be used by the .NET
business objects that you write. You will continue to use the VB6 Data
access layer while you still have VB6 components in play. You will use the
..NET data layer for .NET objects. Don't plan on mixing these two... it
isn't worth it. (take that from experience and pain... trying to use the
VB6 data layer from .Net, or vice versa, is a doorway to undue delay and
gnashing of teeth.)

Step 6: Pick a relatively self-contained set of business objects. Something
achievable. Don't go to the biggest, but don't pick the smallest either.
Give yourself a chance to succeed and still learn. Recode those business
objects to .Net. Have your GUI call them instead of calling the VB6
objects. Have the .Net objects call the parallel data access layer. Learn
from the experience.

Step 7: refactor everything. Literally, take an entire dev-test cycle to
just fix the stuff you need to fix. This could be a month or several
months, depending on the size and complexity of your app. Be specific.
Plan your refactoring. Do this only to improve structure. Apply lessons
learned to the new code, as well as fixes to the interface into the old
code.

Step 8: Release.

Step 9: Recode another set of business objects.

Step 10: Repeat steps 8 and 9 until all business objects are recoded in
..NET.

Step 11: buy champagne. Give everyone a week of skiing or windsurfing.

Hope this helps.

--
--- Nick Malik [Microsoft]
MCSD, CFPS, Certified Scrummaster
http://blogs.msdn.com/nickmalik

Disclaimer: Opinions expressed in this forum are my own, and not
representative of my employer.
I do not answer questions on behalf of my employer. I'm just a
programmer helping programmers.
--
"Joseph Geretz" <jg*****@nospam .com> wrote in message
news:%2******** ********@TK2MSF TNGP11.phx.gbl. ..
Our company develops and markets a client/server application which is
written in VB6 as a rich Win32 Client/Server application. For a variety of
technological reasons we are looking to migrate toward the .NET environment. However, a number of business factors make it impractical to accomplish this through an abrupt termination of the VB6 product and complete rewrite.
Instead, we are looking to perform new development in .NET and slowly over
time migrate existing code to .NET.

At this time, we are looking to add a brand new module to our product.
Obviously, the new module has some connection to the rest of the application in general. Be that as it may, it is sufficiently encapsulated unto itself
that we are contemplating developing this new module in .NET. I'm interested in any advice which you can offer about how we might 'plug in' a module
written in .NET into our VB6 application, specifically at the UI layer. We
must provide the user with a seamless UI interface to our application,
regardless of whether the user is interacting with a VB6 Form or with a ..NET WinForm.

Thanks very much for any advice which you can provide.

- Joe Geretz -

Jul 21 '05 #3
Joseph,

In first sight I thought I was disagreeing with Nick however reading it
repeatedly, I think he almost wrote the same as me. Therefore, I changed my
text bellow and deleting parts from the text because that doesn't add
anything.

My experience is that trying to keep older software in newer goes deeper and
deeper and at a certain moment the program parts to make everything
compatible is much larger than the part that should do the business.
(Although it is sometimes impossible not to do that).

I would look first how far my new module is dependent from my existing
application. The database part from VB6 and VBNet is the same, although you
should in my opinion directly use to access it ADONET in while you were
probably using ADODB.

This can become directly a problem when you look at the way you use now your
concurrency (optimistic versus pessimistic concurrency), however directly a
point where you have to make your decisions for the future because it has
has a major influence on using your data on disconnected devices.

My opinion is that when you are able to make a complete new module, which
only have some interfaces on the start menu level of your UI, that than the
growing and renewing part will be better of.

However, what I read between the lines in Nick's message; do those well and
with that, I follow completely the route he describes.

However just my thought.

Cor

"Joseph Geretz" <jg*****@nospam .com>
Our company develops and markets a client/server application which is
written in VB6 as a rich Win32 Client/Server application. For a variety of
technological reasons we are looking to migrate toward the .NET
environment. However, a number of business factors make it impractical to
accomplish this through an abrupt termination of the VB6 product and
complete rewrite. Instead, we are looking to perform new development in
.NET and slowly over time migrate existing code to .NET.

At this time, we are looking to add a brand new module to our product.
Obviously, the new module has some connection to the rest of the
application in general. Be that as it may, it is sufficiently encapsulated
unto itself that we are contemplating developing this new module in .NET.
I'm interested in any advice which you can offer about how we might 'plug
in' a module written in .NET into our VB6 application, specifically at the
UI layer. We must provide the user with a seamless UI interface to our
application, regardless of whether the user is interacting with a VB6 Form
or with a .NET WinForm.

Thanks very much for any advice which you can provide.

- Joe Geretz -

Jul 21 '05 #4
"Cor Ligthert" <no************ @planet.nl> wrote in message
news:%2******** *******@TK2MSFT NGP15.phx.gbl.. .
Joseph,

In first sight I thought I was disagreeing with Nick however reading it
repeatedly, I think he almost wrote the same as me.


High praise indeed, Cor. Thank you.

I blogged that message. I would appreciate your feedback on how I can make
it more clear. I've answered it before, and I'm hoping that this could be
the foundation for a quick article.

--
--- Nick Malik [Microsoft]
MCSD, CFPS, Certified Scrummaster
http://blogs.msdn.com/nickmalik

Disclaimer: Opinions expressed in this forum are my own, and not
representative of my employer.
I do not answer questions on behalf of my employer. I'm just a
programmer helping programmers.
--
Jul 21 '05 #5

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

9
2113
by: Paddy McCarthy | last post by:
Frustrated at being prevented from using Python at work I went gunning for Perl. Time to roll out some useless Google statistics to make me feel better Google Phrase count ------------- ----- "prefer perl to python" 26 "prefers perl to python" 0
1
1918
by: Keith R | last post by:
I have VB6, and eventually plan to upgrade to dotnet. I will soon start writing an application that will be mostly local (client?) but will interface with a server a few times, to authenticate users (and assign a user code), and at the end of the program, to upload some data back to the server. I figure I can write all the local stuff in...
19
2460
by: DW | last post by:
Hi, all... I have a sizeable database running under Oracle 9.2.0.4 under AIX 5.2.0. I am faced with an impending move to a Windows environment, running under SQL 2000. Currently, we are heavy users of shell scripts, for exports, backups, etc.
7
8054
by: Dave | last post by:
We are trying to migrate a MS SQL server app to DB2 8.1 Linux platform. Our database has got about 300+tables with total size - 150 GB We are using MS SQL's BCP utility to extract data from MS SQL's tables and loading into DB2 using DB2's LOAD utility. There are tons of colums of floating point types (singe precion & double...
4
3971
by: Abram Friesen | last post by:
Hi, I'm a developer for a software application vendor, and our application makes use of a customer-maintained Oracle 8i/9i database. We've had a customer request to support DB2 database, and I'm looking into the feasibility of migration. Our application runs on NT Server and, the DB2 database would be in some cases on a separate AIX...
1
2052
by: sac | last post by:
I am using DB2 v8.1 on UNIX. A few weeks ago the DBAs carried out node migration activity on the database. After the node migration I observed that the queries that execute on temporary tables show extreme poor performance. One of the query was partly optimized by declaring a partitioning key on the temporary table. However it still takes...
1
2658
by: rob | last post by:
Dear All, I have a very small test project to convert asp to asp.net using the Microsoft/Artisan ASP to ASP.NET Migration Assistant (http://msdn.microsoft.com/asp.net/using/migrating/aspmig/aspmigasst/default ..aspx). Everything works fine when my include file is in the same directory as the asp file that includes the include file. What I...
3
1042
by: Maxwell2006 | last post by:
Hi, Is there any book or resource that is designed to update the knowledge of ASP.NET 1.1 developers to 2.0? Any help would be appreciated,
5
1869
by: Alberto Salvati | last post by:
Hi, List. My company has a VERY BIG product base on db2 udb v7.x. We want to di an upgrade to v9, but.... current db has a lot of procedure (cobol..!). Therefore, we've planned to rewrite this code in sql or other language. My (stupid, i think..) question is: someone know a "thing" (wizard, tool, application..) helpful to reduce needed...
3
4621
Frinavale
by: Frinavale | last post by:
I have been researching the best approach to migrating a VB6 application into a VB.NET application. There is a lot of information out there but most of it recommends that you "train in the migration process before jumping into it". One site even recommends that this training process should take at least 2-3 weeks. I'm not sure how you can train...
0
7694
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However, people are often confused as to whether an ONU can Work As a Router. In this blog post, we’ll explore What is ONU, What Is Router, ONU & Router’s main...
0
7609
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can effortlessly switch the default language on Windows 10 without reinstalling. I'll walk you through it. First, let's disable language...
0
7921
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers, it seems that the internal comparison operator "<=>" tries to promote arguments from unsigned to signed. This is as boiled down as I can make it. ...
0
8118
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven tapestry of website design and digital marketing. It's not merely about having a website; it's about crafting an immersive digital experience that...
1
7666
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows Update option using the Control Panel or Settings app; it automatically checks for updates and installs any it finds, whether you like it or not. For...
0
6278
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing, and deployment—without human intervention. Imagine an AI that can take a project description, break it down, write the code, debug it, and then...
1
5504
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new presenter, Adolph Dupré who will be discussing some powerful techniques for using class modules. He will explain when you may want to use classes...
0
3651
by: TSSRALBI | last post by:
Hello I'm a network technician in training and I need your help. I am currently learning how to create and manage the different types of VPNs and I have a question about LAN-to-LAN VPNs. The last exercise I practiced was to create a LAN-to-LAN VPN between two Pfsense firewalls, by using IPSEC protocols. I succeeded, with both firewalls in...
1
1208
muto222
by: muto222 | last post by:
How can i add a mobile payment intergratation into php mysql website.

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.