当前位置: 代码迷 >> C# >> 在一个同步的过程里,可否包含异步调用
  详细解决方案

在一个同步的过程里,可否包含异步调用

热度:100   发布时间:2016-05-05 03:53:42.0
在一个同步的进程里,可否包含异步调用?
本帖最后由 CTO 于 2015-05-01 18:25:42 编辑
比如用户点击一个按钮,以下事件顺序发生:
1. 程序先做数据库查询,如果有数据则显示给用户,整个事件结束。
2. 如果没有数据,进行同步调用一个web service 返回一些数据;
3. 然后把数据呈现给用户;
4.再然后把web service 返回的部分结果保存到一个数据库里面。

上面的4个步骤都包含在一个进程里面,现在想要把数据库的保存部分做成异步保存。

这样做是否有意义呢?问题是 在一个同步的进程里,可否包含异步调用?
------解决思路----------------------
可以异步进行
调用webservice返回值->进行展现

保存到数据库
------解决思路----------------------
从第一步就可以异步。当然,如果第一步是异步的,那么第二步相对于“用户点击一个按钮”的事件处理也就是异步执行的了。
------解决思路----------------------
引用:
这样做是否有意义呢?问题是 在一个同步的进程里,可否包含异步调用?


异步处理有各种原因,通常是通过改变流程来极大地改善系统服务性能、提高时间利用率、减小排队压力、降低维护成本、灵活扩展服务器、永不宕机等等。

举个生活中的例子,如果你去医院的药房取药,你把药方给它们之后,你可以等也可以不等,反正一会儿还会叫号、你也可以看到叫号的通知。这就是一种异步设计。虽然工作人员仍然是原来的工作节奏,但是在药房窗口外边的人则是轻松多了。


至于说进程中“可否包含异步调用”,在于程序设计师的知识水平,而不在于你的操作系统或者编程工具。
------解决思路----------------------
按你的业务流程,每不都是在上一步的基础上完成的
同步就是顺序执行,前一步没结束就不做下一步
异步就是在一系列的回调函数中完成每一步
所以到达第 3 步都是一样的

既然业务要求不能抢先,那么异步也是同步
  相关解决方案