473,656 Members | 2,824 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

Assembly Versioning Advice: Client needs to talk to 2 servers w/ different versions

I'm working on a client-server application where the client is
controlling two devices (aka servers) which both implement the same
interface contract.

We have a set of about 4 assemblies which specify the interfaces and
the data types which flow through the interfaces. Initially, we
thought this would be enough for the client to talk with the server.
In general it is, but when an exception is generated by the server it
fails to de-serialize if its declared in an assembly which doesn't
exist on the client-side. To workaround this, we've put all server
assemblies on the client-side.

All of the assemblies are strong-named and none are in the GAC,
they're all in the local program directory of the client. The client
is running on NT, so GAC-deployment isn't an option.

So, the exact same version that's running on the server has to be in
the client directory for everything to work. This causes a big problem
if we try to run two different versions of server code. Even if all
the interface definitions are the same, some small change in an
implementation DLL causes the version to be different which means we
can only talk to one of the two servers. Furthermore, our current
build process produces different assembly versions for every assembly
on every official build (default 1.0.* assembly version).

Our long-term plan is to move all exception definitions into the
interface DLLs; this eliminates the problem where implementation-side
changes need to affect the client. We would also only increment the
assembly version when the contents of the assembly actually change;
presumably something in our build process would detect this and
manually increment the assembly version. I assume we would have to
increment the assembly version as well if any dependent assemblies had
changed, correct?

There's still a possibility of exceptions being generated by
third-party OEMs. Does this mean I have to have the DLLs which might
contain 3rd party exception definitions in my client directory? Geez,
what a nightmare? Is this what everyone is dealing with?

Is that a good plan?

Next, I'm worried about a scenario where both servers are running
v1.0.0.0 of all interface DLLs, then one of them is upgraded for a
bugfix and that introduces a new exception in one of the interface
DLLs. Now, that interface DLL is v1.1.0.0.

The goal here would be to allow the client to be upgraded with the
v1.1.0.0 of the interface DLL, and the server to be upgraded with the
new interface DLL and all its implementation DLLs. The client would
still be able to communicate with the other server still running
v1.0.0.0.

From my newsgroup reading, there's some way to specify in a config
file that v1.1.0.0 can be loaded in place of v1.0.0.0, right? Is there
any automatic way to ensure that v1.1.0.0 is backwards compatible with
v1.0.0.0, for example verifying that v1.1.0.0 only adds content, does
not remove or modify any?

What I really wish is that .NET would automatically allow me to use a
newer version of the assembly as long as it didn't modify or remove
any existing parts of the original interface.

Is there someway I could use an assembly versioning scheme which
designated whether backwards compatability had been broken, so that I
could automatically detect whether the two servers are running
sufficiently compatible versions to co-exist?

This is so confusing I barely know what questions to ask, if you
understand my problem and have ideas I appreciate your help.

Thanks a ton,
-ken
Jul 21 '05 #1
0 1683

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

Similar topics

2
528
by: PatrickSA | last post by:
Hi, Am new to web services, so apologies for the basic nature of the question - and apologies in advance if this is the wrong newsgroup. We're building a new web service and I'm looking around for documentation on a number of issues, including versioning of web service interfaces... I've spent the last few hours looking through books, Google, MSDN and surprisingly I have found little or nothing that explains/shows how to practically...
3
2491
by: RickN | last post by:
We have a C# remoting application that runs thru the web. Assemblies appear to be loaded from the download cache. Is there any way to have them automatically copied to the GAC and be loaded from there: for performance reasons and to be applicable machine wide. We'd also like to be able to use an installation package to pre-load all the dll's and don't see how an installation program can pre-loaded them into the download cache. Thanks,...
0
328
by: Ken Durden | last post by:
I'm working on a client-server application where the client is controlling two devices (aka servers) which both implement the same interface contract. We have a set of about 4 assemblies which specify the interfaces and the data types which flow through the interfaces. Initially, we thought this would be enough for the client to talk with the server. In general it is, but when an exception is generated by the server it fails to...
5
12090
by: Laurence | last post by:
In VS.2005 using VB.NET There are two versions on every project, The Assembly Version and the File Version. Why are there two different versions? As far as I can tell, there is not need for two versions. The assembly is the file, isn't it?
0
1341
by: learnet | last post by:
Hi, I have a question about using different versions of same assembly from GAC.... I have created a assembly "testlib" and created a strong name for that assembly. Installed the assembly in GAC. Now I have created a client application (windows application) "usetestlib". In the assemblyinfo.cs file of usetestlib, i have given the version of the "testlib" assembly. while running the client application it is working fine.
1
2250
by: Coaster | last post by:
orig ref here http://groups.google.com/group/microsoft.public.dotnet.framework.aspnet/browse_thread/thread/ff29cc370678911d/c0db5b7e3da283b9?lnk=st&q=gac+assembly+new+version&rnum=7#c0db5b7e3da283b9 I have pasted the part I'm interested in below. My company doesn't use versioning or the gac and I'd like to. We're on vs.net 2005 & .net 2., is this still true or has it changed since then? thanks That article is not entirely accurate. ...
3
2802
by: Prakash | last post by:
Hello All, We have installed UDB 9.5 on HP-UX IA64 machine. We would like to install DB2 8.2 client on HP-UX PA-RISC V11.11. We want to install only on HPUX V 11.11 since we have licensed version MF Cobol on this. My question is: Can DB2 8.2 client talk to DB2 server 9.5? Please let me know asap.
3
5219
by: Pres | last post by:
Noticed that several windows API's take a size parameter. i.e. one of the members of the struct is dwSize which is supposed to be initialized by client code, by taking the sizeof of the struct. I assume this is to enable versioning of structures /* first version of struct */ typedef struct { int dwSize; type1 t1; } A; /* 2nd version of struct in new version of the library */
1
2718
by: Richard | last post by:
How do I determine the current runtime client version on an AIX box? What are the steps for upgrading a DB2 Client on an AIX box from 7 to 8 (or 9)? - do I need to uninstall 7 or just install 8 overtop of 7? - do I install the latest 8.x runtime client fixpack or do I make sure the fixpack level matches my server fixpack level? If the client talks to multiple servers at different fixpacks,
0
8816
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. Here is my compilation command: g++-12 -std=c++20 -Wnarrowing bit_field.cpp Here is the code in...
0
8717
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 captivates audiences and drives business growth. The Art of Business Website Design Your website is...
1
8498
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 most users, this new feature is actually very convenient. If you want to control the update process,...
0
8600
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each protocol has its own unique characteristics and advantages, but as a user who is planning to build a smart home system, I am a bit confused by the choice of these technologies. I'm particularly interested in Zigbee because I've heard it does some...
0
7311
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 launch it, all on its own.... Now, this would greatly impact the work of software developers. The idea...
0
5629
by: conductexam | last post by:
I have .net C# application in which I am extracting data from word file and save it in database particularly. To store word all data as it is I am converting the whole word file firstly in HTML and then checking html paragraph one by one. At the time of converting from word file to html my equations which are in the word document file was convert into image. Globals.ThisAddIn.Application.ActiveDocument.Select();...
0
4300
by: adsilva | last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?
1
2726
by: 6302768590 | last post by:
Hai team i want code for transfer the data from one system to another through IP address by using C# our system has to for every 5mins then we have to update the data what the data is updated we have to send another system
2
1600
bsmnconsultancy
by: bsmnconsultancy | last post by:
In today's digital era, a well-designed website is crucial for businesses looking to succeed. Whether you're a small business owner or a large corporation in Toronto, having a strong online presence can significantly impact your brand's success. BSMN Consultancy, a leader in Website Development in Toronto offers valuable insights into creating effective websites that not only look great but also perform exceptionally well. In this comprehensive...

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.