
Tech. Thinking
文章平均质量分 83
teddyma
这个作者很懒,什么都没留下…
展开
-
讨论:WCF可序列化的ActiveRecord实现有意义吗?
<br />本文的目的,是探讨WCF可序列化的ActiveRecord实现是否有意义。ActiveRecord模式简介<br />ActiveRecord模式是Martin Fowler的企业应用架构模式中提到的一种数据访问模式,如下图:<br /><br />Person类包含lastName, firstName等这些属性,一个Person类的实例,对应数据库的一个Person表或视图的一条记录,每一个属性,对应数据库记录的一个字段;同时,Person类包含CRUD方法,封装了对数据库的操作;Perso原创 2010-08-08 14:00:00 · 1146 阅读 · 0 评论 -
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 imple原创 2006-07-19 14:39:00 · 872 阅读 · 0 评论 -
ORM中的继承关系映射全解——单表继承体系、一实体一具体表、一实体一扩展表、接口映射
实体继承是基于OO和关系型数据库软件系统设计中的一个重要主题。本文通过基于NBear的实例解析ORM中的实体继承体系映射的方方面面。本文涉及的内容包括:1. 单表继承体系2. 一实体一具体表3. 一实体一扩展表4. 接口实现映射vs基类继承映射1. 单表继承体系所谓单表继承体系就是用一张数据库表存储整个继承体系中的所有实体的数据。单表继承体系适合那种继承体系中实体数目相对较少,总记录原创 2006-08-14 11:38:00 · 795 阅读 · 0 评论 -
实例解析继承体系重构及ORM映射
本文以双鱼座同学的再说继承关系一文中提到的一组三元继承关联关系为基础。首先,分别实现本人的ORM中的继承关系映射全解一文中提到的三种实体继承体系到关系数据库的映射方案实例。接着,使用接口分离以上继承体系中的实体类中的相同概念,对该继承体系进行重构,并同样给出对重构后的继承体系的三种到关系数据库的映射方案实例。全部实例代码基于NBear的接口式实体定义方式实现。1. 背景原创 2006-08-16 16:38:00 · 461 阅读 · 0 评论 -
重新设计NBearV3中的实体关联设计语言,实现数据库完整性约束和级联更新
闭关一个周末,重写了NBearV3的实体关联设计语言。新的语法能够更清晰明了的表述所有常见实体关联关系。新的实现版本同时实现了数据库完整性约束检测和自动级联更新。所有NBearV3教程已经更新以反映最新的修改。在线教程目录:NBearV3中文教程总目录最新版本NBearV3.2.0及所有源码和完整的Word版本的Step by Step教程同时可以从SF.NET下载。欢迎大家多提宝贵意见原创 2006-11-12 22:35:00 · 493 阅读 · 0 评论 -
重新诠释AOP
前面谈到SOA,思维可能确实有点发散,但是,我还是坚持这样一种更高抽象层次的Service Oriented设计思想绝对是有益的。当然这个有待实践检验。另一方面,本人正在规划中的一个SOAHelper开源框架将会为基于通用的SOA思想的开发提供一些便利,当然,这里提到的SOA都不是业界对SOA严格的标准定义。而是更高层次的抽象,不过,对于严格的SOA,同样是有益的,不,应该是主要的服务对原创 2005-11-21 17:43:00 · 500 阅读 · 0 评论 -
没有ORM或代码生成数据就不能持久化了? - 用范型技术代替代码生成!
//一些唠叨现如今,写ORM的人越来越多,写代码生成工具的也是一波又一波,其实仔细去看,凡是ORM的,大多数实现原理其实都大同小异,重复来重复去有何意义呢?写代码生成工具的,不知道自己是不是相信会有很多人用你的工具来开发实际的应用呢?我真的要开发程序,要生成也自己写了,有钱的,或者用盗版的可以用codesmith(还有cavingdeep的开源工具DCG),没钱的可以用velocity。原创 2005-12-30 22:42:00 · 765 阅读 · 0 评论 -
C#2.0 - Object Pool 简单实现
本文介绍本人的一个简单Object Pool实现。什么是Object Pool呢?大家可能都知道什么是数据库连接池,他能极大避免不需要的对象销毁和初始化开销。本文实现的对象池是一个通用的可用于任何有实例化接口的对象的池。默认的对象的实例化接口是new,文中也演示了如果您的对象需要从一个Factory构造,或当你的对象是用Emit生成时,如何简单继承ObjectPool类,实现特殊的对象的原创 2006-01-11 11:41:00 · 1297 阅读 · 0 评论 -
ASP.Net 2.0 - 使用Ilungasoft Framework加速Web开发
Ilungasoft Framework是Teddy正在开发中的Web快速开发框架,该框架基于.Net 2.0,设计的出发点就是易用性,快速开发,兼顾性能。同时,Ilungasoft Framework也充分利用了许多.Net 2.0中的新特性以简化框架的易用性。本文将以一个Sample Web应用的分析为基础,介绍Ilungasoft Framework的使用。在本文中,您将看到,Il原创 2006-03-17 15:41:00 · 802 阅读 · 0 评论 -
Update: Ilungasoft Framework v1.0.2 beta with sample
如果您不了解Ilungasoft Framework,请先参考:基于.Net 2.0 (C# 2.0, ASP.NET 2.0)的快速Web开发框架设计(文章索引)和ASP.Net 2.0 - 使用Ilungasoft Framework加速Web开发。更新2006/3/20v1.0.21)支持多个数据库源协同工作,只需指定web.config中的ConnectionString Nam原创 2006-03-20 14:41:00 · 389 阅读 · 0 评论 -
Ilungasoft Framework: 由Emit带来的序列化问题——IEntity的序列化支持范例[源码][04/08修正]
本文主要探讨关于Ilungasoft Framework中动态Entity的序列化问题。如果您之前也关注过Ilungasoft Framework,您一定会被其Entity定义格式的简单所吸引,用户只需要定义实体类的接口(框架提供生成工具)。不过,这样的使用上的简洁性,也就带来了实体类序列化时的部分限制。这里,Teddy将基于一个新的Sample,客观地讨论,使用.Net框架提供的默认序原创 2006-04-08 16:40:00 · 488 阅读 · 0 评论 -
使用NBear.MQ分布式服务消息队列模块开发分布式系统
NBear.MQ是NBearFramework中新增的分布式消息队列模块,作为NBear Framework的新成员,NBear.MQ秉承NBear一贯的易于使用和零配置需要的特点,大大改善开发基于消息队列的分布式系统的效率。本文通过介绍一个基于NBear.MQ的Sample - TestServiceMQ,演示基于NBear.MQ开发分布式系统的基本方法。下载从SF.NET下载NBea原创 2006-05-31 15:40:00 · 519 阅读 · 0 评论 -
Call Back Callback - 整合AjaxHepler到NBear
今天将NBear升级到v1.5.5,主要的升级一是新增了三个类EntitySerializer, OneToManyEntitySerializer, OneToOneEntitySerializer用于简化用户对序列化子件的使用,您不必再对着SerializerHelper提供给您的大堆序列化方法无所适从了。另一个重要的更新是集成了AjaxHelper - Teddy以前的Ajax实现原创 2006-04-27 22:40:00 · 467 阅读 · 0 评论 -
理解Design Pattern
<br />本文的目的是以最精炼的语言,理解什么是Design Pattern,为什么需要Design Pattern,和关于Design Pattern的争论。什么是Design Pattern?<br />从字面上理解,Pattern,指的是解决常见问题的可重用的方案。Design,则限定了,这里的Pattern是为软件的设计服务的。因此,所谓Design Pattern,指的是解决常见的软件设计问题的可重用的方案,或者说解决方案的模板。<br /> <br />两点需要特别注意的是:算法不是Desig原创 2010-08-02 20:00:00 · 4657 阅读 · 30 评论 -
理解单元测试(Unit Testing)
<br />本文的目的是以最精炼的语言,正解什么是单元测试,为什么要单元测试,和如何进行单元测试。 什么是单元测试(Unit Testing)?<br />测试(Testing)这个词很容易理解,那么什么是单元(Unit)呢?一个单元指的是应用程序中可测试的最小的一组源代码。一组源代码可测试,一般要求其有明确的输入和输出。因此,一般来讲,源代码中包含明确的输入和输出的每一个方法被认为是一个可测试的单元。注意,这里指的输出,并不局限于方法的返回值或对输入参数的改变,而包括了方法的执行过程中,改变的任何数据。为原创 2010-07-31 15:01:00 · 1113 阅读 · 1 评论 -
正解TDD
<br />本文的目的是以最精炼的语言,正解什么是TDD,为什么要TDD,和TDD的难点。 <br />什么是TDD? 简单的说,TDD = 测试先行(TFD, Test First Development) + 重构(Refactoring) + 回归测试(Regression Test)。<br /><br /><br />如果要实现某个功能,TDD要求在初步定义完这个功能的外部接口之后,先根据这个功能的用例写测试代码(黑盒测试),测试代码检验的是这个功能的外部接口的使用场景,而非具体的实现细节。然后,原创 2010-07-30 01:01:00 · 734 阅读 · 0 评论 -
LRU Caching Practice
In this article, let’s practice applying LRU caching in an enterprise application for different business cases. Background Firstly, let’s assume we have a User table in database and there may be原创 2010-02-24 22:00:00 · 704 阅读 · 0 评论 -
Enterprise Caching Summary
Background Caching is an very important topic in enterprise-level multi-tier application, especially for web application. A general rule for applying caching is you should consider do necessary c原创 2010-02-23 23:00:00 · 467 阅读 · 0 评论 -
重新诠释SOA
虽然写了不少AOP的文章了,也没少关注SOA,不过最近才发现自己以前的认识多少有些狭隘,不,应该说非常狭隘才是。在这里,我要结合自己最近的感悟,重新诠释一下什么是SOA,什么是AOP。本文原出处为我的MSN SPACE,原文标题是重新诠释SOA和AOP,因为实在写得太长了点,这里分成两篇来写,这是第一篇:重新诠释SOA。之后还会有下一篇,重新诠释AOP,敬请期待!-什么是SOA呢?原创 2005-11-21 13:43:00 · 376 阅读 · 0 评论 -
Component/Service Oriented Software System Development Thinking
1. Current Component/Service Oriented Software System Development Model2. Looking into Component (Coming later)3. Looking outside Component (Coming later)-本文是Teddy关于基于组件及服务为中心的软件系统开发的进一步思考的系列文章原创 2005-11-23 17:43:00 · 491 阅读 · 0 评论 -
来一点反射,再来一点Emit —— 极度简化Entity!
在前一篇文章《没有ORM或代码生成数据就不能持久化了? - 用范型技术代替代码生成!》中,Teddy尝试运用泛型极大简化了一个轻量级持久化框架对代码生成的依赖,并且为了保证性能,整个持久化组件没有使用反射。在本文中,Teddy将在保证性能的基础上,加一点反射和加一点Emit,从而进一步简化Entity的定义和使用,当然也就进一步降低了组件对传统代码生成的依赖。读者可以对比前文阅读本文,看原创 2006-01-04 21:42:00 · 881 阅读 · 0 评论 -
Asp.Net 2.0 开发加速之 - Ilungasoft.Helper.Web.UI.MasterPage/Page/UserControl 精装版
简介我们都知道Asp.Net2.0中aspx文件结构相比以前有了很大的改变。当然,其中大多数是改善,比如,在page的source code界面的内嵌代码支持智能提示了,不过这个智能提示也有小小小的不爽,就是除非是System.Web等几个默认的命名空间中的类,访问其他命名空间的类如果不添加Namespace引用的话就必须用完全路径访问(我的类前面的命名空间前缀会很长啊,很难看的);有一原创 2006-01-24 13:41:00 · 583 阅读 · 0 评论 -
Ilungasoft Framework中处理有关联关系的实体
Ilungaosft Framework是Teddy近期发布的开源Web快速开发框架,包括持久层及一系列方便Web开发的组件。本文将在一个新的Sample的基础上,说明基于Ilungasoft Framework开发是如何处理有关联关系的实体。我要再次说明的是,Ilungasoft Framework的设计出发点不是要完全透明的进行ORM,因此,不会自动映射实体关系,以此换来的好处是其完原创 2006-04-04 10:41:00 · 446 阅读 · 0 评论 -
Ilungasoft Framework: 使用视图处理继承关系、Tree结构实体关系映射示例[源码]
本示例演示基于Ilungasoft Framework实现继承关系和Tree结构的实体。前面的文章已经介绍过,基于Ilungasoft Framework的开发模型使用可调试的视图(Views)代替传统ORM中不可调试的Configuration(例如:XML等各式的配置文件)。前面的Sample2已经介绍了如何使用视图处理一般的OneToMany、ManyToMany关系,本文演示的S原创 2006-04-10 11:40:00 · 396 阅读 · 0 评论 -
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虽然是那种看起来憨憨的可爱动物,但是攻击时身手“敏原创 2006-04-25 17:40:00 · 447 阅读 · 0 评论 -
基于NBear的Domain层设计
NBear是Teddy开发的快速开发框架,在之前的5个示例中,主要演示了主要的框架功能和业务领域模型不太复杂情形下忽略领域层的应用范例。但是,当业务模型相对复杂,单纯基于简单实体的强类型数据访问接口,可能就会使得太多的业务逻辑被分散到service或facade层,此时,我们就最好加一层独立的业务领域模型层来封装实体和强类型接口的使用。本文为您演示基于NBear v1.6.0中新增的NB原创 2006-05-07 10:40:00 · 389 阅读 · 0 评论 -
NbearV3.7新增强类型查询功能演示教程
本教程演示了NBear中典型的的各种查询功能。包括:join,group by,paging等的支持。下载地址:http://nbear.org/Modules/Articles/Detail.aspx?i=59教程内容(同运行时效果):The StrongTypeQuery tutorial demostrates the usage of the powerful strong原创 2007-04-24 17:33:00 · 540 阅读 · 0 评论 -
发布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,S原创 2007-07-29 15:31:00 · 846 阅读 · 0 评论 -
Apply SOA Design Patterns with WCF (4) WCF Database Paging & Sorting (数据库端分页和排序)
Original (原创) by Teddy’s Knowledge Base Content (目录) (1) WCF Configuration Centralization (WCF配置集中管理) (2) WCF Automatic Deployment (WCF自动化部署) (3) WCF Automatic Service Locating (WCF自动化服务定位) (4)原创 2009-03-28 00:31:00 · 688 阅读 · 0 评论 -
Enterprise WCF - Integrate WCF Configuration into Your Enterprise Framework
Background Lots of people declares they are using WCF in their “enterprise” distributed software development together with other SOA technologies, and even calls their software architecture WCF b原创 2009-08-28 23:30:00 · 1159 阅读 · 0 评论 -
.Net 2.0: Entity as DTO vs Dataset as DTO / Xml Serialization vs JSON Serialization
本文以一组Entity vs Dataset的性能测试数据为基础,比较以Entity作为DTO和Dataset作为DTO的性能差异。测试可能不一定严密,但是一定程度上能够比较出优劣。希望能为您选择 .Net下不同的数据承载方式、序列化方式、DTO的选择,多一点参考。在本测试中,每个执行过程,对于Entity,我们将先用DataReader读出数据,使用索引将数据填充到Entity,序列化原创 2006-04-18 16:40:00 · 644 阅读 · 0 评论 -
NBearV3——ORM实体关系设计速查手册
版本1.2 [2006-11-13]简介本手册演示NBearV3支持的所有实体关系设计的完全参考。包括1对1,1对多,多对多关联以及自关联的正向、反向引用时的所有情况的设计方法。注1:本手册并不讨论继承关系。因为,继承关系自然映射到设计实体接口的继承,无需太多额外讨论。注2:所有的关联在演示中都包含了正向和反向的可读写引用,在实际的项目中,一般并不总是需要同时有正向和原创 2006-11-09 08:35:00 · 459 阅读 · 0 评论 -
再续NBear性能测试:ADO.NET, NBearV3, NHibernateV1, NBearLite, NBearLite+NBearMapping性能比较[2008/1/3修订:NBearLite更新至v1.0.1.0整合NBearMapping版
本测试对ADO.NET, NBearV3, NHibernateV1, NBearLite, NBearLite+NBearMapping进行了常见的读写测试。本测试证实了try兄之前对NBearV3的性能问题的测试,应该是正确的。NBearV3的3.7X版本,在升级过程中引入一定的性能损失,该性能损失在3.6X应该不存在,我会检查真正的原因。(7/26修订:NBearV3的性能问题已修原创 2007-07-26 08:32:00 · 621 阅读 · 0 评论 -
扩展Kevin McFarlane的C#版DesignByContract Framework
Kevin McFarlane的C#版DesignByContract Framework实现从02年在CodeProject发布至今,几乎成为C#开发中大多数朋友使用的事实标准。本文结合对该框架的使用经验,在Kevin的原始版本的基础上,使用Strategy Pattern对其进行进一步的扩展,对最常用的检查语义进行封装简化。本文改进的源码以Public Domain协议发布,也就是说原创 2007-10-05 15:31:00 · 541 阅读 · 0 评论 -
基于CodeGenerator的Emit代码生成辅助类源码及演示
本文介绍一组NBearV4中的基于Emit动态生成代码的辅助类,部分概念在本人的blog之前的文章中或多或少都有介绍,这里包含最新的更新及演示、测试。主要是两个类:CodeGenerator和DynamicMethodFactory。前者提供了一种经过封装的,简化Emit方法(包括Emit DynamicMethod,Constructor,Method,get、set Method o原创 2007-10-10 11:31:00 · 655 阅读 · 0 评论 -
Apply SOA Design Patterns with WCF (2) WCF Automatic Deployment (自动化部署)
Original (原创) by Teddy’s Knowledge Base Content (目录) (1) WCF Configuration Centralization (WCF配置集中管理) (2) WCF Automatic Deployment (WCF自动化部署) (3) WCF Automatic Service Locating (WCF自动化服务定位) (4)原创 2009-03-25 23:31:00 · 772 阅读 · 0 评论 -
源码发布 - DynamicMethodProxyFactory组件
在前面的文章改进的“以非泛型方式调用泛型方法”之基于DynamicMethod的实现中,提到了一种通过DynamicMethod以非泛型方法代理访问泛型方法的较佳方法(无额外代码定义需要,执行时间大约相当于直接调用泛型方法的3-4倍)。本文介绍的组件在前文思路的基础上,进行进一步的扩展,封装成一个较通用的DynamicMethodProxyFactory组件。除了可以较高性能访问任意的静原创 2007-03-28 11:33:00 · 534 阅读 · 0 评论 -
改进的“以非泛型方式调用泛型方法”之基于DynamicMethod的实现
本文针对双鱼座同志的以非泛型方式调用泛型方法一文,提出一种更通用的以非泛型方式调用泛型方法的实现——基于DynamicMethod的实现。基于DynamicMethod的实现的优点是,执行性能和双鱼座的文中实现的第5种方案——动态生成的非泛型接口包装相当(因为都是基于Emit的),但是,避免了原文实现中必须额外定义接口、Delegate的需要,从而,非常通用,应该是目前所能想到最佳实现。原创 2007-03-22 17:33:00 · 596 阅读 · 0 评论 -
NBearV3.0.0 Preview发布 - 全新ORM实现![11/1 更新:全面支持实体属性级联更新]
11/1 更新:全面支持实体属性级联更新,详见下面的案例的Entity Usage UnitTests代码。今天发布了NBear的全新版本V3的Preview。感兴趣的朋友可以从http://sf.net/projects/nbear下载最新源码。NBearV3相对于V2作了巨大升级和改进。因此不兼容于NBearV2。之所以目前称为Preview版是因为新版本的源码中除了包含基于NBea原创 2006-11-01 12:36:00 · 574 阅读 · 0 评论 -
一种高性能Hierarchical RBAC实现方案
背景 框图上图中,Role和被设置Permission的Resource都是可以有任意层级继承关系的。 举例 举一个网站的例子来说: 如果,User表示网站用户;Role表示角色;Resource表示所有可访问的URL;Permission是对每一个URL的某一个权限(如:查看,修改等)。 Role可以有任意层级继承关系,如:用户角色可以分原创 2008-01-23 21:31:00 · 564 阅读 · 0 评论