随笔分类 - Tech. Thinking
摘要:本文针对双鱼座同志的以非泛型方式调用泛型方法一文,提出一种更通用的以非泛型方式调用泛型方法的实现——基于DynamicMethod的实现。
基于DynamicMethod的实现的优点是,执行性能和双鱼座的文中实现的第5种方案——动态生成的非泛型接口包装相当(因为都是基于Emit的),但是,避免了原文实现中必须额外定义接口、Delegate的需要,从而,非常通用,应该是解决相同问题的前提下目前所能想到最佳实现。
阅读全文
摘要:闭关一个周末,重写了NBearV3的实体关联设计语言。新的语法能够更清晰明了的表述所有常见实体关联关系。新的实现版本同时实现了数据库完整性约束检测和自动级联更新。所有NBearV3教程已经更新以反映最新的修改。在线教程目录:NBearV3中文教程总目录最新版本NBearV3.2.0及所有源码和完整的Word版本的Step by Step教程同时可以从SF.NET下载。欢迎大家多提宝贵意见~~
阅读全文
摘要:本手册演示NBearV3支持的所有实体关系设计的完全参考。包括1对1,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)。生成的实体类代码不
阅读全文
摘要:本文以双鱼座同学的再说继承关系一文中提到的一组三元继承关联关系为基础。
首先,分别实现本人的ORM中的继承关系映射全解一文中提到的三种实体继承体系到关系数据库的映射方案实例。
接着,使用接口分离以上继承体系中的实体类中的相同概念,对该继承体系进行重构,并同样给出对重构后的继承体系的三种到关系数据库的映射方案实例。
全部实例代码基于NBear的接口式实体定义方式实现。
阅读全文
摘要:实体继承是基于OO和关系型数据库软件系统设计中的一个重要主题。本文通过基于NBear的实例解析ORM中的实体继承体系映射的方方面面。
本文涉及的内容包括:
1. 单表继承体系
2. 一实体一具体表
3. 一实体一扩展表
4. 接口实现映射vs基类继承映射
阅读全文
摘要:将NBear升级到V2.1.0,主要更新如下:
1)新增Oracle和MySql Db Provider,使得NBear目前已经支持Oracle和My Sql数据库;
2)修复Lukiya之前遇到的以不同的参数列表调用相同的存储过程时(虽然这样的情形不太常见)的command缓存问题;
3)修复command参数名称包含数字或下划线时的参数值自动填充问题;
旧版本用户手册链接已更新至对应于V2.1.0的新版本V1.1。
阅读全文
摘要:本文给出一个通过组合使用JST,JSON和AJAX技术,使用客户端js模版代替服务端数据绑定的范例。很显然的,使用客户端数据绑定代替服务端数据绑定能够大大减少服务端的内存和CPU消耗,在硬件不变的情况下,大大提升服务器负载能力。
阅读全文
摘要: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
阅读全文
摘要:NBear.MQ是NBear Framework中新增的分布式消息队列模块,作为NBear Framework的新成员,NBear.MQ秉承NBear一贯的易于使用和零配置需要的特点,大大改善开发基于消息队列的分布式系统的效率。本文通过介绍一个基于NBear.MQ的Sample - TestServiceMQ,演示基于NBear.MQ开发分布式系统的基本方法。
阅读全文
摘要:NBear是Teddy开发的快速开发框架,在之前的5个示例中,主要演示了主要的框架功能和业务领域模型不太复杂情形下忽略领域层的应用范例。但是,当业务模型相对复杂,单纯基于简单实体的强类型数据访问接口,可能就会使得太多的业务逻辑被分散到service或facade层,此时,我们就最好加一层独立的业务领域模型层来封装实体和强类型接口的使用。本文为您演示基于NBear v1.6.0中新增的NBear.Domain的领域模型设计示例。
阅读全文
摘要:今天将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相关文章。
阅读全文
摘要: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向您提供零配置需要的数据访问(持久化)接口和可充用组件。
阅读全文
摘要:本文以一组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实现写得那个烂得简
阅读全文
摘要:本示例演示基于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的使用。
阅读全文
摘要:本文主要探讨关于Ilungasoft Framework中动态Entity的序列化问题。如果您之前也关注过Ilungasoft Framework,您一定会被其Entity定义格式的简单所吸引,用户只需要定义实体类的接口(框架提供生成工具)。这里,Teddy将基于一个新的Sample,讨论使用.Net框架提供的默认序列化类序列化基于本框架的Entity的多种情形。关于Ilungasoft Framework的更多文章索引及版本更新,您可以访问:Ilungasoft Framework官方首页。
更正:本文最初的论述有一些错误,在双鱼座的指点下,只需将emit动态生成的程序集加载到AppDomain就能使Sample3中所有的序列化和反序列化正确运行!请注意下文中划去的文字和红色的更正文字。
阅读全文
摘要:Ilungaosft Framework是Teddy近期发布的开源Web快速开发框架,包括持久层及一系列方便Web开发的组件。本文将在一个新的Sample的基础上,说明基于Ilungasoft Framework开发是如何处理有关联关系的实体。我要再次说明的是,Ilungasoft Framework的设计出发点不是要完全透明的进行ORM,因此,不会自动映射实体关系,以此换来的好处是其完全不需要配置,拥有极大的灵活性和易用性。但是这并不表示,基于Ilungasoft Framework处理实体关系就不方便。本示例就演示了一个非常常见的用户和组、消息的关联关系,涵盖了一对多、多对多的关联情形。
阅读全文
摘要:2006/3/20
v1.0.2
1)支持多个数据库源协同工作,只需指定web.config中的ConnectionString Name。
Sample中,新增创建第二个数据源的代码示例...
阅读全文
摘要:Ilungasoft Framework是Teddy正在开发中的Web快速开发框架,该框架基于.Net 2.0,设计的出发点就是易用性,快速开发,兼顾性能。同时,Ilungasoft Framework也充分利用了许多.Net 2.0中的新特性以简化框架的易用性。本文将以一个Sample Web应用的分析为基础,介绍Ilungasoft Framework的使用。在本文中,您将看到,Ilungasoft Framework对Web开发的极大简化。
阅读全文
摘要:简介:ReqMgr是一个根据QPG2006的需求看板思想改写的简易需求管理和错误跟踪工具。支持多用户。因为主要开发已用于我自己的项目,功能比较简单,但是基本够用。运行环境:Asp.Net 2.0安装说明:确认正确安装.Net Framework 2.0并将Asp.Net 2.0注册到IIS;解压缩ReqMgr_compiled0207.zip到需要的目录;建立虚拟目录,并设为允许匿名访问,设置As...
阅读全文