Home
Browse all 647 examples
Download all 647 examples
Download sample chapters
Reviews
Errata
Acknowledgments
Links on .NET
Paradoxal Press

Buy directly from Paradoxal Press at $33.99 (Save 43%)



Category: Programming
Level: Beginner to seasoned
900 pages
ISBN-10 097661322-0
ISBN-13 978-097661322-0
$59.99 USA
$79.99 CANADA


Listing 22-26 extracted from chapter .NET Remoting


Listing 22-25<     > Listing 22-27


This listing can be compiled with the command line:
csc.exe /out:Server.exe /target:exe Example_22_26_to_rename_Server.cs /r:Interface.dll
Errors: 0 Warnings: 0


Example_22_26_to_rename_Server.cs
using System;
using System.Runtime.Remoting;
using System.Runtime.Remoting.Channels;
using System.Runtime.Remoting.Channels.Http;
using System.IO;
using System.Runtime.Serialization.Formatters.Soap;

using RemotingInterfaces;

namespace RemotingServer {
   public class Adder : MarshalByRefObjectIAdder {
      public Adder() {
         Console.WriteLine( "Adder ctor" );
      }
      public double Add( double d1, double d2 ) {
         Console.WriteLine("Adder Add( {0} + {1} )", d1, d2 );
         return d1 + d2;
      }
   }
   public class Multiplier : MarshalByRefObjectIMultiplier {
      public Multiplier() {
         Console.WriteLine( "Multiplier ctor" );
      }
      public double Mult( double d1, double d2 ) {
         Console.WriteLine( "Multiplier Mult( {0} + {1} )", d1, d2 );
         return d1 * d2;
      }
   }
   public class Divider : MarshalByRefObjectIDivider {
      public Divider() {
         Console.WriteLine( "Divider ctor" );
      }
      public double Div(double d1, double d2) {
         Console.WriteLine( "Divider Div( {0} + {1} )", d1, d2 );
         return d1 + d2;
      }
   }
   public class Factory : MarshalByRefObjectIFactory {
      public IAdder BuildNewAdder() { return new Adder(); }
      public IMultiplier BuildNewMultiplier() { return new Multiplier(); }
      public IDivider BuildNewDivider() { return new Divider(); }
   }
   class Program {
      static void Main() {
         HttpChannel channel = new HttpChannel65100 );
         ChannelServices.RegisterChannel( channel, false );

         Adder obj = new Adder();
         ObjRef objRef = RemotingServices.Marshal( obj );
         FileStream fStream=new FileStream"Adder.txt"FileMode.Create );
         SoapFormatter soapFormatter = new SoapFormatter();
         soapFormatter.Serialize( fStream, objRef );
         fStream.Close();

         Console.WriteLine( "Press a key to stop the server..." );
         Console.Read();
      }
   }
}	
Copyright Patrick Smacchia 2006 2007