Mega Code Archive

 
Categories / C# / Design Patterns
 

Pattern Example

using System; using System.Runtime.Remoting; using System.Runtime.Remoting.Channels; public interface IEmployee {     string Design();     string StressTest();     string Mechanical();     string Performance(); } public class ChiefDesignEngineer : MarshalByRefObject, IEmployee {     public string Design() {         return "Design ";     }     public string StressTest() {         return "stress";     }     public string Mechanical() {         return "mechanical";     }     public string Performance() {         return "performance";     }     public ChiefDesignEngineer() { ;} } public class ProxyChiefDesignEngineer : MarshalByRefObject, IEmployee {     private ChiefDesignEngineer chief;     public string Design() {         return this.chief.Design();     }     public string StressTest() {         return this.chief.StressTest();     }     public string Mechanical() {         return "A supplement to mechanical";     }     public string Performance() {         return "Performance information is in the manual.";     }     public ProxyChiefDesignEngineer() {         this.chief = new ChiefDesignEngineer();     } } public class Server {     static void Main(string[] args) {         TcpServerChannel channel = new TcpServerChannel(1234);         ChannelServices.RegisterChannel(channel);         RemotingConfiguration.RegisterWellKnownServiceType(typeof(ProxyChiefDesignEngineer), "RemoteProxy", WellKnownObjectMode.SingleCall);         Console.WriteLine("Press [Enter] to terminate server...");         Console.ReadLine();     } } public class Client {     static void Main(string[] args) {         TcpClientChannel channel = new TcpClientChannel();         ChannelServices.RegisterChannel(channel);         RemotingConfiguration.RegisterWellKnownClientType         (typeof(ProxyChiefDesignEngineer), "tcp://localhost:1234/RemoteProxy");         ProxyChiefDesignEngineer ukProxyChief = new ProxyChiefDesignEngineer();         Console.WriteLine("Answer: " + ukProxyChief.Performance());         Console.WriteLine("Answer: " + ukProxyChief.Design());     } }