.Net O/R(对象/关系)映射器是否提供开箱即用的异步方法?

如果可能的话,我不想为异步方法编写样板

我已经使用 CCR 框架使用异步方法推出了自己的 DAL。CCR 基本上要求我不要阻塞任何等待 IO 响应的线程。

到目前为止,我的解决方案的好处是它已降至最低限度。但随着这个项目的规模和功能不断增长,我面临着维护原始 SQL 查询和样板代码的艰巨任务。

但另一方面,如果 O/R 映射器异步方法实际上只是一个混乱的黑客,增加了奇怪的复杂性,我的情况也不会更好。

请不要关注异步编程的替代方案。

有帮助吗?

解决方案

虽然我不知道其中是否做到开箱即用,你可以使用 .NetTiers ,这是基于模板的。你可以只异步部分添加到模板。这至少会消除你不得不保持样板代码和裸露的SQL查询。这博客说明如何异步调用添加到MS企业库(如果你选择哪个.NetTiers可以使用)。

截至2008年12月中旬,LLBLGEN临本身不支持异步调用。目前基因组确实没有。它不会出现 Telerik的会那样做。差不多就只有搜索他们的文件和寻找或者异步或开始开始,因为这是模式的方法。

我让其他的答案是,如果它是一个好主意或不...

说话

其他提示

是,对于SQLAlchemy的(最好奥姆斯之一),有sAsync:

http://foss.eepatents.com/sAsync

和NADBAPI:

http://developer.berlios.de/projects/nadbapi/

我想你听错了。我的理解是,在你的情况下,异步执行应在架构层面,而不是ORM水平,即消息队列驱动的架构来处理。我看到的是,你的webserive只能放置一个消息在队列中,有某种背景剂确实异步处理掉队列。

由于我没有足够的信誉发表意见,并在#1我提醒将另一“答案”我会在这里留下我的评论。

利B:SQLAlchemy的?你如何使用.NET使用它???

以异步方式

获取数据可以以各种方式来实现。要外包给一个O / R映射器给出了你可能不希望处理,因为它并没有真正使你的代码不太复杂的挑战。主要的问题是,你必须有当获取由O / R映射器完成该通知的机制,使主叫方被告知数据已准备就绪。

这是不小于自己创建线程复杂少并调用O / R映射器的从该线程取逻辑。

正如你指出你想创建这应该是响应Web服务,你已经认识到呼叫者的web服务外,等待数据。督察:如果呼叫者使用Web服务的获取数据,它已经同步,其他客户端仍然可以调用Web服务,以及:原调用方的请求是在不同的线程来处理,逻辑来获取数据里面跑线程,然后将数据返回给调用者。

使用异步方法是没有用的在这里,因为呼叫者否则必须被通知时,数据已准备好,这需要从该web服务的客户端,这需要客户端保持连接到,只要该web服务的推送作为取反正需要。

异步突发的互动并不神奇的东西,你可以扔的东西所以它变得更加敏感。异步突发的互动可以使主叫方做其他事情的平均时间。然而,如果这已经没有必要,你不需要异步突发的互动,首先,这将使你的代码少了很多复杂。

Nhibernate的似乎是相对容易实现异步比LinqToSQL。请参阅

个人我还能做什么,虽然是用什么我舒服(因为我没用过NHibernate的我会担心的学习曲线和潜在的问题,所以我宁愿使用类似LINQtoSQL或定制的数据访问层)和包它在 WCF的它自己的Web服务LOB适配器

如果你真的不想要的代码,你自己,你可以只使用 ADO.NET数据服务其基本上是做为实体框架。

听起来您缺少一些索引。

或者你需要将数据库设计转向OLAP模型。

如果不是这样的话。

  1. 获取更多内存。
  2. 获得更多的CPU。
  3. 对表进行分区。
  4. 在数据库前面构建一个可以处理异步请求的包装器。它看起来像一个队列。
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top