.NET Tech Blog - Find Web Hosting

Find best web hosting with coupon, professional editorial reviews and customer voted reviews.

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  7 随笔 :: 25 文章 :: 374 评论 :: 8 引用

公告

DataQuicker2完全基于.NET 2.0的新特点,代码简洁、唯美,性能非常好(已利用VS2005的新功能Performance测试和写SQL构建的数据层做了性能对比,相差不会超过10%)。

DataQuicker2迷人的特点:
1)我设计的DQL,几乎完全和SQL一致,不过加强了查询功能,使数据的查询变得非常简单。举例来说,通常我们在查询中有多个可选项,对于查询用户来说有用户ID、用户名、职位、创建日期范围等,不过每一项都是可选的,通常我们就需要在程序中自己来组装SQL条件,即使使用其他的ORM,也需要自己拼装Criteria,而DQL的语法则是一次性列出所有的SQL条件:
select *
from users
where
    userid like '%{%UserID%}%'
    and username like '%{%UserName%}%'
    and position = '{%Position%}'
    and (CreatedTime>='{%StartTime%}' and CreatedTime<='{%EndTime%}')
在DataQuicker2中有个Query类,可以通过它的到这条DQL语句,然后我们在程序中,比如
Query query = 创建对象;
query["UserId"] = "Eunge";
query["EndTime"] = DateTime.Now;
--生成的SQL语句--
select *
from users
where
    userid like '%Eunge%'
    and (CreatedTime<='2006-2-28 12:22:21')

也就是说DataQuicker2中具有词法分析,会在第一次实例化DQL中进行词法分析,之后缓存。词法分析的结果就是解离所有的条件语句,包括在From字句中视图查询中的条件,或者子查询的条件,生成一种DQL XML的中间语言(我自己命名的^_^)。然后在程序中再根据赋予的变量值{%%}来动态重新组装SQL(这种形式的为变量)。其中采用特殊的优化算法,经Performance Test证实,除了首次运行会稍慢外,之后的整个查询过程和直接写SQL可以近似相等,因为性能的瓶颈都到与数据库链接中去了,比如0.01秒和0.012秒的差别可以忽略不计。

DQL是以XML格式的文件与数据实体类同名作为嵌入资源编译到生成的实体类中。比如User.cs,那么DQL为User.dql.xml。当然,如果该实体上不需要构建查询,可以不加入这个.dql.xml

2)托管数据分页,因为生成的DQL XML中间语言,DataQuicker2支持数据分页,真正的分页,可以设定查第几页,每页显示多少条数据。并且DQL的写法与不需要使用数据分页时完全一样,一切由系统代劳了,这都是对原始的DQL进行词法分析后带来的好处,速度非常快。

3)DataQuicker2是中英双语的注释了,不像DataQuicker是全英文,盲倒了无数英雄……

实际上是DataQuicker2在首次运行时会自动增加一些存储分页过程到数据库,如果使用数据分页的话,框架会去执行那些存储过程来返回数据集。做到需要多少数据,拿多少数据。

DataQuicker2的CRUD和其他特性就不说了,和大多ORM都类似,不过使用了范型,到时候大家看到就知道了。

不过DataQuicker2的缺点
1)只支持单主键,主键值可以是数据库自增、或者由DataQuicker2托管的自增长或GUID,或者用户自己管理。

2)只支持MSSQL2000和MSSQL2005,我自己不懂Oracle、MSSQL、Infomix等,所以没法写它们的Provider数据组件,遗憾。因为是VS2005了,Access我也没有考虑了,并且我一致在忙搜索引擎的开发和推广,一个人精力实在有限。

DataQuicker2仍然是开源的,现在DataQuicker2我自己在用了,代码生成工具也开发好了,可以从数据库直接生成表、视图实体或者存储过程实体。陆续发现了一些Bug,也在修。不过由于一直没有找到生成CHM帮助文档的工具,NDoc不成生成.NET 2.0类库的帮助文档了,所以做不了帮助文档,没法发布,如果大家有好的意见或建议,也可以mail来告诉我。现在的搜价网网站部分就是使用DataQuicker2作为数据层,网址是http://www.sj110.com,搜价网的数据量在100万到200万之间。

对了,我在经营搜索引擎之余重新开发DataQuicker2完全是为了解决效率上的瓶颈,因为主要也会用到搜索引擎上,包括网站和搜索引擎,所以性能上我放心了,大家也应该放心,呵呵。

另外,现在一直我一个人从事搜价网的整个运营,一直希望能找到志同道合并且有实力、有时间、有兴趣并且能吃苦的朋友合作创业。如果有想法的朋友可以联系我,MSN:eudev.net@yeah.net

posted on 2006-03-02 03:14 Eunge 阅读(...) 评论(...)  编辑 收藏