BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

高级开源集合库Power Collections

| 作者 王翔 (Vision Wang) 关注 0 他的粉丝 发布于 2007年9月14日. 估计阅读时间: 3 分钟 | GMTC大前端的下一站,PWA、Web框架、Node等最新最热的大前端话题邀你一起共同探讨。

近日,Wintellect’s在CodePlex上发布了最新版本的Power Collections。虽然.NET Framework似乎已经提供了很丰富的集合类型,但在开发中总会碰到定制集合类型的需要,其中原因在于集合类型的适用场景太过丰富:

  • 用于层间的数据传递;
  • 用于和数据层(无论是DAL还是DSL之类各种概念命名的逻辑数据和数据访问部分)的信息提取;
  • 用于算法中对象的聚合(或组合);
  • 用于UI部分的数据绑定;
  • 用于缓冲必要的参数信息、配置信息、应用上下文信息;
  • 用于集中调用的DTO(Data Transfer Object)对象;
  • ……

由于集合类型的适用情景非常丰富,而且往往对性能和集合容量有很多不可预期的处理需求,因此System.Collections及其子命名空间提供的类型往往在开发中的一些关键技术环节显得捉襟见肘了,例如下列情形:

  • 需要存在冗余数据项的集合类型(Dirty Set);
  • 需要多键值依赖的字典类型;
  • 为了迭代和遍历方便,需要具有排序能力的集合类型(Ordered Set);
  • 访问上,需要只读特性的集合类型;
  • 为了迎合联合索引的特点,应用需要3 键值、甚至更多数量键值的KeyValuePair来保存数据集;
  • 此外,开发中除了需要集合类型抛出必要的异常外,往往还希望可以抛出委托或者事件,用于运行时数据检查或内容校验;
  • 需要在内存中保存特别大数量的集合;
  • ……

Power Collections对上述需要给了一个很精彩的答案,而且都是泛型的。它从“根”上实现了自己的集合类型,排序、只读属性、克隆、序列化、取并集(Union)、求交集(Intesection)等都是从自己实现的集合基类中完成的。相对System.Colletions而言,Power Collections的类型基本上不仅仅是“一堆”数据,还包括了非常多的计算方法,而且很多计算支持对一组对象的批量的处理,因此从性能上也有了不小的提升。

随着各种可视化建模工具、开发工具的出现,很多时候,应用的开发人员生疏了对数据结构的使用,.NET Framework虽然丰富但仅仅是个框架,各种流行的.NET 开源框架也几乎都是服务于功能性扩展部分的。但每个应用,尤其对企业而言的关键性大型应用而言,总要有那么几个技术的“坎”,算法处理上的集合类型也经常算一个。Power Collections虽然解决的仅仅是一个“比较小”的问题,但较之其他框架而言,他更基础、更普适一些。即便它的功能覆盖也不可能满足所有应用的需要,不过它的“底子”好,起码定制更复杂集合类型的时候,Power Collections不失为一个很好的范本。

不仅如此,对于.NET开发人员而言,反射、多线程、进程间远程访问、Networking、异步调用、动态代码生成等开发技术领域其实也一直在期待“挺好用”的开源框架。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT