首页 > 其他分享 >多层架构的调用方式(方法回调)

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

时间:2022-12-01 16:02:52浏览次数:39  
标签:WEB 调用 架构 string 多层 callBack user WorkDone

多层架构,一般我们指三层架构,如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));

作者:仓储大叔,张占岭,
荣誉:微软MVP


标签:WEB,调用,架构,string,多层,callBack,user,WorkDone
From: https://blog.51cto.com/u_15765017/5902308

相关文章

  • vs2017调用目标发生了异常
     最近在做.netcore项目,然后就把VS2017更新到最新版本,以及更新.netcoresdk。频繁的更新开发工具,结果就出现了“调用目标发生了异常”,本来运行、调试都是好好的,更新了一......
  • 【电商】基于大数据的全球电商系统架构性能优化
    本文根据郭东白在2016ArchSummit全球架构师(深圳)峰会上的演讲整理而成。ArchSummit即将在2018年7月6日深圳华侨城洲际酒店开幕,更多分享内容请浏览:链接 讲师介绍:郭东白,现......
  • 郭东白的架构课00010
    你好,我是郭东白。今天我们来讲架构师的第四条生存法则,那就是尊重技术的生命周期。人类的各种活动都要遵循事物的客观生命周期。不论是农业社会种田打渔,还是资本社会投资创......
  • 函数调用时用const保护指针
    当调用函数并且把指向变量的指针作为参数传入时,通常会假设函数将修改变量(否则,为什么函数需要指针呢?)。例如,如果在程序中看到语句f(&x);大概是希望f改变x的值。但是,f仅需检......
  • HDFS,MapReduce,Yarn 的架构思想和设计原理
        大家好,我是梦想家Alex。之前我也写了不少关于大数据技术组件的文章,例如:​​     前方高能|HDFS的架构,你吃透了吗?​​​​     MapReduce......
  • Hive 架构思想和设计原理
    1前言    卷友们,大家好~我是梦想家Alex。自上一篇原创文章 ​​HDFS,MapReduce,Yarn的架构思想和设计原理​​发出之后,后台就不断有读者催更,那本篇内容,我们继......
  • <二>函数调用过程中对象优化
    代码1#include<iostream>usingnamespacestd;classTestV2{public: TestV2(inta=10):ma(a){cout<<"TestV2(int)"<<ma<<"对象地址="<<this<<endl;......
  • 架构到底是什么?
    课程概览1、架构与框架的区别2、架构到底是什么?3、架构的目的是什么?1、架构与框架的区别提到架构,大家常常会将架构(Architecture)和框架(Framework)混为一谈。例如:   1)开源......
  • Serverless 架构下的 AI 应用开发
    Serverless架构与CI/CD工具的结合CI/CD是一种通过在应用开发阶段引入自动化流程以频繁向客户交付应用的方法。如图所示,CI/CD的核心概念是持续集成、持续交付和持续部署......
  • Serverless 架构下的 AI 应用开发
    本篇内容连载自《Serverless架构下的AI应用开发:入门、实战与性能优化》。Serverless架构与CI/CD工具的结合CI/CD是一种通过在应用开发阶段引入自动化流程以频繁向客户交......