コード例 #1
0
        /// <summary>
        /// 加载节点运行状态,包括全部节点(可用或不可用)
        /// </summary>
        /// <param name="req"></param>
        /// <returns></returns>
        public string GetNodeRunStatuN(string req)
        {
            try
            {
                reqdata = this.AnaRequestData(req);
                string usestate = reqdata.reqdata;

                UseNodeCollection usenodes = new UseNodeCollection();
                usenodes = this.GetUseNodeCollections("");

                if (usenodes.BizNodeList.Count > 0 && usenodes.DataNodeList.Count > 0)
                {
                    resdata = this.MakeResponseData("1", string.Empty, json.Serialize(usenodes), string.Empty);
                }
                else if (usenodes.BizNodeList.Count <= 0 || usenodes.DataNodeList.Count <= 0)
                {
                    resdata = this.MakeResponseData("0", this.GetI18nLangItem("noFindDataNodesOrBizNodes", this.i18nModuleCurrLang), string.Empty, string.Empty);
                }
                else
                {
                    resdata = this.MakeResponseData("0", this.GetI18nLangItem("noFindDataNodesAndBizNodes", this.i18nModuleCurrLang), string.Empty, string.Empty);
                }
            }
            catch (Exception ex)
            {
                resdata = this.MakeResponseData("0", this.GetI18nLangItem("getDataNodeAndBizNodeErr", this.i18nModuleCurrLang) + ex.Message, string.Empty, string.Empty);
            }

            return(json.Serialize(resdata));
        }
コード例 #2
0
        /// <summary>
        /// 初始化分布式节点管理参数
        /// </summary>
        private DistributeDataNodeManagerParams InitNodeDistManagerParams()
        {
            DistributeDataNodeManagerParams distManagerParam = null; //分布式管理参数
            List <SSY_DATANODE_ADDR>        dataNodes        = new List <SSY_DATANODE_ADDR>();

            UseNodeCollection unc = new UseNodeCollection();
            SSY_ResponseResult <UseNodeCollection> res = this.GetUseNodeCollection("1");

            if (res.IsCompleted)
            {
                #region 初始化数据节点

                unc = res.Result;
                //分布式参数
                distManagerParam = new DistributeDataNodeManagerParams();
                distManagerParam.DistributeDataNode    = new DistributeDataNode();
                distManagerParam.DistributeActionIden  = DistributeActionIden.Query; //默认给查询,需要在具体业务工作方法重新设定
                distManagerParam.DistriActionSqlParams = new List <DistActionSql>(); //由于支持单点操作延后执行,需要在具体业务工作方法重新设定
                distManagerParam.DistributeDataNode    = new DistributeDataNode();   //只需处理工厂配置参数,其他参数系统框架会自动根据数据节点及配置文件设定

                if (unc.DataNodeList.Count > 0)
                {
                    foreach (var item in unc.DataNodeList)
                    {
                        //若配置加密数据库相关参数,这里需要先进行解密
                        item.Url_addr = Common.Security.DeEncryptInfo(item.Url_addr.ToString(), item.Encrykeystr,
                                                                      int.Parse(item.Encryhashlenth), item.Isencrydbconn.ToUpper());

                        item.Data_schema = Common.Security.DeEncryptInfo(item.Data_schema.ToString(), item.Encrykeystr,
                                                                         int.Parse(item.Encryhashlenth), item.Isencrydbconn.ToUpper());
                        item.Data_user = Common.Security.DeEncryptInfo(item.Data_user.ToString(), item.Encrykeystr,
                                                                       int.Parse(item.Encryhashlenth), item.Isencrydbconn.ToUpper());
                        item.Data_password = Common.Security.DeEncryptInfo(item.Data_password.ToString(), item.Encrykeystr,
                                                                           int.Parse(item.Encryhashlenth), item.Isencrydbconn.ToUpper());

                        item.Data_conn = Common.Security.DeEncryptInfo(item.Data_conn.ToString(), item.Encrykeystr,
                                                                       int.Parse(item.Encryhashlenth), item.Isencrydbconn.ToUpper());

                        dataNodes.Add(item);
                    }
                    distManagerParam.DistributeDataNodes = dataNodes;
                    distManagerParam.DistributeDataNode.DbFactoryName = unc.DataNodeList[0].DBFactoryName;
                }

                #endregion
            }

            return(distManagerParam);
        }
コード例 #3
0
        /// <summary>
        /// 获取可用业务节点地址
        /// </summary>
        /// <returns></returns>
        private string _GetBizNodeAddr()
        {
            string            resBizNodeListStr = "";
            UseNodeCollection ff = this.GetUseNodeCollections("1");
            //目前 随机获取各平台所管的各模块的业务地址
            //return ff.BizNodeList[Common.Utility.GetRandNum(0, ff.BizNodeList.Count)].Url_addr;

            List <SSY_BIZNODE_ADDR> toAppBizNodeAddr = new List <SSY_BIZNODE_ADDR>(); //分发给应用的随机可用业务节点

            if (ff != null)
            {
                if (ff.BizNodeList.Count > 0)
                {
                    //获取当前可用模块
                    List <string> currUseMoudiden = new List <string>();
                    for (int i = 0; i < ff.BizNodeList.Count; i++)
                    {
                        if (!currUseMoudiden.Contains(ff.BizNodeList[i].Moudiden))
                        {
                            currUseMoudiden.Add(ff.BizNodeList[i].Moudiden);
                        }
                    }

                    //目前随机分配, 后面根据应用可用扩展算法来分配
                    for (int i = 0; i < currUseMoudiden.Count; i++)
                    {
                        List <SSY_BIZNODE_ADDR> tmp = ff.BizNodeList.FindAll(p => p.Moudiden.ToUpper() == currUseMoudiden[i].ToUpper());
                        toAppBizNodeAddr.Add(tmp[Common.Utility.GetRandNum(0, tmp.Count)]);
                    }
                }
            }

            if (toAppBizNodeAddr.Count > 0)
            {
                resBizNodeListStr = base.json.Serialize(toAppBizNodeAddr);
            }

            return(resBizNodeListStr);
        }
コード例 #4
0
        /// <summary>
        /// 获取可用节点,包括业务及数据
        /// </summary>
        /// <param name="use_state"></param>
        /// <returns></returns>
        public UseNodeCollection GetUseNodeCollections(string use_state)
        {
            UseNodeCollection        unc      = new UseNodeCollection();
            List <SSY_BIZNODE_ADDR>  bizNode  = new List <SSY_BIZNODE_ADDR>();
            List <SSY_DATANODE_ADDR> dataNode = new List <SSY_DATANODE_ADDR>();

            unc.BizNodeList  = bizNode;
            unc.DataNodeList = dataNode;

            //业务节点
            string cols        = "id|url_addr|use_status|moudiden|remarks|timestampss";
            string colTypes    = "String|String|String|String|String|String";
            string useNodeAddr = APPConfig.GetAPPConfig().GetConfigValue("xmldataPath", "") + "\\SSY_BIZNODE_ADDR.xml";

            System.Data.DataTable dtXmlDataBiz = Common.Utility.GetTableFromXml(cols, colTypes, useNodeAddr);

            if (Utility.DtHasData(dtXmlDataBiz))
            {
                DataRow[] drsBiz = null;
                if (!string.IsNullOrEmpty(use_state))
                {
                    drsBiz = dtXmlDataBiz.Select(string.Format("use_status = '{0}'", use_state));
                }
                else
                {
                    drsBiz = dtXmlDataBiz.Select(string.Format("1 = {0}", "1"));
                }

                if (drsBiz.Length > 0)
                {
                    SSY_BIZNODE_ADDR tempBizNode = null;
                    for (int i = 0; i < drsBiz.Length; i++)
                    {
                        tempBizNode            = new SSY_BIZNODE_ADDR();
                        tempBizNode.ID         = drsBiz[i]["id"].ToString();
                        tempBizNode.Url_addr   = drsBiz[i]["Url_addr"].ToString();
                        tempBizNode.Moudiden   = drsBiz[i]["Moudiden"].ToString();
                        tempBizNode.Use_status = drsBiz[i]["Use_status"].ToString();
                        bizNode.Add(tempBizNode);
                    }
                }
            }

            //数据节点
            string cols1           = @"id|url_addr|use_status|data_schema|data_user|data_password|data_conn|remarks|timestampss|dbfactoryname|systemname|isencrydbconn|isencrypwd|encryhashlenth|encrykeystr|isusepwdsecuritycheck|pwdintervalhours|pwdfirstcheck";
            string colTypes1       = @"String|String|String|String|String|String|String|String|String|String|String|String|String|String|String|String|String|String";
            string useDataNodeAddr = APPConfig.GetAPPConfig().GetConfigValue("xmldataPath", "") + "\\SSY_DATANODE_ADDR.xml";

            System.Data.DataTable dtXmlDataData = Common.Utility.GetTableFromXml(cols1, colTypes1, useDataNodeAddr);

            if (Utility.DtHasData(dtXmlDataData))
            {
                DataRow[] drsData = null;
                if (!string.IsNullOrEmpty(use_state))
                {
                    drsData = dtXmlDataData.Select(string.Format("use_status = '{0}'", use_state));
                }
                else
                {
                    drsData = dtXmlDataData.Select(string.Format("1 = {0}", "1"));
                }
                if (drsData.Length > 0)
                {
                    SSY_DATANODE_ADDR tempDataNode = null;
                    for (int i = 0; i < drsData.Length; i++)
                    {
                        tempDataNode    = new SSY_DATANODE_ADDR();
                        tempDataNode.ID = drsData[i]["id"].ToString();

                        tempDataNode.Use_status            = drsData[i]["use_status"].ToString();
                        tempDataNode.DBFactoryName         = drsData[i]["dbfactoryname"].ToString();
                        tempDataNode.Systemname            = drsData[i]["systemname"].ToString();
                        tempDataNode.Isencrypwd            = drsData[i]["isencrypwd"].ToString();
                        tempDataNode.Encryhashlenth        = drsData[i]["encryhashlenth"].ToString();
                        tempDataNode.Encrykeystr           = drsData[i]["encrykeystr"].ToString();
                        tempDataNode.Isusepwdsecuritycheck = drsData[i]["isusepwdsecuritycheck"].ToString();
                        tempDataNode.Pwdintervalhours      = drsData[i]["pwdintervalhours"].ToString();
                        tempDataNode.Pwdfirstcheck         = drsData[i]["pwdfirstcheck"].ToString();

                        tempDataNode.Isencrydbconn = drsData[i]["isencrydbconn"].ToString();
                        tempDataNode.Url_addr      = drsData[i]["url_addr"].ToString();
                        tempDataNode.Data_schema   = drsData[i]["data_schema"].ToString();
                        tempDataNode.Data_user     = drsData[i]["data_user"].ToString();
                        tempDataNode.Data_password = drsData[i]["data_password"].ToString();
                        tempDataNode.Data_conn     = drsData[i]["data_conn"].ToString();

                        dataNode.Add(tempDataNode);
                    }
                }
            }

            return(unc);
        }
コード例 #5
0
    /// <summary>
    /// 启动更新数据缓存
    /// </summary>
    /// <param name="obj"></param>
    public void ExecUpdateCacheData(object obj)
    {
        System.Web.Caching.Cache currCache = HttpRuntime.Cache;
        int cacheMinute = 50;

        //加载缓存服务配置
        DataTable dtservconfig = BaseServiceUtility.GetServiceConfig(APPConfig.GetAPPConfig().GetConfigValue("ServiceConfigPath", ""));

        currCache.Insert("serviceConfig", dtservconfig, null, System.Web.Caching.Cache.NoAbsoluteExpiration, new TimeSpan(0, cacheMinute, 0));

        //缓存默认公共语言包
        string    defaultlang        = APPConfig.GetAPPConfig().GetConfigValue("currlang", "");
        string    commoni18nLangPath = string.Format(APPConfig.GetAPPConfig().GetConfigValue("Commoni18nLang", ""), defaultlang);
        DataTable i18nCommonCurrLang = BaseServiceUtility.GetI18nLang(commoni18nLangPath);

        currCache.Insert("i18nCommonCurrLang", i18nCommonCurrLang, null, System.Web.Caching.Cache.NoAbsoluteExpiration, new TimeSpan(0, cacheMinute, 0));

        //当前模块语言包
        string    Xxxi18nLang     = string.Format(this.baseXmlPath + APPConfig.GetAPPConfig().GetConfigValue("XxxManageri18nLang", ""), defaultlang);
        DataTable i18nXxxi18nLang = BaseServiceUtility.GetI18nLang(Xxxi18nLang);

        currCache.Insert("i18nXxxi18nLang", i18nXxxi18nLang, null, System.Web.Caching.Cache.NoAbsoluteExpiration, new TimeSpan(0, cacheMinute, 0));


        //加载缓存数据节点
        //调用普通节点中心服务加载数据节点
        DataRow drServ            = BaseServiceUtility.GetServiceConfigOne("framenodesecu", "1.0", "normal", "frameNode", dtservconfig);
        string  FrameNodeSecurity = drServ["url_addr"].ToString().TrimStart('/') + "/" + drServ["servcodename"].ToString().TrimStart('/');
        JavaScriptSerializer json = new JavaScriptSerializer();
        ReqData reqdata           = new ReqData();

        reqdata.reqdata = "1";
        RespData resdata = new RespData();
        //获取节点中心数据节点,
        string datanodes = DynamicInvokeWCF.Create <IFrameNodeSecurity>(FrameNodeSecurity).GetDataNodeCollection(json.Serialize(reqdata));
        DistributeDataNodeManagerParams distManagerParam = new DistributeDataNodeManagerParams(); //分布式管理参数

        resdata = json.Deserialize <RespData>(datanodes);
        if (resdata.respflag == "1")
        {
            distManagerParam = json.Deserialize <DistributeDataNodeManagerParams>(resdata.respdata);
            if (distManagerParam.DistributeDataNodes.Count > 0)
            {
                currCache.Insert("dataNodes", distManagerParam, null, System.Web.Caching.Cache.NoAbsoluteExpiration, new TimeSpan(0, cacheMinute, 0));
            }
        }

        //获取业务模块节点
        string            nodelists = DynamicInvokeWCF.Create <IFrameNodeSecurity>(FrameNodeSecurity).GetNodeCollection(json.Serialize(reqdata));
        UseNodeCollection nodes     = new UseNodeCollection(); //节点集合

        resdata = json.Deserialize <RespData>(nodelists);
        if (resdata.respflag == "1")
        {
            nodes = json.Deserialize <UseNodeCollection>(resdata.respdata);
            if (nodes.BizNodeList.Count > 0)
            {
                currCache.Insert("bizNodes", nodes.BizNodeList, null, System.Web.Caching.Cache.NoAbsoluteExpiration, new TimeSpan(0, cacheMinute, 0));
            }
        }

        Common.Utility.RecordLog("完成Somebiz模块配置缓存!", this.logpathForDebug, this.isLogpathForDebug);
    }
コード例 #6
0
    /// <summary>
    /// 启动更新数据缓存
    /// </summary>
    /// <param name="obj"></param>
    public void ExecUpdateCacheData()
    {
        System.Web.Caching.Cache currCache = HttpRuntime.Cache;
        int  cacheMinute = 50;
        bool executeFlag = true;

        while (executeFlag)
        {
            executeFlag = false;

            try
            {
                #region 缓存处理

                //加载缓存服务配置
                DataTable dtservconfig = BaseServiceUtility.GetServiceConfig(APPConfig.GetAPPConfig().GetConfigValue("ServiceConfigPath", ""));
                currCache.Insert("serviceConfig", dtservconfig, null, System.Web.Caching.Cache.NoAbsoluteExpiration, new TimeSpan(0, cacheMinute, 0));

                //缓存默认公共语言包
                string    defaultlang        = APPConfig.GetAPPConfig().GetConfigValue("currlang", "");
                string    commoni18nLangPath = string.Format(APPConfig.GetAPPConfig().GetConfigValue("Commoni18nLang", ""), defaultlang);
                DataTable i18nCommonCurrLang = BaseServiceUtility.GetI18nLang(commoni18nLangPath);
                currCache.Insert("i18nCommonCurrLang", i18nCommonCurrLang, null, System.Web.Caching.Cache.NoAbsoluteExpiration, new TimeSpan(0, cacheMinute, 0));

                //缓存默认各模块语言包,多个模块独立累加
                //框架安全语言包
                string    FrameSecurityi18nLang     = string.Format(APPConfig.GetAPPConfig().GetConfigValue("FrameSecurityi18nLang", ""), defaultlang);
                DataTable i18nFrameSecurityi18nLang = BaseServiceUtility.GetI18nLang(FrameSecurityi18nLang);
                currCache.Insert("i18nFrameSecurityi18nLang", i18nFrameSecurityi18nLang, null, System.Web.Caching.Cache.NoAbsoluteExpiration, new TimeSpan(0, cacheMinute, 0));

                //框架管理语言包
                string    FrameManageri18nLang     = string.Format(APPConfig.GetAPPConfig().GetConfigValue("FrameManageri18nLang", ""), defaultlang);
                DataTable i18nFrameManageri18nLang = BaseServiceUtility.GetI18nLang(FrameManageri18nLang);
                currCache.Insert("i18nFrameManageri18nLang", i18nFrameManageri18nLang, null, System.Web.Caching.Cache.NoAbsoluteExpiration, new TimeSpan(0, cacheMinute, 0));

                //加载缓存数据节点
                //调用普通节点中心服务加载数据节点
                DataRow drServ            = BaseServiceUtility.GetServiceConfigOne("framenodesecu", "1.0", "normal", "frameNode", dtservconfig);
                string  FrameNodeSecurity = drServ["url_addr"].ToString().TrimStart('/') + "/" + drServ["servcodename"].ToString().TrimStart('/');
                JavaScriptSerializer json = new JavaScriptSerializer();
                ReqData reqdata           = new ReqData();
                reqdata.reqdata = "1";
                RespData resdata = new RespData();
                //获取节点中心数据节点,
                string datanodes = DynamicInvokeWCF.Create <IFrameNodeSecurity>(FrameNodeSecurity).GetDataNodeCollection(json.Serialize(reqdata));
                DistributeDataNodeManagerParams distManagerParam = new DistributeDataNodeManagerParams(); //分布式管理参数
                resdata = json.Deserialize <RespData>(datanodes);
                if (resdata.respflag == "1")
                {
                    distManagerParam = json.Deserialize <DistributeDataNodeManagerParams>(resdata.respdata);
                    if (distManagerParam.DistributeDataNodes.Count > 0)
                    {
                        currCache.Insert("dataNodes", distManagerParam, null, System.Web.Caching.Cache.NoAbsoluteExpiration, new TimeSpan(0, cacheMinute, 0));
                    }
                }

                //获取业务模块节点
                string            nodelists = DynamicInvokeWCF.Create <IFrameNodeSecurity>(FrameNodeSecurity).GetNodeCollection(json.Serialize(reqdata));
                UseNodeCollection nodes     = new UseNodeCollection(); //节点集合
                resdata = json.Deserialize <RespData>(nodelists);
                if (resdata.respflag == "1")
                {
                    nodes = json.Deserialize <UseNodeCollection>(resdata.respdata);
                    if (nodes.BizNodeList.Count > 0)
                    {
                        currCache.Insert("bizNodes", nodes.BizNodeList, null, System.Web.Caching.Cache.NoAbsoluteExpiration, new TimeSpan(0, cacheMinute, 0));
                    }
                }

                Common.Utility.RecordLog("完成框架管理配置缓存!", this.logpathForDebug, this.isLogpathForDebug);

                #endregion
            }
            catch (Exception ex)
            {
                Common.Utility.RecordLog("配置框架管理缓存,发生异常!原因:" + ex.Message, this.logpathForDebug, this.isLogpathForDebug);
            }

            Thread.Sleep(this.internalTime * 60000);//延迟秒级别
            executeFlag = true;
        }
    }
コード例 #7
0
        /// <summary>
        /// 获取令牌
        /// </summary>
        /// <param name="req"></param>
        /// <returns></returns>
        public string GetToken(string req)
        {
            try
            {
                //解析参数实体
                reqdata = this.AnaRequestData(req);
                SSY_DYNAMICTOKEN model = this.json.Deserialize <SSY_DYNAMICTOKEN>(reqdata.reqdata);

                string bizErrStr     = ""; //具体失败的业务提示
                string FrameSecurity = "";
                //获取业务可用节点
                UseNodeCollection unc = new UseNodeCollection();
                SSY_ResponseResult <UseNodeCollection> res = this.GetUseNodeCollection("1");
                if (res.IsCompleted)
                {
                    unc = res.Result;
                    //获取业务节点地址
                    List <string> bizNodes = new List <string>();
                    for (int i = 0; i < unc.BizNodeList.Count; i++)
                    {
                        bizNodes.Add(unc.BizNodeList[i].Url_addr);
                    }
                    //获取业务服务
                    //string bizSvcName = this._GetSingleBizSvc(SSY_ServiceHost.Frame_FrameSecurityService);
                    //FrameSecurity = this.GetNodeBaseAddr(bizNodes, ServiceType.BizDueWith) + bizSvcName.TrimStart('/');

                    //调用普通登陆验证服务
                    DataRow drServ = this.GetServiceConfigOne("framesecurity", "1.0", "normal", "frameMgt", this.serviceConfig);
                    //FrameSecurity = base.envirObj.BizNodeAddr + "/" + drServ["servcodename"].ToString().TrimStart('/');

                    //获取本地配置业务节点
                    List <SSY_BIZNODE_ADDR> tmpBizNode = base.json.Deserialize <List <SSY_BIZNODE_ADDR> >(this._GetBizNodeAddr());
                    for (int i = 0; i < tmpBizNode.Count; i++)
                    {
                        if (tmpBizNode[i].Moudiden.ToUpper() == "FrameMgt".ToUpper())
                        {
                            FrameSecurity = tmpBizNode[i].Url_addr + "/" + drServ["servcodename"].ToString().TrimStart('/');
                            break;
                        }
                    }

                    //二次登陆验证
                    SSY_USER_DICT ud = new SSY_USER_DICT();
                    ud.USERID   = model.Remarks;
                    ud.PASSWORD = model.Timestampss;

                    this.reqdata         = new ReqData();
                    this.reqdata.reqdata = json.Serialize(ud);

                    string reslogin             = DynamicInvokeWCF.Create <IFrameSecurity>(FrameSecurity).GetUserForLogin2N(json.Serialize(this.reqdata));
                    List <SSY_USER_DICT> resuds = new List <SSY_USER_DICT>();
                    this.resdata = json.Deserialize <RespData>(reslogin);
                    if (this.resdata.respflag == "1")
                    {
                        #region 登陆成功

                        string cols                   = "id|dynamictoken|remarks|timestampss";
                        string colTypes               = "String|String|String|String";
                        string tokenFilePath          = APPConfig.GetAPPConfig().GetConfigValue("XmldataPath", "") + "\\SSY_DYNAMICTOKEN.xml";
                        System.Data.DataTable dtToken = Common.Utility.GetTableFromXml(cols, colTypes, tokenFilePath);

                        if (Utility.DtHasData(dtToken))
                        {
                            //随机获取令牌
                            model.Dynamictoken = dtToken.Rows[Utility.GetRandNum(1, 99)]["dynamictoken"].ToString();
                            if (string.IsNullOrEmpty(model.Dynamictoken))
                            {
                                bizErrStr = this.GetI18nLangItem("noFoundTokenText", this.i18nModuleCurrLang);
                            }
                            else
                            {
                                resdata = this.MakeResponseData("1", base.successStr, model.Dynamictoken, string.Empty);
                            }
                        }
                        else
                        {
                            bizErrStr = this.GetI18nLangItem("noFoundTokens", this.i18nModuleCurrLang);
                        }

                        #endregion
                    }
                    else
                    {
                        bizErrStr = this.resdata.resptoolstr;
                    }
                }
                else
                {
                    bizErrStr = res.Exception;
                }
                if (!string.IsNullOrEmpty(bizErrStr))
                {
                    resdata = this.MakeResponseData("0", base.errorStr + bizErrStr, string.Empty, string.Empty);
                }
            }
            catch (Exception ex)
            {
                resdata = this.MakeResponseData("0", this.GetI18nLangItem("GetTokenErr", this.i18nModuleCurrLang) + ex.Message, string.Empty, string.Empty);
            }

            return(json.Serialize(resdata));
        }