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 0 1683 This thread has been closed and replies have been disabled. Please start a new discussion. Similar topics |
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...
|
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,...
|
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...
|
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?
|
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.
| |
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. ...
|
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.
|
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 */
|
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,
|
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...
|
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...
| |
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,...
|
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...
|
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...
|
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();...
|
by: adsilva |
last post by:
A Windows Forms form does not have the event Unload, like VB6. What one acts like?
|
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
| |
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...
| |