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

.Net技术 码拜 9年前 (2015-05-11) 814次浏览 0个评论
 

比如用户点击一个按钮,以下事件顺序发生:
1. 程序先做数据库查询,如果有数据则显示给用户,整个事件结束。
2. 如果没有数据,进行同步调用一个web service 返回一些数据;
3. 然后把数据呈现给用户;
4.再然后把web service 返回的部分结果保存到一个数据库里面。

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

这样做是否有意义呢?问题是 在一个同步的进程里,可否包含异步调用?

10分
可以异步进行
调用webservice返回值->进行展现

保存到数据库
10分
从第一步就可以异步。当然,如果第一步是异步的,那么第二步相对于“用户点击一个按钮”的事件处理也就是异步执行的了。
10分
引用 楼主 CTO 的回复:

这样做是否有意义呢?问题是 在一个同步的进程里,可否包含异步调用?

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

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

至于说进程中“可否包含异步调用”,在于程序设计师的知识水平,而不在于你的操作系统或者编程工具。

10分
按你的业务流程,每不都是在上一步的基础上完成的
同步就是顺序执行,前一步没结束就不做下一步
异步就是在一系列的回调函数中完成每一步
所以到达第 3 步都是一样的

既然业务要求不能抢先,那么异步也是同步

多谢大家的回复。

我不是说步骤1,2,3,4 做成异步 (他们必须是顺序的); 而且针对每一个小步骤里面的调用做成异步。
我说的是第四步保存数据,如果做成对数据库本身的异步访问是不是有好处?

我不是说步骤1,2,3,4 做成异步 (他们必须是顺序的); 而且针对每一个小步骤里面的调用做成异步。
我说的是第四步保存数据,如果做成对数据库本身的异步访问是不是有好处?
如果不理解逻辑推理方面的讨论,那么就掷筛子,3个面写上“有好处”,3个面写上“没好处”,然后扔出去。
这个办法不错,可以研究一下,呵呵。

我的想法是,第四部(最后一步),如果是同步调用数据库的插入,那么必须等待这个进程结束,才是真正的结束。
但是如果是异步插入,那么可以起早结束进程 (不必等待插入结果成功与否)。所以异步插入是有好处的 – 不知道对否?


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明在一个同步的进程里,可否包含异步调用?
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!