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 }
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 }