异步ORM的含义是什么

问题描述:

异步ORM的真正含义是什么?它与常规ORM的行为有何不同?异步ORM的含义是什么

它在哪里可以使用?

这意味着它的呼叫立即返回(不会阻止)。你稍后会得到结果,很可能是因为回调触发。

像这样(伪代码):

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毫秒。

+0

不阻止线程实际上并不是最重要的问题:无论如何,通常不能异步使用连接(即,只有在不同连接上发送查询时,此方法才有效)。通常将多个查询分组在一起通常更重要:无论如何,当查询被执行时,您可以在客户端上做一些工作;但是如果查询相对简单,将它们分组在一起会节省大量往返数据库的时间。许多ORM(至少NHibernate,DataObjects.Net)为未来(延迟)的查询提供支持,从这一点来看,这些查询更具吸引力。 – 2009-12-23 13:29:04