Teddy's Knowledge Base

Tech. Thinking

一种高性能Hierarchical RBAC实现方案

posted @ 2008-01-23 21:29 Teddy's Knowledge Base 阅读(2912) | 评论 (23)  编辑

基于CodeGenerator的Emit代码生成辅助类源码及演示
     摘要: 本文介绍一组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 阅读(3441) | 评论 (14)  编辑

扩展Kevin McFarlane的C#版DesignByContract Framework
     摘要: Kevin McFarlane的C#版DesignByContract Framework实现从02年在CodeProject发布至今,几乎成为C#开发中大多数朋友使用的事实标准。本文结合对该框架的使用经验,在Kevin的原始版本的基础上,使用Strategy Pattern对其进行进一步的扩展,对最常用的检查语义进行封装简化。本文改进的源码以Public Domain协议发布,也就是说,完全没有任何限制。  阅读全文

posted @ 2007-10-05 15:01 Teddy's Knowledge Base 阅读(4375) | 评论 (7)  编辑

发布NBearLite中文版完全参考手册 + NBearLite 10分钟入门教程 + NBearLite v1.0.0.7 beta
     摘要: 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 阅读(8111) | 评论 (22)  编辑

再续NBear性能测试:ADO.NET, NBearV3, NHibernateV1, NBearLite, NBearLite+NBearMapping性能比较[2008/1/3修订:NBearLite更新至v1.0.1.0整合NBearMapping版地测试结果]
     摘要: 本测试对ADO.NET, NBearV3, NHibernateV1, NBearLite, NBearLite+NBearMapping进行了常见的读写测试。本测试同时证实,NBearLite及NBearLite+NBearMapping的ORM方案,平均性能有很大改善。  阅读全文

posted @ 2007-07-26 08:15 Teddy's Knowledge Base 阅读(4255) | 评论 (27)  编辑

NbearV3.7新增强类型查询功能演示教程
     摘要: 本教程演示了NBear中典型的的各种查询功能。包括:join,group by,paging等的支持。
下载地址:http://nbear.org/Modules/Articles/Detail.aspx?i=59  阅读全文

posted @ 2007-04-24 17:11 Teddy's Knowledge Base 阅读(7082) | 评论 (41)  编辑

源码发布 - DynamicMethodProxyFactory组件
     摘要: 在前面的文章改进的“以非泛型方式调用泛型方法”之基于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 阅读(7124) | 评论 (24)  编辑

改进的“以非泛型方式调用泛型方法”之基于DynamicMethod的实现
     摘要: 本文针对双鱼座同志的以非泛型方式调用泛型方法一文,提出一种更通用的以非泛型方式调用泛型方法的实现——基于DynamicMethod的实现。
基于DynamicMethod的实现的优点是,执行性能和双鱼座的文中实现的第5种方案——动态生成的非泛型接口包装相当(因为都是基于Emit的),但是,避免了原文实现中必须额外定义接口、Delegate的需要,从而,非常通用,应该是解决相同问题的前提下目前所能想到最佳实现。  阅读全文

posted @ 2007-03-22 17:06 Teddy's Knowledge Base 阅读(8220) | 评论 (9)  编辑

重新设计NBearV3中的实体关联设计语言,实现数据库完整性约束和级联更新

posted @ 2006-11-12 22:09 Teddy's Knowledge Base 阅读(5328) | 评论 (14)  编辑

NBearV3——ORM实体关系设计速查手册
     摘要: 本手册演示NBearV3支持的所有实体关系设计的完全参考。包括1对1,1对多,多对多关联以及自关联的正向、反向引用时的所有情况的设计方法。  阅读全文

posted @ 2006-11-09 08:05 Teddy's Knowledge Base 阅读(5500) | 评论 (24)  编辑

NBearV3.0.0 Preview发布 - 全新ORM实现![11/1 更新:全面支持实体属性级联更新]
     摘要: 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 阅读(4890) | 评论 (81)  编辑

实例解析继承体系重构及ORM映射
     摘要: 本文以双鱼座同学的再说继承关系一文中提到的一组三元继承关联关系为基础。

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

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

全部实例代码基于NBear的接口式实体定义方式实现。
  阅读全文

posted @ 2006-08-16 16:16 Teddy's Knowledge Base 阅读(3507) | 评论 (14)  编辑

ORM中的继承关系映射全解——单表继承体系、一实体一具体表、一实体一扩展表、接口映射
     摘要: 实体继承是基于OO和关系型数据库软件系统设计中的一个重要主题。本文通过基于NBear的实例解析ORM中的实体继承体系映射的方方面面。

本文涉及的内容包括:

1. 单表继承体系
2. 一实体一具体表
3. 一实体一扩展表
4. 接口实现映射vs基类继承映射  阅读全文

posted @ 2006-08-14 11:08 Teddy's Knowledge Base 阅读(3243) | 评论 (2)  编辑

NBearV2.1.0,新增Oracle和MySql Db Provider,诚征测试
     摘要: 将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 阅读(1855) | 评论 (3)  编辑

JST+JSON+AJAX——使用客户端js模版代替服务端数据绑定
     摘要: 本文给出一个通过组合使用JST,JSON和AJAX技术,使用客户端js模版代替服务端数据绑定的范例。很显然的,使用客户端数据绑定代替服务端数据绑定能够大大减少服务端的内存和CPU消耗,在硬件不变的情况下,大大提升服务器负载能力。  阅读全文

posted @ 2006-07-28 17:11 Teddy's Knowledge Base 阅读(3652) | 评论 (6)  编辑

Web Application Architectures: Simple 2 Layer, Standard 3 Layer and Distributed 3 Layer
     摘要: 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 阅读(4071) | 评论 (43)  编辑

使用NBear.MQ分布式服务消息队列模块开发分布式系统
     摘要: 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 阅读(3201) | 评论 (6)  编辑

基于NBear的Domain层设计
     摘要: NBear是Teddy开发的快速开发框架,在之前的5个示例中,主要演示了主要的框架功能和业务领域模型不太复杂情形下忽略领域层的应用范例。但是,当业务模型相对复杂,单纯基于简单实体的强类型数据访问接口,可能就会使得太多的业务逻辑被分散到service或facade层,此时,我们就最好加一层独立的业务领域模型层来封装实体和强类型接口的使用。本文为您演示基于NBear v1.6.0中新增的NBear.Domain的领域模型设计示例。  阅读全文

posted @ 2006-05-07 10:39 Teddy's Knowledge Base 阅读(3033) | 评论 (17)  编辑

Call Back Callback - 整合AjaxHepler到NBear
     摘要: 今天将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 阅读(3291) | 评论 (9)  编辑

Ilungasoft Framework 正式更名为 NBear
     摘要: 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 阅读(2858) | 评论 (27)  编辑

Full Tech. Thinking Archive