Tech. Thinking

摘要: 本文的目的,是探讨WCF可序列化的ActiveRecord实现是否有意义。阅读全文
posted @ 2010-08-08 14:37 Teddy's Knowledge Base 阅读(1662) | 评论 (8) 编辑
摘要: 本文的目的是以最精炼的语言,理解什么是Design Pattern,为什么需要Design Pattern,和关于Design Pattern的争论。阅读全文
posted @ 2010-08-02 20:23 Teddy's Knowledge Base 阅读(2345) | 评论 (26) 编辑
摘要: 本文的目的是以最精炼的语言,正解什么是单元测试,为什么要单元测试,和如何进行单元测试。阅读全文
posted @ 2010-07-31 15:49 Teddy's Knowledge Base 阅读(1978) | 评论 (10) 编辑
摘要: 本文的目的是以最精炼的语言,正解什么是TDD,为什么要TDD,和TDD的难点。阅读全文
posted @ 2010-07-30 01:24 Teddy's Knowledge Base 阅读(2167) | 评论 (24) 编辑
posted @ 2010-02-24 22:07 Teddy's Knowledge Base 阅读(1414) | 评论 (9) 编辑
posted @ 2010-02-23 23:52 Teddy's Knowledge Base 阅读(1300) | 评论 (1) 编辑
摘要: AdoNet vs LinqToSql vs NIntegrateQuery查询性能测试. 先上测试结果: AdoNetTest: 267ms AdoNetCachedCommandTest: 182ms LinqToSqlTest: 3191ms LinqToSqlCompiledQueryTest: 386ms NIntegrateQueryTest: 266ms 阅读全文
posted @ 2009-06-07 01:45 Teddy's Knowledge Base 阅读(3371) | 评论 (15) 编辑
摘要: 本示例程序具体演示如下内容: 1) 基于SQL Server数据库的集中化WCF服务配置管理; 2) 集中化ConnectingString管理; 3) 集中化AppVariable管理; 4) 基于集中化配置管理的WCF ServiceHostFactory和WCF ServiceLocator; 5) 基于集中化配置管理的跨WCF的LINQ Style分页、排序查询及DataSource控件的使用; 6) 整合本地ServiceLocator的WCF服务发布和消费;阅读全文
posted @ 2009-04-21 00:45 Teddy's Knowledge Base 阅读(2476) | 评论 (5) 编辑
摘要: 本文介绍如何实现一个基于WCF的ASP.NET数据源控件,从而使得跨WCF通信的数据库CRUD,尤其是复杂的分页排序更简单。阅读全文
posted @ 2009-03-30 00:03 Teddy's Knowledge Base 阅读(2155) | 评论 (3) 编辑
摘要: 本文提供一种支持跨WCF通讯的数据库端分页和排序(以及更多超过你预期的功能)方案。阅读全文
posted @ 2009-03-28 00:24 Teddy's Knowledge Base 阅读(2444) | 评论 (14) 编辑
摘要: 本文提供一种在WCF服务消费应用程序中通过与服务提供应用程序共享WCF服务契约接口来自动化定位WCF服务实现的方案。阅读全文
posted @ 2009-03-26 23:57 Teddy's Knowledge Base 阅读(2300) | 评论 (1) 编辑
摘要: 本文提供一种简化在多服务器和服务器群上自动化部署WCF服务的方案。阅读全文
posted @ 2009-03-25 23:14 Teddy's Knowledge Base 阅读(2118) | 评论 (1) 编辑
posted @ 2008-01-23 21:29 Teddy's Knowledge Base 阅读(4921) | 评论 (24) 编辑
摘要: 本文介绍一组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 阅读(12030) | 评论 (24) 编辑
摘要: 本测试对ADO.NET, NBearV3, NHibernateV1, NBearLite, NBearLite+NBearMapping进行了常见的读写测试。本测试同时证实,NBearLite及NBearLite+NBearMapping的ORM方案,平均性能有很大改善。阅读全文
posted @ 2007-07-26 08:15 Teddy's Knowledge Base 阅读(6686) | 评论 (27) 编辑
摘要: 本教程演示了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) 编辑
摘要: 本手册演示NBearV3支持的所有实体关系设计的完全参考。包括1对1,1对多,多对多关联以及自关联的正向、反向引用时的所有情况的设计方法。阅读全文
posted @ 2006-11-09 08:05 Teddy's Knowledge Base 阅读(6831) | 评论 (24) 编辑
摘要: 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) 编辑
摘要: 本文以双鱼座同学的再说继承关系一文中提到的一组三元继承关联关系为基础。

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

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

全部实例代码基于NBear的接口式实体定义方式实现。
阅读全文
posted @ 2006-08-16 16:16 Teddy's Knowledge Base 阅读(4219) | 评论 (15) 编辑
摘要: 实体继承是基于OO和关系型数据库软件系统设计中的一个重要主题。本文通过基于NBear的实例解析ORM中的实体继承体系映射的方方面面。

本文涉及的内容包括:

1. 单表继承体系
2. 一实体一具体表
3. 一实体一扩展表
4. 接口实现映射vs基类继承映射阅读全文
posted @ 2006-08-14 11:08 Teddy's Knowledge Base 阅读(4730) | 评论 (2) 编辑
摘要: 将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) 编辑
摘要: 本文给出一个通过组合使用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) 编辑
摘要: 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) 编辑
摘要: 2006/3/20
v1.0.2

1)支持多个数据库源协同工作,只需指定web.config中的ConnectionString Name。

Sample中,新增创建第二个数据源的代码示例...阅读全文
posted @ 2006-03-20 14:28 Teddy's Knowledge Base 阅读(1331) | 评论 (2) 编辑
摘要: Ilungasoft Framework是Teddy正在开发中的Web快速开发框架,该框架基于.Net 2.0,设计的出发点就是易用性,快速开发,兼顾性能。同时,Ilungasoft Framework也充分利用了许多.Net 2.0中的新特性以简化框架的易用性。本文将以一个Sample Web应用的分析为基础,介绍Ilungasoft Framework的使用。在本文中,您将看到,Ilungasoft Framework对Web开发的极大简化。阅读全文
posted @ 2006-03-17 15:28 Teddy's Knowledge Base 阅读(4849) | 评论 (8) 编辑
摘要: 我们都知道Asp.Net2.0中aspx文件结构相比以前有了很大的改变。当然,其中大多数是改善,比如,在page的source code界面的内嵌<% ... %>代码支持智能提示了,不过这个智能提示也有小小小的不爽,就是除非是System.Web等几个默认的命名空间中的类,访问其他命名空间的类如果不添加Namespace引用的话就必须用完全路径访问(我的类前面的命名空间前缀会很长啊,很难看的);有一些改善也带来一些限制,比如,除非在页面/用户控件中显式import其他页面/用户控件,否则是不能访问到外部类型的,感觉就好像这个页面/控件自己一个人带一个程序集。为了合理避免一些限制造成的语法的不爽和合理利用新的智能功能,Teddy在本文中向您展示一组MasterPage/Page/UserControl通用基类封装,他们将为您提供许多非常方便的功能和语法体验。当然,唯一的代价是,你的Page/MasterPage/UserControl必须从我的基类继承,当然,从我的基类继承的对象和从默认系统基类继承的对象是可以自由混合使用的,付出这一点点代价,您在下文中将会看到,绝对是值得的。 阅读全文
posted @ 2006-01-24 13:02 Teddy's Knowledge Base 阅读(4639) | 评论 (8) 编辑
摘要: 本文介绍本人的一个简单Object Pool实现。什么是Object Pool呢?大家可能都知道什么是数据库连接池,他能极大避免不需要的对象销毁和初始化开销。本文实现的对象池是一个通用的可用于任何有实例化接口的对象的池。默认的对象的实例化接口是new,文中也演示了如果您的对象需要从一个Factory构造,或当你的对象是用Emit生成时,如何简单继承ObjectPool类,实现特殊的对象的池化操作。阅读全文
posted @ 2006-01-11 11:56 Teddy's Knowledge Base 阅读(6650) | 评论 (38) 编辑
摘要: 在上一篇《来一点反射,再来一点Emit —— 极度简化Entity!》中,Teddy运用反射和Emit极度简化了Entity的定义方式。本文将在上文的基础上,用自定义KeyValueCollection类代替原来的Dictionary类承载Entity的数据,从而改善Entity的读写性能,并保持Dictionary的方便的使用接口。阅读全文
posted @ 2006-01-09 12:23 Teddy's Knowledge Base 阅读(4458) | 评论 (15) 编辑
摘要: 在前一篇文章《没有ORM或代码生成数据就不能持久化了? - 用范型技术代替代码生成!》中,Teddy尝试运用泛型极大简化了一个轻量级持久化框架对代码生成的依赖,并且为了保证性能,整个持久化组件没有使用反射。在本文中,Teddy将在保证性能的基础上,加一点反射和加一点Emit,从而进一步简化Entity的定义和使用,当然也就进一步降低了组件对传统代码生成的依赖。读者可以对比前文阅读本文,看看改进的效果。内容绝对精彩,不容错过哟!阅读全文
posted @ 2006-01-04 21:14 Teddy's Knowledge Base 阅读(6882) | 评论 (33) 编辑
摘要: 在本文中,Teddy将在对C#2.0中的范型编程的理解的基础上,列举一个应用范型技术以改善以前一些通常只能通过代码生成方式实现的软件构架的实践。文中,Teddy将给出利用范型技术重写一个自己原来基于代码生成思想所写的持久化层方案。新的范型方案既不依赖ORM,也不依赖代码生成,只需定义需要的数据库结构和实体类的基本结构(当然,如果还想偷懒,也完全可以写个简单程序生成实体类)就能够获得非常方便的持久化支持。为了改善程序的执行效率,程序中甚至完全避免了使用可能会影响执行效率的反射,并且充分在可能的地方充分运用了Cache模式以避免不必要的性能损失。阅读全文
posted @ 2005-12-30 22:42 Teddy's Knowledge Base 阅读(14502) | 评论 (56) 编辑
摘要:

在本人之前的《Component/Service Oriented Software System Development Thinking 》一文中,我将包括BinaryLevel和Source Code Level的软件模块统称为Component。这种分类方式,和传统的对Component的一般定义应该说并不是十分一致。本文就是要对我为什么要这样分类作一些补充解释。阅读全文
posted @ 2005-11-24 16:19 Teddy's Knowledge Base 阅读(1877) | 评论 (4) 编辑
摘要:

本文是Teddy关于基于组件及服务为中心的软件系统开发的进一步思考的系列文章的第一篇,探讨Teddy对当前的基于组件及服务的软件系统开发现状及基本思想的理解。本系列文章一共三篇,在之后两篇中Teddy将站在“组件”这样一个点上分别Looking into组件和Looking outside“组件”这个点,从而分别思考对第一篇中描述的软件开发模型的改进的可能方案。Teddy并非软件开发方面的资深专家,而只是一位喜欢思考的普通程序员,对软件开发这样一门科学的认识难免是具有非常的局限性的,因此,本文的观点仅代表Teddy的个人见解,如果您认为文中的观点过于奇特或幼稚,或者有失偏颇的,欢迎给与批评指教。阅读全文
posted @ 2005-11-23 17:10 Teddy's Knowledge Base 阅读(1916) | 评论 (1) 编辑
摘要:

前面谈到SOA,思维可能确实有点发散,但是,我还是坚持这样一种更高抽象层次的Service Oriented设计思想绝对是有益的。当然这个有待实践检验。另一方面,本人正在规划中的一个SOAHelper开源框架将会为基于通用的SOA思想的开发提供一些便利,当然,这里提到的SOA都不是业界对SOA严格的标准定义。而是更高层次的抽象,不过,对于严格的SOA,同样是有益的,不,应该是主要的服务对象。这个就是后话了,这里随便提一下。回到正题,本文是重新诠释SOA & AOP的下篇,即重新诠释AOP。大家放心,本篇不会像SOA那样发散,以至于什么都是AOP,毕竟AOP还是以OO为基础的抽象思想的扩展,这里谈论的主题还是在于AOP的意义及怎样的AOP实现方式是AOP未来的发展趋势,尤其会阐述一种所谓容器式的二进制/IL级别基于AOP的拦截机制。阅读全文
posted @ 2005-11-21 17:49 Teddy's Knowledge Base 阅读(5506) | 评论 (12) 编辑
摘要:

虽然写了不少AOP的文章了,也没少关注SOA,不过最近才发现自己以前的认识多少有些狭隘,不,应该说非常狭隘才是。在这里,我要结合自己最近的感悟,重新诠释一下什么是SOA,什么是AOP。本文原出处为我的MSN SPACE,原文标题是重新阐述SOA和AOP,因为实在写得太长了点,这里分成两篇来写,这是第一篇:重新阐述SOA。之后还会有下一篇,重新阐述AOP,敬请期待!阅读全文
posted @ 2005-11-21 13:42 Teddy's Knowledge Base 阅读(3798) | 评论 (14) 编辑