NBear

摘要: 这是一个ASP.NET 3.5的Web Application程序,实现了类似NUnit的简单但实用的UnitTest功能。写这个小工具的目的是在NBear5的开发中需要方便的在完全真实的模拟环境中测试所有组件功能的在ASP.NET下,尤其是Partial Trust模式下的运行效果,现有的UnitTest工具中似乎对这方面的支持都比较有限,所以,自己花两天时间写了一个。相比NUnit,本工具提供的 UnitTest功能比较基础,但是,对一般的UnitTest来说应该完全够用了。如果您正在开发和测试一些ASP.NET下的Web组件,推荐一试。程序本身就是一个Web Application,所以,自然是包含了全部源代码的。源码对除.Net Framework 3.5之外的DLL没有任何依赖,也可以做成VS的Project Template方便重复使用。阅读全文
posted @ 2008-11-10 15:57 Teddy's Knowledge Base 阅读(3077) | 评论 (15) 编辑
摘要: 该示例使用NBearLite v1.0.1.2,基于.Net PetShop 4.0的源码修改。使用NBearLite重写了等价功能的BLL、Profile、Membership模块的数据访问部分,去除了DALFacrory、IDAL等工程(因为基于NBearLite可以透明的在多种数据库源间进行无缝切换,无需修改代码),去除了Order的基于MSMQ的异步处理部分。本示例演示了使用NBearLite作为数据访问组件进行开发的常用方法。Web工程的Web.config中默认关闭了CaceDependency,并设置了Sqlite为默认数据库。阅读全文
posted @ 2008-01-09 14:44 Teddy's Knowledge Base 阅读(9201) | 评论 (34) 编辑
摘要: 本文介绍一组NBearV4中的基于Emit动态生成代码的辅助类,部分概念在本人的blog之前的文章中或多或少都有介绍,这里包含最新的更新及演示、测试。主要是两个类:CodeGenerator和DynamicMethodFactory。前者提供了一种经过封装的,简化Emit方法(包括Emit DynamicMethod,Constructor,Method,get、set Method of Property)的方案;后者基于前者,实现了一种访问指定类(可以是第三方程序集的internal类)的方法或成员变量,实例化第三方程序集中的internal类型,高性能的以非泛型语法访问泛型方法的机制(通过DynamicMethod和Delegate实现)。阅读全文
posted @ 2007-10-10 11:56 Teddy's Knowledge Base 阅读(5267) | 评论 (14) 编辑
摘要: Kevin McFarlane的C#版DesignByContract Framework实现从02年在CodeProject发布至今,几乎成为C#开发中大多数朋友使用的事实标准。本文结合对该框架的使用经验,在Kevin的原始版本的基础上,使用Strategy Pattern对其进行进一步的扩展,对最常用的检查语义进行封装简化。本文改进的源码以Public Domain协议发布,也就是说,完全没有任何限制。阅读全文
posted @ 2007-10-05 15:01 Teddy's Knowledge Base 阅读(5361) | 评论 (7) 编辑
摘要: NBearLite是一个.NET 2.0开源(BSD协议)通用数据访问组件,支持SQL Server、Oracle、MS Access,MySQL,SQLite,PostgreSQL等多种数据库的透明切换(改变数据库类型时无需修改具体的查询代码)。NBearLite实现了一套类似LINQ的强类型数据库查询语法(支持从简单的CRUD查询到GroupBy、InnerJoin,Paging,SubQuery等常用复杂查询)。NBearLite提供的代码生成工具还可以为您自动生成所有的存储过程调用包装代码,可以让您像使用一个.NET类的方法一样访问存储过程(支持SQL Server,Oracle,MySQL,PostgreSQL数据库)。 NBearLite不是一个ORM工具,它不涉及实体类,NBearLite的所有查询返回Scalar/DataSet/IDataReader等ADO.NET原生数据类型。 推荐在使用NBearLite的同时结合使用NBearMapping进行IDataReader/DataRow数据类型和自定义.NET类(如:实体类或业务类阅读全文
posted @ 2007-07-29 15:12 Teddy's Knowledge Base 阅读(12029) | 评论 (24) 编辑
摘要: 本测试对ADO.NET, NBearV3, NHibernateV1, NBearLite, NBearLite+NBearMapping进行了常见的读写测试。本测试同时证实,NBearLite及NBearLite+NBearMapping的ORM方案,平均性能有很大改善。阅读全文
posted @ 2007-07-26 08:15 Teddy's Knowledge Base 阅读(6686) | 评论 (27) 编辑
摘要: NBearMapping是NBearV4框架的组件之一,可以独立使用。可用于任意类型对象、DataRow和DataReader对象间的透明映射。建议结合NBearLite使用。
主要功能:
1、任意类型对象、DataRow和DataReader对象间的透明映射;
2、支持.NET的Nullable类型;
3、较高的性能,性能比基于Reflection的等价转换快约50%,手动代码 vs NBearMapping vs Reflection对象转换的执行时间比大约为1:2.5:3.6,可参见源码中MappingTest.TestPerformance() 测试;阅读全文
posted @ 2007-07-25 15:23 Teddy's Knowledge Base 阅读(5252) | 评论 (17) 编辑
摘要: NBearLite 更新至v1.0.0.6 beta
全面支持SqlServer,Oracle,MySql,PostgreSql数据库存储过程调用代码生成(C#/VB.NET),支持输入、输出、返回等各种参数类型。
支持Sub Query。
支持Save DataTable/DataRow。阅读全文
posted @ 2007-07-23 15:08 Teddy's Knowledge Base 阅读(4517) | 评论 (15) 编辑
摘要: 未来的NBearV4将由ORM、SOA、WEB等几个可无缝拼接,也可独立使用或搭配第三方组件模块使用的模块组成的全新构架的开发框架。。。。阅读全文
posted @ 2007-07-22 15:01 Teddy's Knowledge Base 阅读(2717) | 评论 (20) 编辑
摘要: NBearLite是一个基于NBear的强类型查询内核的.NET 2.0开源通用数据访问组件。由NBear.org及Teddy维护。NBearLite继承了和进一步简化扩展了NBear中类似LINQ的强类型数据库查询语法(支持CRUD简单查询及GroupBy、InnerJoin,Paging等常用复杂查询),简化了命名空间、代码架构,并进一步简化了用户使用,对已有代码也没有任何侵入。NBearLite不是一个ORM工具,它不涉及实体类,NBearLite的所有查询返回Scalar/DataSet/IDataReader。
阅读全文
posted @ 2007-07-20 13:15 Teddy's Knowledge Base 阅读(10714) | 评论 (48) 编辑
摘要: 本文向读者介绍NBear中实现的DropDownListField字段绑定控件和EnumDescriptionAttribute特性。结合使用这两个组件,就可以最简单、易用和可扩展地完美解决绑定Enum到ASP.NET数据绑定控件的问题。[05/26修订]——增加支持第三方枚举描述,支持二进制与过的枚举值。阅读全文
posted @ 2007-05-26 07:44 Teddy's Knowledge Base 阅读(6885) | 评论 (19) 编辑
摘要: NBear是一个.Net 2.0下的快速开发框架。它提供了包括可视化实体设计、代码生成、持久化、SOA、MVP等一系列组件。 NBear的设计目标是尽最大可能减少程序员的重复劳动、提高开发效率、提升代码的可维护性和整体质量。 官方网站:http://nbear.org 中文教程目录索引:http://www.cnblogs.com/teddyma/archive/2006/11/07/553562.html 示例程序:从官方网站下载NBearVXXX_tutorials.zip,解压后见tutorials目录。阅读全文
posted @ 2007-05-18 15:30 Teddy's Knowledge Base 阅读(11455) | 评论 (41) 编辑
摘要: 本教程演示了NBear中典型的的各种查询功能。包括:join,group by,paging等的支持。
下载地址:http://nbear.org/Modules/Articles/Detail.aspx?i=59阅读全文
posted @ 2007-04-24 17:11 Teddy's Knowledge Base 阅读(8761) | 评论 (43) 编辑
摘要: 在前面的文章改进的“以非泛型方式调用泛型方法”之基于DynamicMethod的实现中,提到了一种通过DynamicMethod以非泛型方法代理访问泛型方法的较佳方法(无额外代码定义需要,执行时间大约相当于直接调用泛型方法的3-4倍)。本文介绍的组件在前文思路的基础上,进行进一步的扩展,封装成一个较通用的DynamicMethodProxyFactory组件。除了可以较高性能访问任意的静态或非静态、泛型或非泛行方法之外,利用DynamicMethod可将代码插入内存中已载入的Module的能力,提供了在程序集外实例化指定Module中的internal类型,在程序集外调用internal类型的方法和public类型的internal方法的支持。

该组件实现如下功能:
1、以通用的非泛行方法Delegate访问任意方法(泛型或非泛型,静态或非静态);
2、支持在程序集外调用指定Module中的internal类型的任意属性(属性本质上可以通过它的get/set方法以方法的形式访问)和方法和public类型的internal方法;
3、支持创建并返阅读全文
posted @ 2007-03-28 11:10 Teddy's Knowledge Base 阅读(7780) | 评论 (24) 编辑
摘要: 本文针对双鱼座同志的以非泛型方式调用泛型方法一文,提出一种更通用的以非泛型方式调用泛型方法的实现——基于DynamicMethod的实现。
基于DynamicMethod的实现的优点是,执行性能和双鱼座的文中实现的第5种方案——动态生成的非泛型接口包装相当(因为都是基于Emit的),但是,避免了原文实现中必须额外定义接口、Delegate的需要,从而,非常通用,应该是解决相同问题的前提下目前所能想到最佳实现。阅读全文
posted @ 2007-03-22 17:06 Teddy's Knowledge Base 阅读(9200) | 评论 (11) 编辑
摘要: 一个NBearDataSource控件,可以直接和其他DataSource一样进行绑定。

本示例演示了使用NBearDataSource控件进行CRUD、使用NBearDataSource控件和NBear的强类型查询语法进行可视化查询、使用PagableRepeater控件进行数据绑定和一个典型的基于NBearDataSource的Master/Detail实体CRUD示例。大家可以看到,使用NBearDataSource的情况下,数据绑定的操作过程大大简化了。

02-08 22:30 修订:新增基于NBearDataSource控件的强类型查询示例
02-09 10:00 修订:增加GridView和Repeater控件如何设置并使用NBearDataSource控件提供的数据库级别分页支持绑定某页数据的说明。
02-10 15:00 修订:新增PagableRepeater控件及示例
02-11 20:30 修订:新增基于NBearDataSource的Master/Detail实体CRUD示例
阅读全文
posted @ 2007-02-10 15:18 Teddy's Knowledge Base 阅读(10584) | 评论 (44) 编辑
摘要: 本教程在《NBearV3 Step by Step教程——IoC篇》的基础上,演示如何基于NBearV3的MVP模块实现基于NBear的IoC的MVP模式的过程。您将看到,利用封装了NBear的IoC模块的NBear.MVP模块,不仅能大大加强系统表现层的可测试性,同时能充分利用NBear已有的IoC模块获得依赖注入能力及基于IoC的分布式服务支持。通过本教程,读者应能够全面掌握使用NBearV3的MVP模块实现表现层MVP模式。阅读全文
posted @ 2006-12-20 20:07 Teddy's Knowledge Base 阅读(6568) | 评论 (22) 编辑
摘要: 本教程介绍NBearV3中的VS2005代码生成插件的使用。阅读全文
posted @ 2006-12-02 21:21 Teddy's Knowledge Base 阅读(7014) | 评论 (31) 编辑
摘要: 本教程介绍NBearV3中的查询缓存支持。通过本教程,读者应能够全面掌握内置于NBearV3的查询缓存的使用。

阅读全文
posted @ 2006-11-21 10:17 Teddy's Knowledge Base 阅读(9886) | 评论 (6) 编辑
摘要: 本教程介绍NBearV3中的实体配置文件的加密支持。通过本教程,读者应能够全面掌握加密实体配置文件和如何结合使用ASP.NET的配置节加密功能,实现部署环境关联的实体配置加密。

阅读全文
posted @ 2006-11-21 10:13 Teddy's Knowledge Base 阅读(8928) | 评论 (2) 编辑
摘要: 经过NB团队,以及众多坛子里感兴趣的朋友的测试,决定在今天正式发布NBearV3的第一个稳定版本。

版本号:V3.3.5
开源协议:BSD
发布时间:2006/11/21

大家可以从SF.NET下载:http://sf.net/projects/nbear。阅读全文
posted @ 2006-11-21 10:12 Teddy's Knowledge Base 阅读(11330) | 评论 (39) 编辑
摘要: 本文为分析模式ORM实现系列文章之一。本系列文章使用NBearV3的ORM组件演示Martin Fowler《分析模式——可复用对象模型》一书中列举的可复用分析模型在ORM中的典型实现。本文讨论Accoutability模式。阅读全文
posted @ 2006-11-20 09:45 Teddy's Knowledge Base 阅读(9814) | 评论 (7) 编辑
posted @ 2006-11-16 09:55 Teddy's Knowledge Base 阅读(6253) | 评论 (4) 编辑
摘要: 本手册演示NBearV3支持的所有实体关系设计的完全参考。包括1对1,1对多,多对多关联以及自关联的正向、反向引用时的所有情况的设计方法。阅读全文
posted @ 2006-11-09 08:05 Teddy's Knowledge Base 阅读(6831) | 评论 (24) 编辑
摘要: 本教程在《NBearV3 Step by Step教程——IoC篇》的基础上,演示如何基于NBearV3的IoC模块开发一个分布式Web应用程序的过程。您将看到,基于NBear的IoC组件,开发分布式系统就和开发单服务器系统一样容易。本教程同时将引导您注意分布式开发和非分布式开发,在实体定义中的注意事项。通过本教程,读者应能够全面掌握使用NBearV3的IoC模块开发单服务器/分布式应用程序的全过程。阅读全文
posted @ 2006-11-07 16:39 Teddy's Knowledge Base 阅读(4062) | 评论 (12) 编辑
摘要: 本教程演示如何基于NBearV3的IoC模块开发一个Web应用程序的基本过程。本教程同时演示使用NBear.Tools.DbToEntityDesign.exe工具从现有的数据库生成设计实体的过程。通过本教程,读者应能够掌握使用NBearV3的IoC模块的基本过程,以及使用NBear.Tools.DbToEntityDesign.exe工具,对已有数据库结构的项目,使用NBearV3的ORM组件进行数据持久化的过程。阅读全文
posted @ 2006-11-06 12:29 Teddy's Knowledge Base 阅读(6744) | 评论 (17) 编辑
摘要: 本教程在前一篇《NBearV3 Step by Step教程——ORM篇》的基础上,演示前文中没有涉及的实体自关联关系;及和性能相关的Attribute的设置:IndexProperty,BatchUpdate;并将详细比较和讨论NBear.Data.Gateway类中的强类型查询方法的使用和注意事项,特别是在不同的Attribute设置选项下的性能差异分析。通过本教程,读者应能够更全面地掌握使用NBearV3的ORM模块进行应用程序设计的过程,了解实体设计中与性能相关的重要选项,并能全面掌握NBear.Data.Gateway中各种强类型查询方法的使用。阅读全文
posted @ 2006-11-05 15:42 Teddy's Knowledge Base 阅读(6617) | 评论 (15) 编辑
摘要: 本教程演示如何基于NBearV3的ORM模块开发一个Web应用程序的全过程。本教程演示的实体关系包括:继承、1对1关联、1对多关联,多对多关联。同时,本教程还演示如何设计实体属性为nullable类型或符合类型。通过本教程,读者应能够掌握使用NBearV3的ORM模块进行应用程序设计的基本过程,以及开发过程中,NBearV3提供的相关工具的使用方法。阅读全文
posted @ 2006-11-03 14:57 Teddy's Knowledge Base 阅读(22360) | 评论 (99) 编辑
摘要: 发布NBearV3.0.5 beta包括SDK文档和“3 Minutes Tutorial”。

欢迎从http://sf.net/projects/nbear下载。阅读全文
posted @ 2006-11-02 16:05 Teddy's Knowledge Base 阅读(1945) | 评论 (3) 编辑
摘要: 11/1 更新:全面支持实体属性级联更新,详见下面的案例的Entity Usage UnitTests代码。

NBearV3新增/修改功能列表:
1、完全重新设计的ORM实现,支持实体继承,实体间复杂关联(一对一、一对多、多对多)及透明的级联插入、更新、删除,LazyLoad等。
2、提供用于整个开发过程的更易使用的代码生成工具,支持:实体设计代码、实体代码、实体配置文件和数据库创建脚本生成。
3、精简优化了底层数据访问代码,进行了更细致的单线程/多线程性能测试。
4、实体及关联关系可以使用任意标准的.Net Framework支持的语言,使用interface、Attribute、接口继承等语言的自然元素作为实体设计元数据,并使用VS.NET2005的类设计器进行设计。
5、自动生成的实体类是标准的class,避免了V2中基于Emit生成代码的性能损失和可能的内存泄露,集成用于强类型查询的查询代码到每个实体类,并支持标准的各种系统序列化(XML,Binary,WebService SOAP)。生成的实体类代码不阅读全文
posted @ 2006-11-01 12:40 Teddy's Knowledge Base 阅读(6200) | 评论 (81) 编辑
摘要: 发布基于NBear的简易AJAX留言板案例源码。

在线演示:
http://www.onlinegf.com/users/teddyma/

功能:
1、支持公开/私人留言及管理员回复;
2、基于XHTML/CSS的页面布局;
3、基于NBear.Web的强类型UI控件数据绑定;
4、基于NBear.Web使用ASP.NET验证控件的客户端脚本验证
5、基于NBear.Web内置的AjaxHelper实现支持浏览器刷新的AJAX页面呈现;
6、基于NBear.Tools.EntityGen.exe的实体代码生成;
7、基于NBear.Tools.Configurator.exe的数据库脚本生成和强类型查询代码生成;
8、基于NBear.Data.Gateway的强类型CRUD和分页查询;
9、基于NBear.IoC及SOA的三层构架(支持零代码修改的分布式部署);
10、支持SQL Server Express 2005或MsAccess数据库(可在Web.conf阅读全文
posted @ 2006-10-08 21:51 Teddy's Knowledge Base 阅读(14096) | 评论 (38) 编辑
摘要: 本文将通过实例比较ASP.NET下的三种典型URL重写方案——ISAPI重写(使用开源组件IIRF),ASP.NET2.0内置的urlMappings和基于自定义HTTPModule的URL重写(使用NBear.Web中的UrlRewriteModule实现),并探讨URL重写中可能遇到的陷阱及处理办法。阅读全文
posted @ 2006-09-11 13:31 Teddy's Knowledge Base 阅读(16522) | 评论 (31) 编辑
摘要: 演示媒介

Flash在线及下载观看。


目录(初定)

0. 简介篇
1. 实体定义篇
2. 实体持久化篇
3. Web篇
4. IoC篇
5. 案例篇阅读全文
posted @ 2006-09-09 10:01 Teddy's Knowledge Base 阅读(8048) | 评论 (81) 编辑
摘要: 欢迎加入NBear官方MSN群:nbeargroup@hotmail.com(将该帐号加为MSN好友即可加入组群,在MSN聊天窗口点击震动图标即可查看群成员列表) 阅读全文
posted @ 2006-08-31 13:01 Teddy's Knowledge Base 阅读(608) | 评论 (0) 编辑
摘要: 从v2.2.1版起,NBear开始支持强类型的实体查询语法。例如,我们可以以如下的语法查询需要的数据:

LocalUser[] users = gateway.Select(_Entity.LocalUser.Id > 5 | _Entity.LocalUser.LoginId == "teddy", _Entity.LocalUser._OrderBy.Id_Desc & _Entity.LocalUser._OrderBy.LoginId);
阅读全文
posted @ 2006-08-27 22:15 Teddy's Knowledge Base 阅读(3602) | 评论 (28) 编辑
摘要: 本文演示如何使用NBear v2.1.9新增的Entity Configurator工具可视化设置实体元数据及生成数据库创建脚本。阅读全文
posted @ 2006-08-25 16:15 Teddy's Knowledge Base 阅读(3188) | 评论 (6) 编辑
摘要: 本文以双鱼座同学的再说继承关系一文中提到的一组三元继承关联关系为基础。

首先,分别实现本人的ORM中的继承关系映射全解一文中提到的三种实体继承体系到关系数据库的映射方案实例。

接着,使用接口分离以上继承体系中的实体类中的相同概念,对该继承体系进行重构,并同样给出对重构后的继承体系的三种到关系数据库的映射方案实例。

全部实例代码基于NBear的接口式实体定义方式实现。
阅读全文
posted @ 2006-08-16 16:16 Teddy's Knowledge Base 阅读(4219) | 评论 (15) 编辑
摘要: 在上一篇文章ORM中的继承关系映射全解中,演示了各种继承关系映射在NBear中实现示例,只不过,文中的示例对于一实体一具体表和一实体一扩展表方案下的子类的保存操作,需要用户手动save实体本身和其所有的父类对应的表。这多少有点不爽,因为,实体的用户是很难全都了解具体要save多少表的。为了解决这个问题,在最新的v2.1.6版中,为NBear新增了一个ActiveEntity类。ActiveEntity类最大的作用是封装了子类的插入,修改和删除操作。另外,ActiveEntity能够自动记录修改过的字段属性,因此,写数据库时,它只会Update真正修改过的实体的属性。在下面的示例中我们可以看到,如何使用ActiveEntity来简化前文介绍的实体继承中的一实体一具体表和一实体一扩展表示例。阅读全文
posted @ 2006-08-15 15:44 Teddy's Knowledge Base 阅读(3518) | 评论 (18) 编辑
摘要: 实体继承是基于OO和关系型数据库软件系统设计中的一个重要主题。本文通过基于NBear的实例解析ORM中的实体继承体系映射的方方面面。

本文涉及的内容包括:

1. 单表继承体系
2. 一实体一具体表
3. 一实体一扩展表
4. 接口实现映射vs基类继承映射阅读全文
posted @ 2006-08-14 11:08 Teddy's Knowledge Base 阅读(4730) | 评论 (2) 编辑
摘要: 本文介绍NBear的接口式实体定义方式下的自定义实体属性和实体多根继承。阅读全文
posted @ 2006-08-09 16:38 Teddy's Knowledge Base 阅读(3433) | 评论 (24) 编辑
摘要: 将NBear升级到V2.1.0,主要更新如下:
1)新增Oracle和MySql Db Provider,使得NBear目前已经支持Oracle和My Sql数据库;
2)修复Lukiya之前遇到的以不同的参数列表调用相同的存储过程时(虽然这样的情形不太常见)的command缓存问题;
3)修复command参数名称包含数字或下划线时的参数值自动填充问题;

旧版本用户手册链接已更新至对应于V2.1.0的新版本V1.1。阅读全文
posted @ 2006-08-07 16:54 Teddy's Knowledge Base 阅读(2121) | 评论 (3) 编辑
摘要: NBear中文用户手册

本手册按实体类定义、数据持久化支持、Web&AJAX支持、SOA和分布式支持、Step by Step教程、附录这六个方面,分别介绍NBear提供的核心类库的使用方法和相关资源。

第1-5章分别以代码实例,介绍每一部分主要的类库的使用方法;第6章给出一个Step by Step教程,手把手引导您熟悉核心类库的使用;第7章给出和NBear相关的其它网上文章资源。

目录清单

1. 实体类定义
2. 数据持久化
3. Web&AJAX
4. SOA和分布式开发
5. 加密解密组件
6. Step by Step教程
7. 附录:相关资源 阅读全文
posted @ 2006-08-04 16:27 Teddy's Knowledge Base 阅读(11319) | 评论 (106) 编辑
摘要: 本文给出一个通过组合使用JST,JSON和AJAX技术,使用客户端js模版代替服务端数据绑定的范例。很显然的,使用客户端数据绑定代替服务端数据绑定能够大大减少服务端的内存和CPU消耗,在硬件不变的情况下,大大提升服务器负载能力。阅读全文
posted @ 2006-07-28 17:11 Teddy's Knowledge Base 阅读(5390) | 评论 (8) 编辑
摘要: Abstract:

This article discusses three common web application architectures: Simple 2 Layer, Standard 3 Layer and Distributed 3 Layer. For each architecture, it gives an ASP.NET 2.0 sample implementaion with NBear framework.

Table of Contents:

1. Simple 2 Layer
2. Standard 3 Layer
3. Distributed 3 Layer
4. More about NBear
5. Get Source Code of NBear and All Samples
6. Summary阅读全文
posted @ 2006-07-19 14:54 Teddy's Knowledge Base 阅读(5167) | 评论 (43) 编辑
摘要: NBear.MQ是NBear Framework中新增的分布式消息队列模块,作为NBear Framework的新成员,NBear.MQ秉承NBear一贯的易于使用和零配置需要的特点,大大改善开发基于消息队列的分布式系统的效率。本文通过介绍一个基于NBear.MQ的Sample - TestServiceMQ,演示基于NBear.MQ开发分布式系统的基本方法。阅读全文
posted @ 2006-05-31 15:56 Teddy's Knowledge Base 阅读(3590) | 评论 (6) 编辑
摘要: NBear是Teddy开发的快速开发框架,在之前的5个示例中,主要演示了主要的框架功能和业务领域模型不太复杂情形下忽略领域层的应用范例。但是,当业务模型相对复杂,单纯基于简单实体的强类型数据访问接口,可能就会使得太多的业务逻辑被分散到service或facade层,此时,我们就最好加一层独立的业务领域模型层来封装实体和强类型接口的使用。本文为您演示基于NBear v1.6.0中新增的NBear.Domain的领域模型设计示例。阅读全文
posted @ 2006-05-07 10:39 Teddy's Knowledge Base 阅读(3619) | 评论 (17) 编辑
摘要: 今天将NBear升级到v1.5.5,主要的升级一是新增了三个类EntitySerializer, OneToManyEntitySerializer, OneToOneEntitySerializer用于简化用户对序列化子件的使用,您不必再对着SerializerHelper提供给您的大堆序列化方法无所适从了。另一个重要的更新是集成了AjaxHelper - Teddy以前的Ajax实现到NBear。AjaxHelper原来的实现基于Prototype1.3.1,从Atlas beta出来起,Teddy已经很久没有更新了,因为我一直在思考AjaxHelper存在的必要性,如果存在,该突出什么。这次不是简单的Copy到NBear的目录,而是完整的集成,Ajax的实现核心也改用ASP.NET2.0内置的Callback代替prototype,主要的使用方式不变,请运行并参见下载后的源码的NBear.WebTest project的TestAjaxHelper.aspx,该页面包含了使用范例和简单说明。因为大致的使用方式没变,关于AjaxHelper的更多以前的AjaxHelper相关文章。阅读全文
posted @ 2006-04-27 22:30 Teddy's Knowledge Base 阅读(3639) | 评论 (10) 编辑
摘要: NBear原名Ilungasoft Framework,是主要有Teddy开发的一个基于.Net 2.0 (C# 2.0, ASP.NET 2.0)的快速开发框架,她将使您基于.Net 2.0的web/winform开发变得异常高效、性能卓越。

名称NBear的由来:

N代表.Net,也代表No;Bear既可以翻译成熊,也有忍受之意。

Bear虽然是那种看起来憨憨的可爱动物,但是攻击时身手“敏捷”,因此.Net Bear代表了NBear是一个基于.Net2.0、为敏捷开发而生的快速开发框架。

我们大多数项目的开发需要Bear(忍受)太多的不必要的重复和繁琐的配置。如数据持久化、对象池、Web开发中的URL重定向、输入验证、客户端脚本等等,为了简化许多常用组件充用,NBear为您提供了许多灵活的工具和组件;为了简化繁琐的配置(尤其是如NHibernate这类ORM组件的繁琐的配置文件格式、高高的学习曲线和噩梦般的需求变更时的维护更新),NBear向您提供零配置需要的数据访问(持久化)接口和可充用组件。阅读全文
posted @ 2006-04-25 17:35 Teddy's Knowledge Base 阅读(3083) | 评论 (27) 编辑
摘要: 本文以一组Entity vs Dataset的性能测试数据为基础,比较以Entity作为DTO和Dataset作为DTO的性能差异。测试可能不一定严密,但是一定程度上能够比较出优劣。希望能为您选择 .Net下不同的数据承载方式、序列化方式、DTO的选择,多一点参考。在本测试中,每个执行过程,对于Entity,我们将先用DataReader读出数据,使用索引将数据填充到Entity,序列化,再反序列化;对于Dataset,将先读取所有数据到Dataset,序列化,再反序列化,最后通过索引填充Dataset中的数据到Entity。也就是说,无论对Entity还是Dataset,我们都尽可能的取其最佳性能的执行方式,从而将性能瓶颈留在了序列化和反序列化方式上。您可以注意到,Dataset的序列化和反序列化性能是非常突出的,但是,我们基于Entity的自定义序列化方式的综合性能,超越了Dataset。

04/18补充:新增.NET JSON序列化对照。关于JSON的更多介绍请参见:http://www.json.org/。不过值得一提的是,官方提供的.Net实现写得那个烂得简阅读全文
posted @ 2006-04-18 16:23 Teddy's Knowledge Base 阅读(8191) | 评论 (15) 编辑
摘要: 本示例演示基于Ilungasoft Framework实现继承关系和Tree结构的实体。前面的文章已经介绍过,基于Ilungasoft Framework的开发模型使用可调试的视图(Views)代替传统ORM中不可调试的Configuration(例如:XML等各式的配置文件)。前面的Sample2已经介绍了如何使用视图处理一般的OneToMany、ManyToMany关系,本文演示的Sample4,将演示更为复杂的继承和tree结构,具体演示内容包括:

1、继承映射(采用一实体一表,不冗余父表字段方式映射);
2、两种Tree结构映射方式(方式一:单表行冗余,采用用户事务维护tree关系;方式二:单表无冗余,Inner Join + Union);
3、演示Ilungasoft Framework中的一个新的用于简化处理关联实体的类OneToMany的使用。 阅读全文
posted @ 2006-04-10 11:16 Teddy's Knowledge Base 阅读(2676) | 评论 (0) 编辑
摘要: 本文主要探讨关于Ilungasoft Framework中动态Entity的序列化问题。如果您之前也关注过Ilungasoft Framework,您一定会被其Entity定义格式的简单所吸引,用户只需要定义实体类的接口(框架提供生成工具)。这里,Teddy将基于一个新的Sample,讨论使用.Net框架提供的默认序列化类序列化基于本框架的Entity的多种情形。关于Ilungasoft Framework的更多文章索引及版本更新,您可以访问:Ilungasoft Framework官方首页。

更正:本文最初的论述有一些错误,在双鱼座的指点下,只需将emit动态生成的程序集加载到AppDomain就能使Sample3中所有的序列化和反序列化正确运行!请注意下文中划去的文字和红色的更正文字。阅读全文
posted @ 2006-04-08 16:57 Teddy's Knowledge Base 阅读(2780) | 评论 (4) 编辑
posted @ 2006-04-05 14:46 Teddy's Knowledge Base 阅读(3553) | 评论 (2) 编辑
摘要: Ilungaosft Framework是Teddy近期发布的开源Web快速开发框架,包括持久层及一系列方便Web开发的组件。本文将在一个新的Sample的基础上,说明基于Ilungasoft Framework开发是如何处理有关联关系的实体。我要再次说明的是,Ilungasoft Framework的设计出发点不是要完全透明的进行ORM,因此,不会自动映射实体关系,以此换来的好处是其完全不需要配置,拥有极大的灵活性和易用性。但是这并不表示,基于Ilungasoft Framework处理实体关系就不方便。本示例就演示了一个非常常见的用户和组、消息的关联关系,涵盖了一对多、多对多的关联情形。
阅读全文
posted @ 2006-04-04 10:51 Teddy's Knowledge Base 阅读(3282) | 评论 (9) 编辑