首页 > 其他分享 >中台服务分层架构

中台服务分层架构

时间:2022-08-30 19:33:54浏览次数:65  
标签:服务 TMall RDBSStrategy fileNameList 关系数据库 dll 分层 NOSQLStrategy 架构

 

 1、接口适配层:

方式一:动态调用RPC数据服务

方式二:基于策略模式,动态加载dll实现,例如

	        /// <summary>
        /// 获得广告位置列表
        /// </summary>
        /// <param name="pageSize">每页数</param>
        /// <param name="pageNumber">当前页数</param>
        /// <returns></returns>
        IDataReader GetAdvertPositionList(int pageSize, int pageNumber);

        static BMAData()
        {
            try
            {
                string[] fileNameList = Directory.GetFiles(System.Web.HttpRuntime.BinDirectory, "TMall.RDBSStrategy.*.dll", SearchOption.TopDirectoryOnly);
                _irdbsstrategy = (IRDBSStrategy)Activator.CreateInstance(Type.GetType(string.Format("TMall.RDBSStrategy.{0}.RDBSStrategy, TMall.RDBSStrategy.{0}", fileNameList[0].Substring(fileNameList[0].LastIndexOf("RDBSStrategy.") + 13).Replace(".dll", "")),
                                                                                            false,
                                                                                            true));
            }
            catch
            {
                throw new BMAException("创建'关系数据库策略对象'失败,可能存在的原因:未将'关系数据库策略程序集'添加到bin目录中;'关系数据库策略程序集'文件名不符合'TMall.RDBSStrategy.{策略名称}.dll'格式");
            }
            _enablednosql = Directory.GetFiles(System.Web.HttpRuntime.BinDirectory, "TMall.NOSQLStrategy.*.dll", SearchOption.TopDirectoryOnly).Length > 0;
        }

        /// <summary>
        /// 关系型数据库
        /// </summary>
        public static IRDBSStrategy RDBS
        {
            get { return _irdbsstrategy; }
        }

        /// <summary>
        /// 用户非关系型数据库
        /// </summary>
        public static IUserNOSQLStrategy UserNOSQL
        {
            get
            {
                if (_enablednosql && BMAConfig.RedisNOSQLConfig.User.Enabled == 1)
                {
                    if (_iusernosqlstrategy == null)
                    {
                        lock (_locker)
                        {
                            if (_iusernosqlstrategy == null)
                            {
                                try
                                {
                                    string[] fileNameList = Directory.GetFiles(System.Web.HttpRuntime.BinDirectory, "TMall.NOSQLStrategy.*.dll", SearchOption.TopDirectoryOnly);
                                    _iusernosqlstrategy = (IUserNOSQLStrategy)Activator.CreateInstance(Type.GetType(string.Format("TMall.NOSQLStrategy.{0}.UserNOSQLStrategy, TMall.NOSQLStrategy.{0}", fileNameList[0].Substring(fileNameList[0].LastIndexOf("NOSQLStrategy.") + 14).Replace(".dll", "")),
                                                                                                                          false,
                                                                                                                          true));
                                }
                                catch
                                {
                                    throw new BMAException("创建'用户非关系数据库策略对象'失败,可能存在的原因:未将'用户非关系数据库策略程序集'添加到bin目录中;'用户非关系数据库策略程序集'文件名不符合'TMall.NOSQLStrategy.{策略名称}.dll'格式");
                                }
                            }
                        }
                    }
                }
                return _iusernosqlstrategy;
            }
        }

  

标签:服务,TMall,RDBSStrategy,fileNameList,关系数据库,dll,分层,NOSQLStrategy,架构
From: https://www.cnblogs.com/binfirechen/p/16640554.html

相关文章

  • 字节跳动端智能工程链路 Pitaya 的架构设计
    ClientAI是字节跳动产研架构下属的端智能团队,负责端智能AI框架和平台的建设,也负责模型和算法的研发,为字节跳动开拓端上智能新场景。本文介绍的Pitaya是由字节跳动的......
  • ehcache3 分层存储选项
    参考文档ehcache3支持分层存储的概念,本文主要记录不同选项的配置和最佳时间。当在一个cache中,除了堆这一层外还有其它分层是,会有以下是事情发生。在往jvm堆缓存区域外......
  • MockServer 服务框架设计
    ⬇️点击“下方链接”,提升测试核心竞争力!>>更多技术文章分享和免费资料领取大部分现有的mock工具只能满足HTTP协议下简单业务场景的使用。但是面对一些复杂的业务场景......
  • 动易CMS如何能实现直接粘贴把图片上传到服务器中
    ​如何做到ueditor批量上传word图片?1、前端引用代码<!DOCTYPE html PUBLIC "-//W3C//DTDXHTML1.0Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-......
  • IP-guard主服务器安装
    IP-guard主服务器安装一、所需环境安装Windowsserver2016安装SQL2017准备ip-guard主服务器安装包提前设置好服务器名称和静态ip地址,关闭防火墙或者开启所需端口:8235......
  • 微服务分布式开源架构是什么?
    在大数据时代,随着科技的进步和发展,低代码开发平台因其更灵活、更便利的优势特点,已经深入到各行各业数字化发展进程中。那么,什么是微服务分布式开源架构?要想了解这个问题,我......
  • [ROS学习]10. 服务端Server的编程实现
    参考笔记:【ROS学习笔记】10.服务端Server的编程实现内容参考:基于B站ROS公开课:【古月居】古月·ROS入门21讲基于Ubuntu20.04.1、Noetic版本本节说明上一讲学习了基于Ser......
  • 大咖说·图书分享|阿里云数字新基建系列:混合云架构
    混合云架构是什么?发展历程是怎样的?它有哪些应用场景?本期大咖说,看阿里云混合云技术服务高级技术专家、《混合云架构》图书联合作者解国红如何分享。  嘉宾介绍解......
  • dedecms如何能实现直接粘贴把图片上传到服务器中
    ​ 1.编辑器修改(可选)1.1在 ueditor/config.json 中添加代码块    /* 上传word配置 */    "wordActionName":"wordupload",/* 执行上传视频的action......
  • 架构图
        原图: 参考:https://files.cnblogs.com/files/aspirant/%E6%95%B4%E4%BD%93%E6%9E%B6%E6%9E%84-0824.graffle.zip?t=1661844293......