多层架构的调用方式(方法回调)

简介:
多层架构,一般我们指三层架构,如WEB层,SERVICE层和DATA,其实我是最简单的一种说法,真正的项目开发中,远远不只有这三层,其实在WEB与SERVICE层中还有一个WEB.SERVICE层,主要用来作WEB与SERVICE的服务,它与直接与前台VIEW通讯,也不直接与底层数据通讯,一般来说,都是用来做文件管理,上传,下载,COOKIES的持久化等,一句话,就是与服务器本身相关的东西我们都可以放在本层中.OK,现在言归正传了,今天要说的是什么?多层架构的调用方式,我们来看一下,一般来说,我们要遵守一个原则,高层向底层的调用,底层不要直接调用高层,除非有一些特殊的要求,有这种要求我们也不要直接调用,那么怎么调用呢,我们可以使用回调函数:P,喜喜,看看代码吧!

一个最简单的代码:

#region 回调函数的学习
        /*也就是相当把某个方法(WorkDoneHandler())当作参数传递给另外一个方法(Working(WorkDone callBack)).
          这样做的好处在于,可以动态的指定执行哪个方法.
          比如在Do()方法中,我们指定的callback 是WorkDoneHandler 当然也可以是其它匹配的方法. 而Working()方法 更本不需要知道自己最后执行           的是哪个Handler.*/
 
 
        void Working(Delegate callBack)
        {
            WorkDone _callBack = callBack as WorkDone;
            _callBack();
        }
 
        delegate void WorkDone();
        void WorkDoneHandler()
        {
            Console.WriteLine("WorkDoneHandler");
        }
        void WorkDoneHandler2()
        {
            Console.WriteLine("WorkDoneHandler2");
        }
 
        void Do()
        {
            WorkDone callBack = new WorkDone(WorkDoneHandler2);
            Working(callBack);
        }
        #endregion
这段代码是我从网上找的,这们高人写的真不错,一针见血,没有费话.

再来看一下,我写的一个DEMO吧

#region 标准分层架构的测试
        /// <summary>
        /// 模拟DATA层用户登陆功能
        /// </summary>
        /// <param name="user"></param>
        /// <returns></returns>
        public bool DataLogin(Entity.User user)
        {
            bool flag = false;
            if (user.UserName == "zzl")
                flag = true;
            return flag;
        }
        /// <summary>
        /// Service层,与Data数据层进行交互,对用户登陆进行验证,并返回消息
        /// </summary>
        /// <param name="user"></param>
        /// <param name="a"></param>
        /// <returns></returns>
        public string ServiceLogin(Entity.User user, Delegate a)
        {
            LoginEventHandler a1 = a as LoginEventHandler; //强转化类型
            if (DataLogin(user))
                return a1("登陆成功");
            else
                return a1("用户密码有问题"); //在这个方法中以回调的方法赋值
        }
 
        delegate string LoginEventHandler(string msg);
 
        /// <summary>
        /// 提示比它低一层的方法的回调(从底到高的调用)
        /// </summary>
        /// <param name="msg"></param>
        /// <returns></returns>
        public string ReBack(string msg)
        {
            return string.Format("登陆结果:{0}", msg);
        }
        /// <summary>
        /// WEB.Service层登陆
        /// </summary>
        public string Login(Entity.User user)
        {
            LoginEventHandler a = new LoginEventHandler(this.ReBack);
            return ServiceLogin(user, a);
        }
        #endregion
调用它时,可以这样写:

 Entity.User user = new Entity.User { UserName = "zzl", Password = "zzl123" };
 Console.Write(p.Login(user));
本文转自博客园张占岭(仓储大叔)的博客,原文链接: 多层架构的调用方式(方法回调),如需转载请自行联系原博主。
目录
相关文章
|
2月前
|
架构师 测试技术 Linux
嵌入式软件架构中抽象层设计方法
嵌入式软件架构中抽象层设计方法
64 0
|
2月前
|
中间件 编译器 调度
嵌入式软件架构基础设施设计方法
嵌入式软件架构基础设施设计方法
78 0
|
25天前
|
安全 Shell 网络安全
抄个冷板凳---x86架构MS-17010漏洞的多重利用方法
x86架构永恒之蓝漏洞的多重利用复现演示
|
9月前
|
存储 架构师 NoSQL
一口气讲完数据仓建模方法--数据仓库架构师碎碎念
一口气讲完数据仓建模方法--数据仓库架构师碎碎念
|
12月前
|
人工智能 架构师 安全
【企业架构】现代企业架构方法——第 3 章
【企业架构】现代企业架构方法——第 3 章
|
12月前
|
机器学习/深度学习 人工智能 文件存储
AAAI 2023 | 打破NAS瓶颈,新方法AIO-P跨任务预测架构性能
AAAI 2023 | 打破NAS瓶颈,新方法AIO-P跨任务预测架构性能
107 0
|
12月前
【系统架构】信息系统开发方法——面向服务
【系统架构】信息系统开发方法——面向服务
86 0
|
12月前
|
机器学习/深度学习 算法 网络架构
特拉维夫大学把StyleGAN进行了大汇总,全面了解SOTA方法、架构新进展
特拉维夫大学把StyleGAN进行了大汇总,全面了解SOTA方法、架构新进展
112 0
|
架构师 Java 数据库
架构师才需要学习的知识:亿级流量调优方法+实战
在我们敲代码,推动系统做更多事情的时候,我们遇到了一个共同的问题:性能。网站和应用程序的功能比以往更丰富。结果,他们对网络和设备资源的要求越来越高。因此,我们现在很难在各种网络条件和设备上实现高水平的性能。
|
Serverless
Serverless架构——函数及服务和FaaS 函数的两种调用方式
Serverless架构——函数及服务和FaaS 函数的两种调用方式自制脑图, 函数及服务,通俗来说就是我们可以写一个函数,在该函数内执行业务逻辑,函数由faas平台运行, FaaS 函数的两种调用方式:同步调用和异步调用
224 0
Serverless架构——函数及服务和FaaS 函数的两种调用方式