static void Main(string[] args)
        {
            DemoClass  demo          = new DemoClass();
            IDemoClass demoInterface = demo;

            Console.WriteLine("Hello World!");
        }
Exemplo n.º 2
0
        private static IDemoClass GetSingleCallObject()
        {
            string     url = "tcp://127.0.0.1:8501/SimpleRemote/ServerSingleCall";
            IDemoClass obj = (IDemoClass)Activator.GetObject(typeof(IDemoClass), url);

            return(obj);
        }
Exemplo n.º 3
0
        public Form1()
        {
            InitializeComponent();
            //ClientActivated();
            //ServerSingleton();
            //ServerSingleCall();

            //RunTest("CAO1");
            //RunTest("CAO2");

            IDemoClass obj1 = GetSingleCallObject();

            obj1.ShowAppDomain();
            obj1.ShowCount("wk1");
            obj1.ShowCount("wk1");

            IDemoClass obj2 = GetSingletonObject();

            obj1.ShowAppDomain();
            obj1.ShowCount("wk2");
            obj1.ShowCount("wk2");
        }
Exemplo n.º 4
0
        static void Main(string[] args)
        {
            //1.确立通道传送方式
            TcpClientChannel clientChannel = new TcpClientChannel();

            ChannelServices.RegisterChannel(clientChannel, false);

            //因为客户端仅引用了IDemoClass,所以无法通过new 对象的方式创建远程对象。
            //所以无法使用客户端注册远程对象(RemotingConfiguration.RegisterWellKnownClientType)。
            //故而只能采用Activator.GetObject()方式来创建远程对象
            //IDemoClass demo =(IDemoClass)Activator.GetObject(typeof(IDemoClass), "tcp://127.0.0.1:8501/RemovedDemo/ServerActivated");
            //demo.ShowAppDomain();
            //demo.ShowCount("Zhang");

            IServerFactory serverFactory = (IServerFactory)Activator.GetObject(typeof(IServerFactory), "tcp://127.0.0.1:8501/RemovedDemo/ServerFactotyActivated");
            IDemoClass     demo          = serverFactory.GetDemoClass();

            demo.ShowAppDomain();
            demo.ShowCount("Zhang");

            Console.ReadLine();
        }
Exemplo n.º 5
0
        /// <summary>
        /// Run the demo.
        /// </summary>
        public static void Run()
        {
            // define a trace source logger with file listener.
            string logFilePath =
                Path.Combine(AppContext.BaseDirectory, "UnityDemo.log");
            Stream logStream = File.Create(logFilePath);
            TextWriterTraceListener traceListener =
                new TextWriterTraceListener(logStream);
            SourceSwitch verboseSwitch =
                new SourceSwitch("VerboseSwitch", "Verbose");
            ILoggerFactory loggerFactory =
                new LoggerFactory().AddTraceSource(verboseSwitch, traceListener);

            // define a local logger instance.
            ILogger logger = loggerFactory.CreateLogger <UnityDemo>();

            // create unity container instance.
            UnityContainer container = new UnityContainer();

            logger.LogDebug("Unity Container created.");

            // add logging extension to the unity container.
            container.AddExtension(new LoggingExtension(loggerFactory));
            logger.LogDebug("Logging extension added.");

            // load unity config file
            ExeConfigurationFileMap fileMap =
                new ExeConfigurationFileMap
            {
                ExeConfigFilename = "UnityDemo.unity.config"
            };
            Configuration configuration =
                ConfigurationManager.OpenMappedExeConfiguration(
                    fileMap,
                    ConfigurationUserLevel.None);
            UnityConfigurationSection unitySection =
                (UnityConfigurationSection)configuration.GetSection("unity");

            // load design-time configuration to the unity container.
            container.LoadConfiguration(unitySection);
            logger.LogDebug("Design-time configuration loaded.");

            // add runtime registration to the unity container.
            container.RegisterType <IDemoClass, DemoClass>(
                "runtime_register",
                new InjectionConstructor(
                    new ResolvedParameter(typeof(ILogger <DemoClass>), "logger"),
                    new ResolvedParameter(typeof(string), "name"),
                    new ResolvedParameter(typeof(string), "value")));
            logger.LogDebug("Runtime type mapping registered.");

            // define parameter overrides for design time resolving.
            ParameterOverride designTimeNameOverride =
                new ParameterOverride("name", "design_time_demo_1");
            ParameterOverride designTimeValueOverride =
                new ParameterOverride("value", "demo_value_1");

            // resolve demo class instance from design time registration with parameter overrides.
            IDemoClass designTimeDemoClass =
                container.Resolve <IDemoClass>(
                    "design_time_register",
                    designTimeNameOverride,
                    designTimeValueOverride);

            Console.WriteLine($"Resolved design time demo class: {designTimeDemoClass}");
            designTimeDemoClass.DemoMethod();

            // define parameter overrides for runtime time resolving.
            ParameterOverride runtimeNameOverride =
                new ParameterOverride("name", "runtime_demo_2");
            ParameterOverride runtimeValueOverride =
                new ParameterOverride("value", "demo_value_2");

            // resolve demo class instance from runtime registration with parameter overrides.
            IDemoClass runtimeDemoClass =
                container.Resolve <IDemoClass>(
                    "runtime_register",
                    runtimeNameOverride,
                    runtimeValueOverride);

            Console.WriteLine($"Resolved runtime demo class: {runtimeDemoClass}");
            runtimeDemoClass.DemoMethod();

            // release the log file handler.
            loggerFactory.Dispose();

            // print unity config file
            Console.WriteLine();
            string configFilePath =
                Path.Combine(AppContext.BaseDirectory, fileMap.ExeConfigFilename);

            Console.WriteLine($"[Trace] unity config file: {configFilePath}");
            Console.WriteLine(File.ReadAllText(configFilePath, Encoding.UTF8));

            // print log file
            Console.WriteLine();
            Console.WriteLine($"[Trace] log file: {logFilePath}");
            Console.WriteLine(File.ReadAllText(logFilePath, Encoding.UTF8));
        }