网站设计中同步调用,还是异步调用?
我们已经知道了同步的根本界说和一些示例,那么让我们拓宽一-下评论辩论,看看运用中的同步骤用和异步骤用。同步骤用是在挪用返回时能力完整履行它们的动作。假如一个办法被挪用了,掌握权被转给该办法来行使,那么只有当该办法完成了本身要履行的操作,胜利地返回了或者返回有错时,运用中挪用该办法的处所才会从新获得掌握权。换而言之,同步办法先被挪用,然后它们履行操作,当它们完成时,会返还掌握权。
作为同步办法的一个示例,让我们来看看AllScale公司的HRM办事中的一个办法query_ exec。该办法用于构建和履行一个动态的数据库查询。query_ exec办法中的一个步调是树立一一个数据库衔接。在获得这个数据库衔接义务胜利完成了的明白确认之前,query. exec办法不会持续履行。如许做既糟蹋资本,又糟蹋时光。假如数据库弗成用,那么该运用就不该该把时光糟蹋在创立查询、期待数据库恢复可用上。事实上,假如数据库弗成用了,,看看若何划分数据库来进步它的可用性。尽管如斯,这是个解释同步骤用是 若何工作的例子。是以,提议挪用的办法会被暂停,直到被挪用的过程返回成果之前,它是不克不及完成的。
另一个解释同步性的非技巧示例是两小我之间的沟通,这可所以面临面,也可所以经由过程德律风。假如这两小我都忙于有意义的谈话,那么就不太可能产生其他的动作。个中一人假如一直止与另一人的谈话,那么很难再与第三小我开端攀谈。德律风会直占线,直到两小我中的一个或者两者挂断了德律风。
与同步办法或过程相对的是异步办法。在异步办法挪用中,会在一个新的线程中挪用一个办法,这个办法会立刻把掌握权返回给挪用它的线程。描写异步办法挪用的设计模式叫作异步设计或异步办法挪用(AMI)。这个异步骤用的办法会在另一个线程中持续履行,或胜利停止或涌现毛病,但都不会再与提议它的线程有进一步的交互。 让我们再来看看AllScale公司的query exec办法。在挪用了同步办法,树立数据库衔接后,该办法须要预备和履行查询了。在HRM体系中,AllScale公司有一个监控框架,可以或许用来不雅察所有查询的连续时光以及查询是否胜利了,这个框架采取了异步骤用办法start query_ time和end query time。这些办法会把一个体系时光存储在内存中,期待挪用的停止,以便盘算查询的连续时光。然后这个连续时光会被存储在一个监控数据
库中,经由过程查询这个数据库,可以依据查询运行时光的长短懂得体系运行状态若何。固然监控查询的机能很主要,但让查询真正办事于用户的要求更为主要。是以,start query time和lend query_time这些办法是以异步模式挪用的。假如它们运行胜利并返回了却果,那么AllScale公司的运营团队和软件开辟团队就能从监控数据库中获得查询时光。即使监控挪用掉败了,或者衔接监控数据库花了20秒的时光,这些团队都不会在乎。用户的查询仍然在运行,它们基本不关怀这些异步骤用。
回到我们人际沟通的示例,电子邮件是个异步通讯的很好例子。你写了电子邮件并把它发出去后,可以立刻去做其他的工作,可以写另一封邮件, 也可以打一轮高尔夫球或者其他什么工作。当答复的邮件在一个适合的时刻达到时,你可以浏览这封答复的邮件,并可能发出另一封邮件,作为答复。这个网站设计的沟通链除了须要为处置沟通和写回信消费点时光之外,不会妨害发送者和吸收者的任何其他运动。