473,385 Members | 1,838 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,385 software developers and data experts.

General DLL Questions - Best Practices? Suggestions? Comments?

So we develop and maintain several applications used by several people
in the same company, on the same intranet.

There are several applications written in VB6, but going forward all of
the new development will be done in .NET 2.0, including eventual
rewrites of all the VB6 apps.

The VB6 executables are all stored in a network folder, and everyone
accesses these exe's using shortcuts to them on their desktop. Going
forward, we will use clickonce, chosing "online only" and instead of
having shortcuts to the programname.exe file in the network folder, we
will have a shortcut to the programname.application file in the network
folder. Basically, I get the same effect of keeping everything on the
network, but the advantage is, i never have to worry about kicking
anyone off the program to update it (due to inability to overwrite
files in use). The .application file will redirect the user to the new
version and i can send an update with one menu click without having any
care whether people are using the program or not.

Currently all of our VB6 DLL's are deployed using a login script that
runs every time a user logs into windows, which basically takes a copy
of each dll from the network puts it in the users system32 folder and
runs regsvr32.exe for each dll. And my plan here is to find a new
..NETish way of doing this.

So there are 5 different types of dll's that will need to be taken into
consideration.
1) the old vb6 dll's that will continue to be relevant up until every
single vb6 app is rewritten.
2) the new .NET Dll's that will be utilized by the new .NET versions of
the applications.
these can be broken down into:
a) dll's that will be essential to all or most of our applications.
They contain objects and functions, but no visuals.
b) dll's that can be used by any number of applications that contains
custom controls... visuals, such as maybe a form that already includes
a menu with all of our standard menu options.
c) dll's that contain different portions of a single application and
will only be used by that application. The idea being that even though
you can create one big executable, if you instead broke it down to one
small executable and four small dlls, then launching the exe takes up
less memory and depending on what you are using the program for, the
user may only need to access just one or two of the four librarys,
keeping the cpu usage at a minimum.
3) dll's that were not created by anyone at our company, but are
essential in order for the program to run. Crystal report dll's.
Perhaps we buy a 3rd party datagrid or datawindow.

So finally, here is what I am looking for... just a simple solution to
adding/updating all of these 5 types of dll's. Ideally, I could just
drop all of the dll's in the some folder on the network and have all of
my future projects reference them directly, accessing them as they
stand on the network, and every time a dll of any of these 5 types of
dlls changes, I can simply overwrite them where they stand on the
network.

Unfortunately, it's not going to be that simple. I can't just overwrite
an old dll with a new dll if it is being shared on the network very
easily, because more than likely that dll is currently in use by
someone on some machine, and therefore can not be overwritten. Is there
a way of instead of making a reference to a dll directly, I make a
reference to something that points to the latest version of the dll
(sort of like how making a shortcut to the .application file opens up
the latest version of the executable)?

also, some other questions about things I've mentioned in this post.

1)the dll's described in type 1. I couldnt just put them on the network
the way I am describing regardless of the whole "overwriting files in
use" dilemma. vb6 files need to be registered. So should I just
continue to let the login script update these until they are completely
fazed out? Or if there is some way of doing what I described in my last
paragraph, would it not care what type of dll it is?

2)The dll's I describe in type 2)b).. custom controls like forms or
components that belong on forms that are saved in a dll. Lets say I
make a reference to one of these dlls from one of my applications so i
can include a control that consists of 3 buttons and 3 text boxes all
on the same panel. Now I compile the program and update it. Now I
change my custom control so that instead of having 3 buttons and 3 text
boxes, it has 4 of each, and i made all the buttons blue. I re-build
the dll. Now I want my application to reflect the change in the
control. Does the application need to be recomplied? Or will
overwriting the old dll with the new one, and re-running the program be
good enough?

3) the dll's I describe in 2)c).. mini dlls specific to 1 app, that
exist solely for the purpose of keeping the exe small, hence having the
exe use less cpu. Is this even a good idea? or is it overkill?

4) I am also investigating the idea of using remoting or web services
instead of custom dll's, since i know they can easily be stored on a
server and do not need to be on each individual machine. I have some
good sites explaining the 2 of them, and the differences between the 2
of them. But it seems like a lot of work, and may be overkill for what
I am trying to accomplish. Is this a path worth exploring, or is the
answer much simpler?

5) As I said, ideally all of the dlls can be stored on the network, and
updating them will be as easy as putting new ones out there, whenever i
want, without minding whether the old ones are in use. However I am not
opposed, if it is simpler, to having the dll's get installed on each
machine... if it can be done with ease, automatically. I assume if this
is the correct solution, that I should be storing them all in the GAC.
However, I doubt i would bother strong-naming as I would keep all
versions of dll's backwards compatible. Any insight on this idea would
be great.

Any comments, suggestions, answers to any of the questions, no matter
how brief, or even if they are simply links to web sites with better
explanations of things will be greatly appreciated.

Converting to .NET is a big project, and I want to get it right from
the start.

Thanks in advance for any feedback.

Mike

Feb 13 '06 #1
0 1722

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

Similar topics

37
by: middletree | last post by:
Yesterday, I posted a problem which, by the way, I haven't been able to solve yet. But in Aaron's reply, he questioned why I did several things the way I did. My short answer is that I have a lot...
14
by: Bert Vandenberghe | last post by:
Hi, I was wondering if there are any best practices on the creation of webmethods? I'll try to explain this a little more: My problem is that we are changing an existing (large) DCOM application...
4
by: DeepDiver | last post by:
I am developing an inventory database in SQL Server. I realize there are many commercial (as well as some non-commercial) inventory offerings, but my client has specific requirements that would...
5
by: BK | last post by:
We've got a fairly large scale development process under way in .NET 2003. We are about a month away from go-live for phase 1, second phase is rather short and all work should be completed in the...
26
by: puzzlecracker | last post by:
It'd be interesting to compare the learning practices of c++ practitioners. I'll start with mine The C++ Programming Language C++ Primer Effective C++ More Effective C++ Effective STL The...
24
by: Jimmy | last post by:
hi everyone. building a website for a client and have a few questions related to best practices, what i should use etc... the site will use a database to store info entered by users. each visit...
41
by: Jim | last post by:
Hi guys, I have an object which represents an "item" in a CMS "component" where an "item" in the most basic form just a field, and a "component" is effectively a table. "item" objects can be...
13
by: General Fear | last post by:
Does anyone in this forum know of tech questions for an Access programmer? I have not been able to find a good web page with Access tech questions. I am interviewing Access programmers and want...
8
by: wangdaixing | last post by:
I am reading "Programming .NET Components" 2nd Edition by Juval Lowy, O'Reilly. In Appendix E, there is a chapter "Coding Practices" which I agree and practice mostly. However, there are a few...
0
by: taylorcarr | last post by:
A Canon printer is a smart device known for being advanced, efficient, and reliable. It is designed for home, office, and hybrid workspace use and can also be used for a variety of purposes. However,...
0
by: Charles Arthur | last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
0
by: aa123db | last post by:
Variable and constants Use var or let for variables and const fror constants. Var foo ='bar'; Let foo ='bar';const baz ='bar'; Functions function $name$ ($parameters$) { } ...
0
by: emmanuelkatto | last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud. Please let me know. Thanks! Emmanuel
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...
0
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,...
0
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...
0
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,...
0
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...

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.