• Remoting Helper


    
    //Share.cs
    namespace Microshaoft
    {
        using System;
        using System.Collections;
        using System.Collections.Generic;
        using System.Runtime.Remoting;
        using System.Runtime.Remoting.Channels;
        using System.Runtime.Remoting.Channels.Tcp;
        using System.Runtime.Serialization.Formatters;
        using System.Text;
        public static class RemotingHelper
        {
            public static void StartRemoting
                (
                    Type RemotingType
                    , string Url
                    , int Port
                )
            {
                BinaryServerFormatterSinkProvider provider = new BinaryServerFormatterSinkProvider();
                provider.TypeFilterLevel = TypeFilterLevel.Full;
                IDictionary ht = new Hashtable();
                ht["port"] = Port;
                TcpChannel tc = new TcpChannel(ht, null, provider);
                ChannelServices.RegisterChannel(tc, false);
                RemotingConfiguration.RegisterWellKnownServiceType(RemotingType, Url, WellKnownObjectMode.Singleton);
                Console.WriteLine("Remoting Object Started ...");
            }
            public static void StartRemoting<T>
                (
                    string Url
                    , int Port
                )
            {
                StartRemoting(typeof(T), Url, Port);
            }
            public static T GetRemotingLocalClientProxyObject<T>
                (
                    string Url
                )
            {
                return (T) Activator.GetObject
                                        (
                                            typeof(T)
                                            , Url
                                            //, "tcp://127.0.0.1:8080/queueUrl"
                                        );
            }
        }
    }
    namespace Microshaoft.RemotingObjects.Share
    {
        using System;
        [Serializable]
        public class BillingResponse
        {
            private int _Result;
            public int Result
            {
                get
                {
                    return _Result;
                }
                set
                {
                    _Result = value;
                }
            }
            private string _Description;
            public string Description
            {
                get
                {
                    return _Description;
                }
                set
                {
                    _Description = value;
                }
            }
        }
    }
    //client.cs
    namespace ConsoleApplication
    {
        using System;
        using Microshaoft;
        using Microshaoft.RemotingObjects;
        using Microshaoft.RemotingObjects.Share;
            /// <summary>
            /// Class1 的摘要说明。
            /// </summary>
        public class Class1
        {
            /// <summary>
            /// 应用程序的主入口点。
            /// </summary>
            //[STAThread]
            static void Main(string[] args)
            {
                //
                // TODO: 在此处添加代码以启动应用程序
                //
                
                BillingServiceRemoting x = RemotingHelper.GetRemotingLocalClientProxyObject<BillingServiceRemoting>("tcp://127.0.0.1:9090/testUrl");
                BillingResponse y = x.Billing("1", "2", "3", "4", "5");
                //x.HelloWorld("asdas");
                Console.WriteLine(x.HelloWorld("asdas"));
                Console.WriteLine(y.Description);
                Console.WriteLine(Environment.Version.ToString());
            }
        }
    }
    namespace Microshaoft.RemotingObjects
    {
        using System;
        using Microshaoft.RemotingObjects.Share;
        public interface BillingServiceRemoting
        {
            BillingResponse Billing
                (
                    string UserID
                    , string ProductID
                    , string BizModel
                    , string IP
                    , string TimeStamp
                );
            string HelloWorld(string s);
        }
    }
    //Server.cs
    namespace Microshaoft.RemotingObjects
    {
        using System;
        using System.Collections;
        using System.Runtime.Remoting;
        using System.Runtime.Remoting.Channels;
        using System.Runtime.Remoting.Channels.Tcp;
        using System.Runtime.Serialization.Formatters;
        using Microshaoft.RemotingObjects.Share;
        using Microshaoft;
        class BillingServiceRemoting : MarshalByRefObject
        {
            public static readonly string ServiceName = "Billing Remoting Service";
            public string HelloWorld
                (
                    string User
                )
            {
                Console.WriteLine("Helo");
                return "Hello " + User;
            }
            public BillingResponse Billing
                (
                    string UserID
                    , string ProductID
                    , string BizModel
                    , string IP
                    , string TimeStamp
                )
            {
                BillingResponse response = new BillingResponse();
                response.Result = 0; //表示成功
                response.Description = "成功了耶";
                Console.WriteLine("bill");
                return response;
            }
        }
    }
    namespace Microshaoft
    {
        using System;
        using System.ServiceProcess;
        using System.ComponentModel;
        using System.Security.Principal;
        using System.Configuration.Install;
        using Microshaoft.RemotingObjects;
        public class SimpleService : ServiceBase //继承于 ServiceBase
        {
            public static readonly string serviceName = "Hello-World Service1";
            public static void Main(string[] args)
            {
                SimpleService x = new SimpleService();
                int l = 0;
                if (args != null)
                {
                    l = args.Length;
                }
                if (l > 0) //有参数时以 console 方式运行
                {
                    Console.WriteLine("Run as Console");
                    x.OnStart(null);
                    Console.ReadLine();
                }
                else 
                //intallutil 成服务后
                //即: 无参数时,以 Service 方式运行
                {
                    Console.WriteLine("Run as Service");
                    ServiceBase.Run(x);
                }
            }
            public SimpleService()
            {
                CanPauseAndContinue = true;
                ServiceName = SimpleService.serviceName;
            }
            protected override void OnStart(string[] args)
            {
                Console.WriteLine(".Net Version: {0}", Environment.Version.ToString());
                Console.WriteLine("Current Identity: {0}", WindowsIdentity.GetCurrent().Name);
                Console.WriteLine("{0} started,at {1}", SimpleService.serviceName, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.ss"));
                RemotingHelper.StartRemoting<BillingServiceRemoting>
                                    (
                                        "testurl"
                                        , 9090
                                    );
                //log 写入 windows 应用程序日志
                EventLog.WriteEntry(string.Format(".Net Version: {0}", Environment.Version.ToString()));
                EventLog.WriteEntry(string.Format("Current Identity: {0}", WindowsIdentity.GetCurrent().Name));
                EventLog.WriteEntry(string.Format("{0} started, at {1}", SimpleService.serviceName, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.ss")));
                //在这里写你的程序
            }
    ///        protected override void OnStop()
    ///        {
    ///            EventLog.WriteEntry("Hello-World Service stopped");
    ///        }
    ///
    ///        protected override void OnPause()
    ///        {
    ///            EventLog.WriteEntry("Hello-World Service paused");
    ///        }
    ///
    ///        protected override void OnContinue()
    ///        {
    ///            EventLog.WriteEntry("Hello-World Service continued");
    ///        }
        }
        //以下就是比普通应用程序多出的 ProjectInstaller
        [RunInstallerAttribute(true)]
        public class ProjectInstaller: Installer
        {
            private ServiceInstaller serviceInstaller;
            private ServiceProcessInstaller processInstaller;
            public ProjectInstaller()
            {
                processInstaller = new ServiceProcessInstaller();
                serviceInstaller = new ServiceInstaller();
                // Service will run under system account
                processInstaller.Account = ServiceAccount.LocalSystem;
                // Service will have Start Type of Manual
                serviceInstaller.StartType = ServiceStartMode.Manual;
                serviceInstaller.ServiceName = SimpleService.serviceName;
                Installers.Add(serviceInstaller);
                Installers.Add(processInstaller);
            }
        }
    }
    
    
  • 相关阅读:
    移动端事件
    移动端的三种布局
    bootstrap自定义——栅格列数修改
    less文件的运行
    lessc的安装
    nodejs的安装
    jquery插件之jquery-ui
    指定网卡进行ping操作
    汇编语言从入门到精通-4标识符和表达式
    汇编语言从入门到精通-3操作数的寻址方式
  • 原文地址:https://www.cnblogs.com/Microshaoft/p/1322656.html
Copyright © 2020-2023  润新知