异步ORM是什么意思?

3

异步ORM是什么意思?它与常规ORM的行为有何不同?

在哪些情况下可以使用它?

1个回答

4

这意味着对它的调用会立即返回(不会阻塞)。您将在稍后的某个时间点获得结果,最有可能是由于回调触发。

类似于以下伪代码:

function printResult(result)
    if result is "foo" print "FOO" else print "BAR"

function fooBar()
    Orm.myQuery().setCallback(printResult)
    Orm.myOtherQuery().setCallback(printResult)

在这个例子中,两个查询将同时执行(第二个查询的响应可能会在第一个查询之前到达)。
这在使用非阻塞IO的程序中非常有用。同时执行查询,也许在多个数据库上执行,从延迟方面来说非常优秀。如果每个查询需要1毫秒,那么执行10个查询仍然只需要1毫秒,而不是10毫秒。

不阻塞线程实际上并不是最重要的问题:一个连接通常也无法异步使用(即,只有在不同的连接上发送查询时,这种方法才能起作用)。将多个查询分组在一起通常更为重要:在查询执行时,您仍然可以在客户端上进行一些工作;但如果查询相对简单,则将它们分组在一起可以节省大量与数据库的往返。许多ORM(至少包括NHibernate、DataObjects.Net)提供了对未来(延迟)查询的支持,从这个角度来看更具吸引力。 - Alex Yakunin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接