Beispiel #1
0
        private static void Run()
        {
            Console.WriteLine(@"正在启动服务...");
            #region boot
            EfContext.InitStorage(new SimpleEfContextStorage());
            // 环境初始化
            _acDomain = new DefaultAcDomain();
            _acDomain.AddService(typeof(ILoggingService), new Log4NetLoggingService(_acDomain));
            _acDomain.AddService(typeof(IAcSessionStorage), new SimpleAcSessionStorage());
            _acDomain.Init();
            _acDomain.RegisterRepository(new List<string>
            {
                "EdiEntities",
                "AcEntities",
                "InfraEntities",
                "IdentityEntities"
            }, typeof(AcDomain).Assembly);
            _acDomain.RegisterEdiCore();
            var processId = ConfigurationManager.AppSettings["ProcessId"];
            ProcessDescriptor process;
            if (!_acDomain.NodeHost.Processs.TryGetProcess(new Guid(processId), out process))
            {
                throw new AnycmdException("非法的分发器标识" + processId);
            }
            bool createdNew;
            // 使用本体标识从而限制一个本体只能有一个分发器进程
            string globalGuid = string.Format("Global\\{0}_Dispatcher", process.Process.OntologyId);
            var mutex = new Mutex(true, globalGuid, out createdNew);
            if (!createdNew)
            {
                //程序正在运行
                Console.WriteLine(@"绑定到本本体的程序已在运行……");
                Console.WriteLine(@"无需重复启动。按任意键退出本窗口");
                Console.ReadKey();
                return;
            }
            #endregion

            var dispatcher = _acDomain.GetRequiredService<IDispatcherFactory>().CreateDispatcher(process);
            Console.Title = process.Title;
            if (process.IsRuning())
            {
                //程序正在运行
                Console.WriteLine(@"绑定到本本体的程序已在运行……");
                Console.WriteLine(@"无需重复启动。按任意键退出本窗口");
                Console.ReadKey();
                return;
            }

            var serviceHost = new ServiceSelfHost(_acDomain, process);
            serviceHost.Init();
            var words = "命令提示:开始:start 停止:stop 退出:exit 帮助:help\n"
                + string.Format("监听地址:{0}", process.WebApiBaseAddress);
            Console.WriteLine(words);

            AtachEventMethod(dispatcher);
            dispatcher.Start();

            #region 控制
            var isRuning = false;
            while (true)
            {
                var arg = "";
                var readLine = Console.ReadLine();
                if (readLine != null) arg = readLine.Trim().ToLower();

                switch (arg)
                {
                    case "start":
                        dispatcher.Start();
                        isRuning = true;
                        break;
                    case "stop":
                        dispatcher.Stop();
                        isRuning = false;
                        break;
                    case "exit":
                        dispatcher.Stop();
                        isRuning = false;
                        Environment.Exit(0);
                        break;
                    case "?":
                    case "/?":
                    case "help":
                        Console.WriteLine(words);
                        if (isRuning)
                        {
                            Console.WriteLine(@"运行中...");
                        }
                        break;
                    case "":
                        break;
                    default:
                        Console.WriteLine(@"不支持的命令");
                        break;
                }
            }
            #endregion
        }
Beispiel #2
0
        private static void Run()
        {
            Console.WriteLine("正在启动服务...");
            #region boot
            EfContext.InitStorage(new SimpleEfContextStorage());
            // 环境初始化
            acDomain = new DefaultAcDomain();
            acDomain.AddService(typeof(ILoggingService), new Log4NetLoggingService(acDomain));
            acDomain.AddService(typeof(IAcSessionStorage), new SimpleAcSessionStorage());
            acDomain.Init();
            acDomain.RegisterRepository(new List <string>
            {
                "EdiEntities",
                "AcEntities",
                "InfraEntities",
                "IdentityEntities"
            }, typeof(AcDomain).Assembly);
            acDomain.RegisterEdiCore();

            string            processId = ConfigurationManager.AppSettings["ProcessId"];
            ProcessDescriptor process;
            if (!acDomain.NodeHost.Processs.TryGetProcess(new Guid(processId), out process))
            {
                throw new AnycmdException("非法的分发器标识" + processId);
            }
            bool createdNew;
            // 使用本体标识从而限制一个本体只能有一个执行器进程
            string globalGuid = string.Format("Global\\{0}_Executor", process.Process.OntologyId);
            var    mutex      = new Mutex(true, globalGuid, out createdNew);
            if (!createdNew)
            {
                //程序正在运行
                Console.WriteLine("绑定到本本体的程序已在运行……");
                Console.WriteLine("无需重复启动。按任意键退出本窗口");
                Console.ReadKey();
                return;
            }
            #endregion

            IExecutor executor = acDomain.GetRequiredService <IExecutorFactory>().CreateExecutor(process);
            Console.Title = process.Title;
            if (process.IsRuning())
            {
                //程序正在运行
                Console.WriteLine("绑定到本本体的程序已在运行……");
                Console.WriteLine("无需重复启动。按任意键退出本窗口");
                Console.ReadKey();
                return;
            }

            var serviceHost = new ServiceSelfHost(acDomain, process);
            serviceHost.Init();
            string words = string.Format("监听地址:{0}\n", process.WebApiBaseAddress)
                           + "命令提示:开始:start 停止:stop 退出:exit 帮助:help";
            Console.WriteLine(words);

            AtachEventMethod(executor);
            executor.Start();

            #region 控制
            bool isRuning = false;
            while (true)
            {
                string arg = "";
                arg = Console.ReadLine().Trim().ToLower();

                switch (arg)
                {
                case "start":
                    executor.Start();
                    isRuning = true;
                    break;

                case "stop":
                    executor.Stop();
                    isRuning = false;
                    break;

                case "exit":
                    executor.Stop();
                    isRuning = false;
                    Environment.Exit(0);
                    break;

                case "?":
                case "/?":
                case "help":
                    Console.WriteLine(words);
                    if (isRuning)
                    {
                        Console.WriteLine("运行中...");
                    }
                    break;

                case "":
                    break;

                default:
                    Console.WriteLine("不支持的命令");
                    break;
                }
            }
            #endregion
        }