Sadly my final outcome was to use the GAC for about 6 components. Another complication I had to overcome was the remoting configuration - I use a customised compression sink based on Ingo Rammer's sample, but I cannot figure out how to configure that in code - so I have to ship a .config file, and then from code try to locate it and call it. Caused a bit of frustration.
Am looking at the GAC API to work out how to programmatically install my assemblies in the GAC when I auto-download a new version from the web. Obviously a simple solution is to shell to a batch file, but I'd rather do it cleanly if I can. Dino -----Original Message----- From: Discussion of advanced .NET topics. [mailto:[EMAIL PROTECTED] On Behalf Of Sébastien Lorion Sent: Thursday, 8 March 2007 07:52 To: ADVANCED-DOTNET@DISCUSS.DEVELOP.COM Subject: Re: [ADVANCED-DOTNET] Alternatives to remoting Out of curiosity, any follow-up on this ? I might run into this same kind of issues soon... Sébastien On 2/28/07, Dean Cleaver <[EMAIL PROTECTED]> wrote: > Hi, > > My issues aren't with the returned serialisable classes - it's with > the remote classes. Strangely, I can create an instance of my remote > factory, but when the factory tries to return an instance of another > MarshalByRef class, it fails with a "System.InvalidCastException: > Return argument has an invalid type.". > > Dino > > -----Original Message----- > From: Discussion of advanced .NET topics. > [mailto:[EMAIL PROTECTED] On Behalf Of Krebs > Kristofer > Sent: Wednesday, 28 February 2007 23:38 > To: ADVANCED-DOTNET@DISCUSS.DEVELOP.COM > Subject: Re: [ADVANCED-DOTNET] Alternatives to remoting > > Hi > > I had a similar problem like this and managed to solve this by > implementing my own binder. How do you get hold of the object > references that you are unable to cast? In my case I couldn't do this > in a certain > situation: > > [Serializable] > class MyType { > > ... > > public object Clone() { > MemoryStream ms = new MemoryStream(); > BinaryFormatter fmt = new BinaryFormatter(); > fmt.Serialize(ms, this); > ms.Position = 0; > return fmt.Deserialize(ms); > } > > } > > In another assembly referencing the assembly containing MyType this > call > failed: > > MyType copy = (MyType)original.Clone(); // Unable to cast > > I found this very strange but the original was loaded from a different > location. This was solved by using another binder than the default. > > public object Clone() { > MemoryStream ms = new MemoryStream(); > BinaryFormatter fmt = new BinaryFormatter(); > fmt.Serialize(ms, this); > --> fmt.Binder = new MyBinder(this.GetType().Assembly); > ms.Position = 0; > return fmt.Deserialize(ms); > } > > /// <summary> > /// Binder to handle serialization of self > /// </summary> > class MyBinder : SerializationBinder > { > Assembly _asm; > > public MyBinder(Assembly asm) { > _asm = asm; > } > > public override Type BindToType(string assemblyName, string > typeName) { > if (assemblyName == _asm.FullName) > return _asm.GetType(typeName); > else > return Type.GetType(String.Format("{0}, {1}", > typeName, assemblyName)); > } > } > > Basically my implementation of the binder tries to load the type from > a specific assembly otherwise load it from the referenced assemblies. > > // Kristofer > > -----Original Message----- > From: Discussion of advanced .NET topics. > [mailto:[EMAIL PROTECTED] On Behalf Of Dean Cleaver > Sent: den 27 februari 2007 21:33 > To: ADVANCED-DOTNET@DISCUSS.DEVELOP.COM > Subject: [ADVANCED-DOTNET] Alternatives to remoting > > Hi, > > I've been using Remoting on several projects with great success for > several years now, however I've now struck a hurdle - one of my > projects is an Outlook Addin, and it also loads as OCX controls into > HTML pages in Outlook folders - these are each in separate AppDomains > over which I have no control, and one uses shadow copy one doesn't, so > they load the same files from different locations. This causes > remoting to complain that it can't cast A to A, because it thinks > they're different. Putting them in the GAC isn't really an option > either, as this system is auto-updated over the web while running as a > user. Otherwise, the GAC might have solved the problem. > > The obvious choice is WebServices, but some projects have 150+ classes > in them that I call - I'd have to make 150+ web services, but also I'd > have to add 150+ web references to the Business Services project - > seems very messy to me. > > Another option is to create one massive web service with functions > like Aload, ASave and BLoad etc that call the existing Data Access > class functions, and return the same objects/values. Seems like it > would get out of hand quickly - 150+ classes with 10+ methods each - > that's a lot of functions in one web service. > > Are there any other options I have missed? > > Dino > > =================================== > This list is hosted by DevelopMentor(r) http://www.develop.com > > View archives and manage your subscription(s) at > http://discuss.develop.com > > =================================== > This list is hosted by DevelopMentor(r) http://www.develop.com > > View archives and manage your subscription(s) at > http://discuss.develop.com > > =================================== > This list is hosted by DevelopMentor(r) http://www.develop.com > > View archives and manage your subscription(s) at > http://discuss.develop.com > -- Sébastien www.sebastienlorion.com =================================== This list is hosted by DevelopMentor® http://www.develop.com View archives and manage your subscription(s) at http://discuss.develop.com