Ejemplo n.º 1
0
        M对象 创建对象(IT服务端 __IT服务端, B资源监控 __监控, string __对象名称 = "资源监控", string __分类 = "")
        {
            var __对象 = new M对象(__对象名称, __分类);

            __对象.添加属性("配置", () => HJSON.序列化(__监控.配置), E角色.客户, null);
            __对象.添加属性("总内存", () => string.Format("{0} GB", __监控.总内存 / 1024), E角色.客户, null);

            __对象.添加方法("设置配置", __实参列表 =>
            {
                var __配置 = HJSON.反序列化 <M资源监控配置>(__实参列表["配置"]);
                __监控.配置  = __配置;
                File.WriteAllText(H路径.获取绝对路径("资源监控配置.txt"), HJSON.序列化(__配置), Encoding.UTF8);
                return("");
            }, E角色.客户, null, null);

            __对象.添加方法("查询状态", __实参列表 =>
            {
                return(HJSON.序列化(__监控.查询状态()));
            }, E角色.客户, null, null);

            __对象.添加事件("告警", E角色.客户, new List <M形参> {
                new M形参("描述", "string")
            });
            __监控.阈值告警 += __描述 =>
            {
                H业务日志.记录("进程", __描述);
                __IT服务端.触发事件(__对象名称, "告警", new Dictionary <string, string> {
                    { "描述", __描述 }
                });
            };

            return(__对象);
        }
Ejemplo n.º 2
0
        private M对象 创建工程通用访问对象()
        {
            var __对象 = new M对象("对象1", "业务1");

            __对象.添加属性("号码方案", () => _号码方案, E角色.工程, new M元数据 {
                类型 = "string", 结构 = E数据结构.单值, 默认值 = "标准", 范围 = "浙江/标准"
            });
            __对象.添加属性("网速", () => _网速.ToString(), E角色.工程, new M元数据 {
                类型 = "int", 结构 = E数据结构.单值
            });
            __对象.添加属性("资源消耗", () => _资源消耗.ToString(), E角色.工程, new M元数据 {
                类型 = "int", 结构 = E数据结构.单值, 范围 = "0-10000"
            });
            __对象.添加方法("设置网速", __参数列表 => { _网速 = int.Parse(__参数列表["网速"]); return(string.Empty); }, E角色.工程, new List <M形参>
            {
                new M形参("网速", new M元数据 {
                    类型 = "int", 结构 = E数据结构.单值, 描述 = "测试3次以上取平均值", 默认值 = "2000"
                }),
            });
            __对象.添加方法("设置号码方案", __参数列表 => { _号码方案 = __参数列表["号码方案"]; return(string.Empty); }, E角色.工程, new List <M形参>
            {
                new M形参("号码方案", new M元数据 {
                    类型 = "string", 结构 = E数据结构.单值, 默认值 = "标准", 范围 = "浙江/标准"
                }),
            }, null);
            return(__对象);
        }
Ejemplo n.º 3
0
        M对象 创建对象(IT服务端 __IT服务端, BFTP __FTP, string __对象名称 = "FTP", string __分类 = "")
        {
            var __对象 = new M对象(__对象名称, __分类);

            __对象.添加属性("运行中", () => __FTP.运行中.ToString(), E角色.客户, null);
            __对象.添加属性("端口号", () => __FTP.端口号.ToString(), E角色.客户, null);
            __对象.添加属性("目录", () => __FTP.目录, E角色.客户, null);
            __对象.添加属性("编码", () => "GB2312", E角色.客户, null);
            __对象.添加方法("开启", __实参列表 =>
            {
                var __目录  = __实参列表["目录"];
                var __端口号 = int.Parse(__实参列表["端口号"]);
                __FTP.开启(__目录, __端口号);
                return("");
            }, E角色.客户, new List <M形参>
            {
                new M形参("目录", "string"),
                new M形参("端口号", "int"),
            }, null);
            __对象.添加方法("关闭", __实参列表 =>
            {
                __FTP.关闭();
                return("");
            }, E角色.客户, null, null);
            __对象.添加事件("开关变化", E角色.客户, new List <M形参> {
                new M形参("开", "bool")
            });
            __FTP.状态变化 += __参数 => __IT服务端.触发事件(__对象名称, "开关变化", new Dictionary <string, string> {
                { "开", __参数.ToString() }
            });
            return(__对象);
        }
Ejemplo n.º 4
0
        public M对象 创建对象(string __名称 = "测试", string __分类 = "")
        {
            var __对象 = new M对象(__名称, __分类);

            __对象.添加属性("点结构属性1", () => "HELLO 你好!!!!!!!!");
            __对象.添加属性("点结构属性2", () => "1");
            __对象.添加属性("列结构属性", () => HJSON.序列化(new List <int> {
                1, 2, 3
            }), E角色.开发, new M元数据 {
                类型 = "int", 结构 = E数据结构.单值数组, 默认值 = "[1,2,3]", 范围 = "1-10",
            });
            __对象.添加属性("行结构属性", () => HJSON.序列化(new Mdemo {
                点属性 = 111, 行属性 = new Mdemo1 {
                    点属性1 = 1211, 点属性2 = "1221"
                }
            }));
            __对象.添加属性("表结构属性", () => HJSON.序列化(new List <Mdemo>
            {
                new Mdemo {
                    点属性 = 111, 行属性 = new Mdemo1 {
                        点属性1 = 1211, 点属性2 = "1221"
                    }
                },
                new Mdemo {
                    点属性 = 112, 行属性 = new Mdemo1 {
                        点属性1 = 1212, 点属性2 = "1222"
                    }
                },
            }));
            __对象.添加方法("使用单值", 实参列表 => 执行方法("使用单值", 实参列表), E角色.开发, new List <M形参>
            {
                new M形参("参数1", "int"),
                new M形参("参数2", "string"),
            }, new M元数据 {
                类型 = "string", 描述 = "描述xxx", 结构 = E数据结构.单值, 范围 = "范围xxx"
            });
            __对象.添加方法("使用对象", 实参列表 => 执行方法("使用对象", 实参列表), E角色.开发, new List <M形参>
            {
                new M形参("参数1", 获取行元数据()),
            }, 获取行元数据());
            __对象.添加方法("使用单值数组", 实参列表 => 执行方法("使用单值数组", 实参列表), E角色.开发, new List <M形参>
            {
                new M形参("参数1", "int", E数据结构.单值数组),
                new M形参("参数2", "string"),
            }, new M元数据 {
                类型 = "int", 描述 = "描述xxx", 结构 = E数据结构.单值数组, 范围 = "范围xxx"
            });
            __对象.添加方法("使用对象数组", 实参列表 => 执行方法("使用对象数组", 实参列表), E角色.开发, new List <M形参>
            {
                new M形参("参数1", 获取表元数据()),
            }, 获取表元数据());
            //__对象.添加方法("使用单值2", "参数1:int.参数2:string", "string", 实参列表 => 执行方法("使用单值", 实参列表), E角色.开发);
            //__对象.添加方法("使用对象数组2",
            //    "参数1:,对象数组(参数1:int;参数2:string),描述.参数2:MXXX,对象(参数1:int,单值数组,xxx;参数2:string,,事大法师的).参数3:int,单值数组",
            //    "",
            //    实参列表 => 执行方法("使用对象数组", 实参列表), E角色.开发);
            __对象.添加方法("返回字符串表格", 实参列表 => 执行方法("返回字符串表格", 实参列表));
            __对象.添加方法("返回字符串表格2", 实参列表 => 执行方法("返回字符串表格2", 实参列表));
            return(__对象);
        }
Ejemplo n.º 5
0
        private void 配置通用访问()
        {
            var _对象 = new M对象(_对象名称, "通用服务");

            _对象.添加属性("名称", () => 片.称, E角色.客户);
            _对象.添加属性("描述", () => 片.描述, E角色.客户);
            _对象.添加属性("版本号", () => 片.版本号, E角色.客户);
            _对象.添加属性("版本时间", () => 片.版本时间, E角色.客户);
            _对象.添加方法("查询", __实参列表 => HJSON.序列化(片), E角色.客户, null, null);
            _对象.添加方法("查询参数", __实参列表 => HJSON.序列化(参数列表), E角色.客户, null, null);

            _IT服务端.添加对象(_对象名称, () => _对象);
        }
Ejemplo n.º 6
0
        void 配置通用访问(string __对象名称)
        {
            if (!H容器.可取出 <IT服务端>())
            {
                return;
            }
            var __IT服务端 = H容器.取出 <IT服务端>();
            var __对象    = new M对象(__对象名称, null);

            __对象.添加方法("设置连接参数", __实参列表 =>
            {
                var __账号  = __实参列表["账号"];
                var __密码  = __实参列表["密码"];
                var __数据源 = __实参列表["数据源"];
                保存连接参数(__账号, __密码, __数据源);
                return("");
            }, E角色.工程, new List <M形参> {
                new M形参("账号", "string"), new M形参("密码", "string"), new M形参("数据源", "string")
            });
            __对象.添加属性("账号", () => 账号, E角色.工程);
            __对象.添加属性("密码", () => 密码, E角色.工程);
            __对象.添加属性("数据源", () => 地址, E角色.工程);
            __对象.添加属性("保留天数", () => H程序配置.获取字符串("保留天数"), E角色.工程);
            __对象.添加方法("设置保留天数", __实参列表 =>
            {
                var __天数 = __实参列表["天数"];
                H程序配置.设置("保留天数", __天数);
                return("");
            }, E角色.工程, new List <M形参> {
                new M形参("天数", "int")
            });
            __对象.添加方法("检测连接", __实参列表 =>
            {
                var __账号  = __实参列表["账号"];
                var __密码  = __实参列表["密码"];
                var __数据源 = __实参列表["数据源"];
                if (_D数据库.连接SQLSERVER(__账号, __密码, __数据源))
                {
                    if (_D数据库.存在GIS数据库(__账号, __密码, __数据源, 称))
                    {
                        return("连接 MS SQL SERVER 成功, GIS数据库已存在");
                    }
                    return("连接 MS SQL SERVER 成功, GIS数据库未创建");
                }
                return("连接 MS SQL SERVER 失败");
            }, E角色.工程, new List <M形参> {
                new M形参("账号", "string"), new M形参("密码", "string"), new M形参("数据源", "string")
            });

            __IT服务端.添加对象(__对象名称, () => __对象);
        }
Ejemplo n.º 7
0
        private void 配置通用访问(string __对象名称)
        {
            var __对象 = new M对象(__对象名称, null);

            __对象.添加属性("启用", () => _MGPS过滤.启用.ToString(), E角色.工程);
            __对象.添加属性("省", () => _MGPS过滤.省, E角色.工程);
            __对象.添加属性("市", () => _MGPS过滤.市, E角色.工程);
            __对象.添加方法("设置", q =>
            {
                _MGPS过滤.启用 = bool.Parse(q["启用"]);
                _MGPS过滤.省  = q["省"];
                _MGPS过滤.市  = q["市"];
                H程序配置.设置("GPS过滤", HJSON.序列化(_MGPS过滤, false).Replace('"', '\''));
                设置区域(_MGPS过滤.省, _MGPS过滤.市);
                return(null);
            }, E角色.工程, new List <M形参> {
                new M形参("启用", "bool"), new M形参("省", "string"), new M形参("市", "string")
            });
            _IT服务端.添加对象(__对象名称, () => __对象);
        }
Ejemplo n.º 8
0
        private void 配置通用访问()
        {
            var _对象 = new M对象(_对象名称, "通用服务");

            _对象.添加属性("支持", () => 支持.ToString(), E角色.客户, null);
            _对象.添加属性("运行中", () => 运行中.ToString(), E角色.客户, null);
            _对象.添加属性("端口号", () => 端口号.ToString(), E角色.客户, null);
            _对象.添加属性("目录路径", () => H路径.序目录, E角色.客户, null);
            _对象.添加属性("编码", () => "GB2312", E角色.客户, null);
            _对象.添加方法("开启", __实参列表 =>
            {
                开启();
                return("");
            }, E角色.客户, null, null);
            _对象.添加方法("关闭", __实参列表 =>
            {
                关闭();
                return("");
            }, E角色.客户, null, null);
            _IT服务端.添加对象(_对象名称, () => _对象);
        }
Ejemplo n.º 9
0
        M对象 创建对象(IT服务端 __IT服务端, string __对象名称 = "业务日志", string __分类 = "")
        {
            var __对象 = new M对象(__对象名称, __分类);

            __对象.添加属性("缓存上限", () => H业务日志.缓存上限.ToString(), E角色.客户, null);

            __对象.添加方法("查询缓存", __实参列表 =>
            {
                //return HJSON.AES压缩(HJSON.序列化(H业务日志.查询缓存()));
                return(HJSON.序列化(H业务日志.查询缓存()));
            }, E角色.客户, null, null);

            return(__对象);
        }
Ejemplo n.º 10
0
        M对象 创建对象(IT服务端 __IT服务端, B链路监控 __Ping, string __对象名称 = "链路监控", string __分类 = "")
        {
            var __对象 = new M对象(__对象名称, __分类);

            __对象.添加属性("配置", () => HJSON.序列化(__Ping.配置), E角色.客户, null);

            __对象.添加方法("查询状态", __实参列表 =>
            {
                return(HJSON.序列化(__Ping.查询状态()));
            }, E角色.客户, null, null);

            __对象.添加方法("修改配置", __实参列表 =>
            {
                var __配置 = HJSON.反序列化 <M链路监控配置>(__实参列表["配置"]);
                __Ping.修改配置(__配置);
                File.WriteAllText(H路径.获取绝对路径("链路监控配置.txt"), HJSON.序列化(__Ping.配置), Encoding.UTF8);
                return("");
            }, E角色.客户, new List <M形参>
            {
                new M形参("配置", new M元数据 {
                    结构 = E数据结构.对象, 子成员列表 = new List <M子成员> {
                        new M子成员("超时", new M元数据 {
                            类型 = "int", 描述 = "毫秒", 默认值 = "1000"
                        }),
                        new M子成员("频率", new M元数据 {
                            类型 = "int", 描述 = "毫秒/次", 默认值 = "1000"
                        }),
                        new M子成员("阈值", new M元数据 {
                            类型 = "int", 描述 = "1-10, 通过10次中成功的次数表示当前通断", 默认值 = "7"
                        }),
                        new M子成员("IP列表", new M元数据 {
                            类型 = "string", 描述 = "ip或域名", 结构 = E数据结构.单值数组
                        }),
                    }
                }),
            }, null);

            __对象.添加事件("连接变化", E角色.客户, new List <M形参> {
                new M形参("地址", "string"), new M形参("旧", "bool"), new M形参("新", "bool")
            });
            __Ping.连接变化 += (__地址, __旧, __新) =>
            {
                H业务日志.记录("链路", string.Format("{0} {1}", __地址, __新 == true ? "通" : "断"));
                __IT服务端.触发事件(__对象名称, "连接变化", new Dictionary <string, string> {
                    { "地址", __地址 }, { "旧", __旧.ToString() }, { "新", __新.ToString() }
                });
            };
            return(__对象);
        }
Ejemplo n.º 11
0
        private void 配置通用访问()
        {
            var _对象 = new M对象(_对象名称, "通用服务");

            _对象.添加属性("已连接设备", () => HJSON.序列化(_登录缓存.Values.ToList()), E角色.客户, null);
            _对象.添加事件("已建立连接", E角色.客户, new List <M形参>
            {
                new M形参 {
                    称 = "事件参数", 元数据 = new M元数据
                    {
                        //IP, 端口号, 设备类型, 设备标识, 账号, 成功, 描述
                        结构 = E数据结构.对象, 子成员列表 = new List <M子成员>
                        {
                            new M子成员("IP", "string"),
                            new M子成员("端口号", "int"),
                            new M子成员("设备类型", "string"),
                            new M子成员("设备标识", "string"),
                            new M子成员("账号", "string"),
                        }
                    }
                }
            });
            _对象.添加事件("已断开连接", E角色.客户, new List <M形参>
            {
                new M形参 {
                    称 = "事件参数", 元数据 = new M元数据
                    {
                        //IP, 端口号, 设备类型, 设备标识, 账号, 成功, 描述
                        结构 = E数据结构.对象, 子成员列表 = new List <M子成员>
                        {
                            new M子成员("IP", "string"),
                            new M子成员("端口号", "int"),
                            new M子成员("设备类型", "string"),
                            new M子成员("设备标识", "string"),
                            new M子成员("账号", "string"),
                        }
                    }
                }
            });

            _IT服务端.添加对象(_对象名称, () => _对象);
        }
Ejemplo n.º 12
0
        private void 配置通用访问(string __对象名称)
        {
            var __对象 = new M对象(__对象名称, null);

            __对象.添加属性("配置", () => HJSON.序列化(查询状态()), E角色.工程);
            __对象.添加方法("设置", q =>
            {
                var __配置 = HJSON.反序列化 <List <M插件配置> >(q["配置"]);
                设置(__配置);
                return(null);
            }, E角色.工程, new List <M形参> {
                new M形参("配置", new M元数据 {
                    结构 = E数据结构.对象数组, 子成员列表 = new List <M子成员>
                    {
                        new M子成员("目录", "string"), new M子成员("启用", "bool")
                    }
                })
            });
            H容器.取出 <IT服务端>().添加对象(__对象名称, () => __对象);
        }
Ejemplo n.º 13
0
        public B基本状态()
        {
            //实际对象
            _基本状态    = new M基本状态();
            _基本状态.版本 = "1.0.0.0";
            _基本状态.待处理问题.Add(new M问题 {
                等级 = E重要性.普通, 内容 = "xxxx"
            });
            _基本状态.待处理问题.Add(new M问题 {
                等级 = E重要性.重要, 内容 = "yyyy"
            });
            _基本状态.开启时间 = DateTime.Now;
            _基本状态.连接设备.Add(new M设备连接 {
                IP = IPAddress.Parse("192.168.0.1"), 标识 = "X1", 类型 = "X", 连接中 = true
            });
            _基本状态.连接设备.Add(new M设备连接 {
                IP = IPAddress.Parse("192.168.0.2"), 标识 = "Y1", 类型 = "Y", 连接中 = true
            });
            _基本状态.位置   = "威尼斯";
            _基本状态.业务状态 = new Dictionary <string, string> {
                { "参数1", "参数1值" }, { "参数2", "参数2值" }
            };

            //可通信对象
            var __对象 = new M对象("基本状态", "");

            __对象.添加属性("版本", () => _基本状态.版本, E角色.所有, null);
            __对象.添加属性("位置", () => _基本状态.位置, E角色.所有, null);
            __对象.添加属性("开启时间", () => _基本状态.开启时间.ToString(), E角色.所有, null);
            __对象.添加属性("待处理问题", () => HJSON.序列化(_基本状态.待处理问题), E角色.所有, null);
            __对象.添加属性("连接设备", () => HJSON.序列化(_基本状态.连接设备), E角色.所有, null);
            __对象.添加属性("业务状态", () => HJSON.序列化(_基本状态.业务状态), E角色.所有, null);
            __对象.添加方法("重启", 参数列表 => { 重启(); return(string.Empty); }, E角色.所有, null, null);
            __对象.添加事件("发生了重要变化", E角色.所有, null);

            var __IT服务端 = H容器.取出 <IT服务端>();

            __IT服务端.添加对象("基本状态", () => __对象);
        }
Ejemplo n.º 14
0
        private void 配置通用访问(string __对象名称)
        {
            var __对象 = new M对象(__对象名称, null);

            __对象.添加属性("号码总数", () => 订阅号码总数.ToString(), E角色.客户);
            __对象.添加属性("客户端总数", () => _客户端订阅缓存.Count.ToString(), E角色.客户);
            __对象.添加方法("增加", (__实参列表, __地址) =>
            {
                var __号码列表 = HJSON.反序列化 <List <string> >(__实参列表["号码列表"]);
                _任务.执行(() => 增加(__号码列表, __地址));
                return(null);
            }, E角色.客户, new List <M形参> {
                new M形参("号码列表", "string", E数据结构.单值数组)
            });
            __对象.添加方法("删除", (__实参列表, __地址) =>
            {
                var __号码列表 = HJSON.反序列化 <List <string> >(__实参列表["号码列表"]);
                _任务.执行(() => 除(__号码列表, __地址));
                return(null);
            }, E角色.客户, new List <M形参> {
                new M形参("号码列表", "string", E数据结构.单值数组)
            });
            __对象.添加方法("查询客户端概要", q => HJSON.序列化(查询客户端概要(), new IPAddressConverter()), E角色.客户);
            __对象.添加方法("查询客户端明细", q =>
            {
                var __IP  = IPAddress.Parse(q["IP"]);
                int __端口号 = int.Parse(q["端口号"]);
                return(HJSON.序列化(查询客户端(__IP, __端口号)));
            }, E角色.客户, new List <M形参> {
                new M形参("IP", new M元数据("string")
                {
                    描述 = "可选"
                }),
                new M形参("端口号", new M元数据("int")
                {
                    描述 = "可选"
                }),
            });
            __对象.添加方法("查询所有号码", q => HJSON.序列化(所有号码), E角色.客户);
            __对象.添加方法("查询号码", q =>
            {
                var __号码 = q["号码"];
                return(HJSON.序列化(查询号码(__号码), new IPEndPointConverter()));
            }, E角色.客户, new List <M形参> {
                new M形参("号码", "string"),
            });

            __对象.添加事件("GPS上报", E角色.客户, new List <M形参> {
                new M形参("号码", "string"),
                new M形参("GPS", new M元数据 {
                    结构 = E数据结构.对象, 子成员列表 = new List <M子成员>
                    {
                        new M子成员("经度", "double"),
                        new M子成员("纬度", "double"),
                        new M子成员("时间", "string"),
                        new M子成员("速度", "int?"),
                        new M子成员("高度", "int?"),
                        new M子成员("方向", "int?"),
                        new M子成员("精度", "int?"),
                    }
                }),
            });

            __对象.添加事件("状态上报", E角色.客户, new List <M形参> {
                new M形参("号码", "string"),
                new M形参("状态", "string"),
            });

            _IT服务端.添加对象(__对象名称, () => __对象);
        }
Ejemplo n.º 15
0
        private void 配置通用访问()
        {
            var _对象 = new M对象(_对象名称, "通用服务");

            _对象.添加属性("已登录设备", () => HJSON.序列化(_登录缓存.Values.ToList()), E角色.客户, null);
            _对象.添加方法("登录", (__实参列表, __地址) =>
            {
                var __条件 = HJSON.反序列化 <M登录请求>(__实参列表["请求参数"]);
                登录(__条件, __地址);
                return("");
            }, E角色.客户, new List <M形参> {
                new M形参 {
                    称 = "请求参数", 元数据 = new M元数据
                    {
                        //设备类型, 设备标识, 账号, 密码
                        结构 = E数据结构.对象, 子成员列表 = new List <M子成员>
                        {
                            new M子成员("设备类型", "string"),
                            new M子成员("设备标识", "string"),
                            new M子成员("账号", "string"),
                            new M子成员("密码", "string"),
                        }
                    }
                }
            }, null);
            _对象.添加方法("查询登录", (__实参列表, __地址) =>
            {
                IPAddress __IP = null;
                IPAddress.TryParse(__实参列表["IP"], out __IP);
                int?__端口号 = null;
                if (!string.IsNullOrEmpty(__实参列表["端口号"]))
                {
                    __端口号 = int.Parse(__实参列表["端口号"]);
                }
                var __结果 = 查询(__IP, __端口号, __实参列表["账号"]);
                return(HJSON.序列化(__结果));
            }, E角色.客户, new List <M形参> {
                new M形参("IP", "string"), new M形参("端口号", new M元数据("int?")
                {
                    描述 = "可为空"
                })
            }, null);
            _对象.添加方法("注销", (__实参列表, __地址) =>
            {
                注销(__地址);
                return("");
            }, E角色.客户, null, null);

            _对象.添加事件("登录完毕", E角色.客户, new List <M形参>
            {
                new M形参 {
                    称 = "事件参数", 元数据 = new M元数据
                    {
                        //IP, 端口号, 设备类型, 设备标识, 账号, 成功, 描述
                        结构 = E数据结构.对象, 子成员列表 = new List <M子成员>
                        {
                            new M子成员("IP", "string"),
                            new M子成员("端口号", "int"),
                            new M子成员("设备类型", "string"),
                            new M子成员("设备标识", "string"),
                            new M子成员("账号", "string"),
                            new M子成员("成功", "string"),
                            new M子成员("描述", "string"),
                        }
                    }
                }
            });
            _对象.添加事件("注销完毕", E角色.客户, new List <M形参>
            {
                new M形参 {
                    称 = "事件参数", 元数据 = new M元数据
                    {
                        结构 = E数据结构.对象, 子成员列表 = new List <M子成员>
                        {
                            new M子成员("IP", "string"),
                            new M子成员("端口号", "int"),
                            new M子成员("设备类型", "string"),
                            new M子成员("设备标识", "string"),
                            new M子成员("账号", "string"),
                        }
                    }
                }
            });
            _对象.添加方法("修改密码", __实参列表 =>
            {
                var __旧密码 = __实参列表["旧密码"];
                var __新密码 = __实参列表["新密码"];
                修改密码(__旧密码, __新密码);
                return(null);
            }, E角色.客户, new List <M形参> {
                new M形参("旧密码", "string"), new M形参("新密码", "string")
            });
            _对象.添加方法("增加账号", (__实参列表, __地址) =>
            {
                var __当前账号 = 查询账号(__地址);
                if (__当前账号 == null || __当前账号.账号 != "admin")
                {
                    throw new ApplicationException("无权限");
                }
                var __账号 = __实参列表["账号"];
                var __密码 = __实参列表["密码"];
                var __备注 = __实参列表["备注"];
                增加账号(__账号, __密码, __备注);
                return(null);
            }, E角色.客户, new List <M形参> {
                new M形参("账号", "string"), new M形参("密码", "string"), new M形参("备注", "string")
            });
            _对象.添加方法("删除账号", (__实参列表, __地址) =>
            {
                var __当前账号 = 查询账号(__地址);
                if (__当前账号 == null || __当前账号.账号 != "admin")
                {
                    throw new ApplicationException("无权限");
                }
                var __账号 = __实参列表["账号"];
                除账号(__账号);
                return(null);
            }, E角色.客户, new List <M形参> {
                new M形参("账号", "string")
            });
            _对象.添加方法("修改账号", (__实参列表, __地址) =>
            {
                var __当前账号 = 查询账号(__地址);
                if (__当前账号 == null || __当前账号.账号 != "admin")
                {
                    throw new ApplicationException("无权限");
                }
                var __账号 = __实参列表["账号"];
                var __备注 = __实参列表["备注"];
                修改账号(__账号, __备注);
                return(null);
            }, E角色.客户, new List <M形参> {
                new M形参("账号", "string"), new M形参("备注", "string")
            });
            _对象.添加方法("查询账号", (__实参列表, __地址) =>
            {
                var __当前账号 = 查询账号(__地址);
                if (__当前账号 == null || __当前账号.账号 != "admin")
                {
                    throw new ApplicationException("无权限");
                }
                var __账号 = __实参列表["账号"];
                var __备注 = __实参列表["备注"];
                return(HJSON.序列化(查询账号(__账号, __备注)));
            }, E角色.客户, new List <M形参> {
                new M形参("账号", "string"), new M形参("备注", "string")
            });


            _IT服务端.添加对象(_对象名称, () => _对象);
        }
Ejemplo n.º 16
0
        private void 配置通用访问()
        {
            var _对象 = new M对象(_对象名称, "通用服务");

            _对象.添加属性("支持发送点名", () => 支持发送点名.ToString(), E角色.客户, null);
            _对象.添加属性("支持点名响应", () => 支持点名响应.ToString(), E角色.客户, null);
            _对象.添加属性("点名请求地址", () => _请求地址.ToString(), E角色.客户, null);
            _对象.添加属性("事件上报地址", () => _响应地址.ToString(), E角色.客户, null);
            _对象.添加方法("点名", __实参列表 =>
            {
                var __条件 = HJSON.反序列化 <M点名条件>(__实参列表["点名条件"]);
                点名(__条件);
                return("");
            }, E角色.客户, new List <M形参> {
                new M形参 {
                    称 = "点名条件", 元数据 = new M元数据
                    {
                        结构 = E数据结构.对象, 子成员列表 = new List <M子成员>
                        {
                            new M子成员("参数列表", new M元数据 {
                                结构 = E数据结构.对象数组, 子成员列表 = new List <M子成员>
                                {
                                    new M子成员("名称", "string"),
                                    new M子成员("值", "int"),
                                }
                            }),
                            new M子成员("状态概要", new M元数据 {
                                结构 = E数据结构.对象, 子成员列表 = new List <M子成员>
                                {
                                    new M子成员("健康状态", "string"),
                                    new M子成员("未清除告警数量", "int"),
                                    new M子成员("启动时间", "string"),
                                    new M子成员("状态开始时间", "string"),
                                }
                            }),
                        }
                    }
                }
            }, null);

            _对象.添加事件("设备事件上报", E角色.客户, new List <M形参> {
                new M形参 {
                    称 = "事件参数", 元数据 = new M元数据
                    {
                        结构 = E数据结构.对象, 子成员列表 = new List <M子成员>
                        {
                            new M子成员("地址", "string"),
                            new M子成员("类型", "string"),
                            new M子成员("参数", new M元数据
                            {
                                结构 = E数据结构.对象, 子成员列表 = new List <M子成员>
                                {
                                    new M子成员("参数列表", new M元数据 {
                                        结构 = E数据结构.对象数组, 子成员列表 = new List <M子成员>
                                        {
                                            new M子成员("名称", "string"),
                                            new M子成员("值", "int"),
                                        }
                                    }),
                                    new M子成员("状态概要", new M元数据 {
                                        结构 = E数据结构.对象, 子成员列表 = new List <M子成员>
                                        {
                                            new M子成员("健康状态", "string"),
                                            new M子成员("未清除告警数量", "int"),
                                            new M子成员("启动时间", "string"),
                                            new M子成员("状态开始时间", "string"),
                                        }
                                    }),
                                }
                            }),
                        }
                    }
                }
            });

            _IT服务端.添加对象(_对象名称, () => _对象);
        }
Ejemplo n.º 17
0
        static void  务端()
        {
            //创建服务器
            var __服务端 = FT通用访问工厂.创建服务端();

            __服务端.端口 = 8888;
            __服务端.开启();

            //实际对象
            var __基本状态 = new M基本状态();

            __基本状态.版本 = "1.0.0.0";
            __基本状态.待处理问题.Add(new M问题 {
                等级 = E重要性.普通, 内容 = "xxxx"
            });
            __基本状态.待处理问题.Add(new M问题 {
                等级 = E重要性.重要, 内容 = "yyyy"
            });
            __基本状态.开启时间 = DateTime.Now;
            __基本状态.连接设备.Add(new M设备连接 {
                IP = IPAddress.Parse("192.168.0.1"), 标识 = "X1", 类型 = "X", 连接中 = true
            });
            __基本状态.连接设备.Add(new M设备连接 {
                IP = IPAddress.Parse("192.168.0.2"), 标识 = "Y1", 类型 = "Y", 连接中 = true
            });
            __基本状态.位置   = "威尼斯";
            __基本状态.业务状态 = new Dictionary <string, string> {
                { "参数1", "参数1值" }, { "参数2", "参数2值" }
            };

            //可通信对象
            var __对象 = new M对象("基本状态", "");

            __对象.添加属性("版本", () => __基本状态.版本, E角色.所有, null);//最后一个参数是元数据定义
            __对象.添加属性("位置", () => __基本状态.位置, E角色.所有, null);
            __对象.添加属性("开启时间", () => __基本状态.开启时间.ToString(), E角色.所有, null);
            __对象.添加属性("待处理问题", () => HJSON.序列化(__基本状态.待处理问题), E角色.所有, null);
            __对象.添加属性("连接设备", () => HJSON.序列化(__基本状态.连接设备), E角色.所有, null);
            __对象.添加属性("业务状态", () => HJSON.序列化(__基本状态.业务状态), E角色.所有, null);
            __对象.添加方法("重启", __实参 => {
                //处理实参

                return(string.Empty); //返回空字符串或者json格式的对象
            }, E角色.所有, null, null);   //最后两个参数是对参数和返回值的元数据定义
            __对象.添加事件("发生了重要变化", E角色.所有, null);

            //将对象加入到服务器
            __服务端.添加对象("基本状态", () => __对象);

            //触发服务器端事件
            __服务端.触发事件("基本状态", "发生了重要变化", null, null);//最后两个参数是实参和客户端地址列表(可选)

            //创建客户端
            var __客户端 = FT通用访问工厂.创建客户端();

            __客户端.连接(new IPEndPoint(IPAddress.Any, 8888));
            var __版本    = __客户端.查询属性值("基本状态", "版本");
            var __待处理问题 = HJSON.反序列化 <List <M问题> >(__客户端.查询属性值("基本状态", "待处理问题"));

            __客户端.执行方法("基本状态", "重启", null); //最后一个参数是实参
            __客户端.订阅事件("基本状态", "发生了重要变化", __实参 => {
                //处理实参
            });
        }
Ejemplo n.º 18
0
        private void 配置通用访问()
        {
            var _对象 = new M对象(_对象名称, "通用服务");

            _对象.添加属性("概要状态", () => HJSON.序列化(查询业务概要(null, null)), E角色.客户, null);
            _对象.添加属性("启动时间", () => 启动时间.ToString(), E角色.客户, null);
            _对象.添加属性("健康状态", () => 健康状态.ToString(), E角色.客户, null);
            _对象.添加属性("状态开始时间", () => 状态开始时间.ToString(), E角色.客户, null);
            _对象.添加属性("未清除告警数量", () => _待处理问题.Count.ToString(), E角色.客户, null);
            _对象.添加方法("查询概要状态", __实参列表 =>
            {
                return(HJSON.序列化(查询概要状态()));
            }, E角色.客户);
            _对象.添加方法("查询业务概要", __实参列表 =>
            {
                var __类别 = __实参列表["类别"];
                var __属性 = __实参列表["属性"];
                return(HJSON.序列化(查询业务概要(__类别, __属性)));
            }, E角色.客户, new List <M形参> {
                new M形参("类别", new M元数据 {
                    类型 = "string", 描述 = "可为空"
                }), new M形参("属性", new M元数据 {
                    类型 = "string", 描述 = "可为空"
                })
            }, null);
            _对象.添加方法("查询未清除告警", __实参列表 =>
            {
                var __条件 = HJSON.反序列化 <M查询条件>(__实参列表["条件"]);
                return(HJSON.序列化(查询未清除告警(__条件)));
            }, E角色.客户, new List <M形参> {
                new M形参 {
                    称 = "条件", 元数据 = new M元数据
                    {
                        //每页数量, 页数, 来源设备类型(可选), 来源设备标识(可选), 类别(可选), 重要性(可选), 关键字(可选)
                        结构 = E数据结构.对象, 子成员列表 = new List <M子成员>
                        {
                            new M子成员("每页数量", "int"),
                            new M子成员("页数", "int"),
                            new M子成员("来源设备类型", new M元数据 {
                                类型 = "string", 描述 = "可选"
                            }),
                            new M子成员("来源设备标识", new M元数据 {
                                类型 = "string", 描述 = "可选"
                            }),
                            new M子成员("类别", new M元数据 {
                                类型 = "string", 描述 = "可选"
                            }),
                            new M子成员("重要性", new M元数据 {
                                类型 = "string", 描述 = "可选"
                            }),
                            new M子成员("关键字", new M元数据 {
                                类型 = "string", 描述 = "可选"
                            }),
                        }
                    }
                }
            }, null);
            _对象.添加事件("上报告警", E角色.客户, new List <M形参>
            {
                new M形参 {
                    称 = "事件参数", 元数据 = new M元数据
                    {
                        //标识, 来源设备类型, 来源设备标识, 产生时间, 类别, 重要性, 描述, 原因, 解决方案
                        结构 = E数据结构.对象, 子成员列表 = new List <M子成员>
                        {
                            new M子成员("标识", "string"),
                            new M子成员("来源设备类型", "string"),
                            new M子成员("来源设备标识", "string"),
                            new M子成员("产生时间", "string"),
                            new M子成员("类别", "string"),
                            new M子成员("重要性", "string"),
                            new M子成员("描述", "string"),
                            new M子成员("原因", "string"),
                            new M子成员("解决方案", "string"),
                        }
                    }
                }
            });
            _对象.添加事件("上报清除", E角色.客户, new List <M形参>
            {
                new M形参 {
                    称 = "事件参数", 元数据 = new M元数据
                    {
                        //标识, 来源设备类型, 来源设备标识
                        结构 = E数据结构.对象, 子成员列表 = new List <M子成员>
                        {
                            new M子成员("标识", "string"),
                            new M子成员("来源设备类型", "string"),
                            new M子成员("来源设备标识", "string"),
                        }
                    }
                }
            });
            _对象.添加事件("健康状态变化", E角色.客户, new List <M形参>
            {
                new M形参 {
                    称 = "事件参数", 元数据 = new M元数据
                    {
                        //标识, 来源设备类型, 来源设备标识
                        结构 = E数据结构.对象, 子成员列表 = new List <M子成员>
                        {
                            new M子成员("旧状态", "int"),
                            new M子成员("新状态", "int"),
                        }
                    }
                }
            });

            _IT服务端.添加对象(_对象名称, () => _对象);
        }
Ejemplo n.º 19
0
        M对象 创建对象(IT服务端 __IT服务端, B命令行 __命令行, string __对象名称 = "命令行", string __分类 = "")
        {
            Func <IPEndPoint, string, string>          __合并 = (__地址, __标识) => string.Format("{0}:{1}:{2}", __地址.Address, __地址.Port, __标识);
            Func <string, Tuple <IPEndPoint, string> > __解析 = __合成标识 =>
            {
                var __数组 = __合成标识.Split(':');
                var __地址 = new IPEndPoint(IPAddress.Parse(__数组[0]), int.Parse(__数组[1]));
                var __标识 = __数组[2];
                return(new Tuple <IPEndPoint, string>(__地址, __标识));
            };
            var __对象 = new M对象(__对象名称, __分类);

            __对象.添加属性("IsWindows", () => __命令行.IsWindows.ToString(), E角色.客户);
            __对象.添加方法("创建进程", (__实参列表, __地址) =>
            {
                var __进程标识 = __合并(__地址, __实参列表["进程标识"]);
                __命令行.创建进程(__进程标识);
                return("");
            }, E角色.客户, new List <M形参>
            {
                new M形参("进程标识", "string"),
            });

            __对象.添加方法("结束进程", (__实参列表, __地址) =>
            {
                var __进程标识 = __合并(__地址, __实参列表["进程标识"]);
                __命令行.结束进程(__进程标识);
                return("");
            }, E角色.客户, new List <M形参>
            {
                new M形参("进程标识", "string"),
            });

            __对象.添加方法("执行", (__实参列表, __地址) =>
            {
                var __进程标识  = __合并(__地址, __实参列表["进程标识"]);
                var __命令行列表 = HJSON.反序列化 <List <string> >(__实参列表["命令行列表"]);
                __命令行.执行(__进程标识, __命令行列表);
                return("");
            }, E角色.客户, new List <M形参>
            {
                new M形参("进程标识", "string"),
                new M形参("命令行列表", "string", E数据结构.单值数组),
            });

            __对象.添加事件("正常输出", E角色.客户, new List <M形参> {
                new M形参("参数", new M元数据 {
                    类型 = "M输出", 结构 = E数据结构.对象, 子成员列表 = new List <M子成员> {
                        new M子成员("进程标识", "string"),
                        new M子成员("内容", "string")
                    }
                }),
            });

            __对象.添加事件("异常输出", E角色.客户, new List <M形参> {
                new M形参("参数", new M元数据 {
                    类型 = "M输出", 结构 = E数据结构.对象, 子成员列表 = new List <M子成员> {
                        new M子成员("进程标识", "string"),
                        new M子成员("内容", "string")
                    }
                }),
            });

            __对象.添加事件("执行结束", E角色.客户, new List <M形参> {
                new M形参("参数", new M元数据 {
                    类型 = "M输出", 结构 = E数据结构.对象, 子成员列表 = new List <M子成员> {
                        new M子成员("进程标识", "string"),
                        new M子成员("内容", "string")
                    }
                }),
            });
            __命令行.正常输出 += __参数 =>
            {
                var __分解 = __解析(__参数.进程标识);
                var __地址 = __分解.Item1;
                __参数.进程标识 = __分解.Item2;
                __参数.内容   = __参数.内容 == null ? null : __参数.内容.Replace("{", "").Replace("}", "").Replace("[", "").Replace("]", "");
                __IT服务端.触发事件(__对象名称, "正常输出", new Dictionary <string, string> {
                    { "参数", HJSON.序列化(__参数) }
                }, new List <IPEndPoint> {
                    __地址
                });
            };
            __命令行.异常输出 += __参数 =>
            {
                var __分解 = __解析(__参数.进程标识);
                var __地址 = __分解.Item1;
                __参数.进程标识 = __分解.Item2;
                __参数.内容   = __参数.内容 == null ? null : __参数.内容.Replace("{", "").Replace("}", "").Replace("[", "").Replace("]", "");
                __IT服务端.触发事件(__对象名称, "异常输出", new Dictionary <string, string> {
                    { "参数", HJSON.序列化(__参数) }
                }, new List <IPEndPoint> {
                    __地址
                });
            };
            __命令行.执行结束 += __参数 =>
            {
                var __分解 = __解析(__参数.进程标识);
                var __地址 = __分解.Item1;
                __参数.进程标识 = __分解.Item2;
                __参数.内容   = __参数.内容 == null ? null : __参数.内容.Replace("{", "").Replace("}", "").Replace("[", "").Replace("]", "");
                __IT服务端.触发事件(__对象名称, "执行结束", new Dictionary <string, string> {
                    { "参数", HJSON.序列化(__参数) }
                }, new List <IPEndPoint> {
                    __地址
                });
            };
            return(__对象);
        }
Ejemplo n.º 20
0
        private void 配置通用访问()
        {
            var _对象 = new M对象(_对象名称, "通用服务");

            _对象.添加属性("支持", () => 支持.ToString(), E角色.客户, null);
            _对象.添加属性("默认端口号", () => 默认端口号.ToString(), E角色.客户, null);
            _对象.添加方法("请求上传", __实参列表 =>
            {
                var __版本 = HJSON.反序列化 <M请求上传>(__实参列表["版本"]);
                请求上传(__版本);
                return(null);
            }, E角色.客户, new List <M形参>
            {
                new M形参("版本", new M元数据 {
                    结构 = E数据结构.对象, 子成员列表 = new List <M子成员>
                    {
                        new M子成员("版本号", "string"),
                        new M子成员("标签", "string", E数据结构.单值数组),
                        new M子成员("文件名", "string"),
                        new M子成员("补丁", "bool"),
                        new M子成员("md5校验码", "string"),
                        new M子成员("大小", new M元数据 {
                            类型 = "int", 描述 = "单位:KB"
                        }),
                    }
                })
            }, null);
            _对象.添加方法("结束上传", __实参列表 =>
            {
                结束上传();
                return(null);
            }, E角色.客户);

            _对象.添加方法("开始升级", __实参列表 =>
            {
                var __版本 = __实参列表["版本号"];
                开始升级(__版本);
                return(null);
            }, E角色.客户, new List <M形参>
            {
                new M形参("版本号", "string")
            }, null);
            _对象.添加方法("删除版本", __实参列表 =>
            {
                var __版本 = __实参列表["版本号"];
                除版本(__版本);
                return(null);
            }, E角色.客户, new List <M形参>
            {
                new M形参("版本号", "string")
            }, null);

            _对象.添加事件("准备好接收数据", E角色.客户, new List <M形参> {
                new M形参("事件参数", new M元数据 {
                    结构 = E数据结构.对象, 子成员列表 = new List <M子成员>
                    {
                        //端口号,每包最大(单位KB),每包间隔(毫秒)
                        new M子成员("端口号", "int"),
                        new M子成员("每包最大", new M元数据 {
                            类型 = "int", 描述 = "单位:KB"
                        }),
                        new M子成员("每包间隔", new M元数据 {
                            类型 = "int", 描述 = "单位:毫秒"
                        }),
                    }
                })
            });
            _对象.添加事件("升级完成", E角色.客户, new List <M形参> {
                new M形参("事件参数", new M元数据 {
                    结构 = E数据结构.对象, 子成员列表 = new List <M子成员>
                    {
                        //成功(true/false), 描述, 需要重启(true/false)
                        new M子成员("成功", "bool"),
                        new M子成员("描述", "string"),
                        new M子成员("需要重启", "bool"),
                    }
                })
            });
            _IT服务端.添加对象(_对象名称, () => _对象);
        }