架构是什么?架构就是创新
(三)
作者:长江支流
关 键 字:架构、三层结构、多层架构
日 期:2007-04-12
文章摘要
通过一个实例代码,引出不编译程序,达到升级目的。
正文
前篇说了,架构就是实践,就是总结。这里进一步说明,架构就是创新。
还是先看看前篇说的代码。
public class EntityTest:WebMIS.Data.EntityAccess.DBEntity
{
private int _ID = -1;
private string _Name = "test";
public int ID
{
get{return _ID;}
set{_ID=value;}
}
public string Name
{
get{return _Name;}
set{_Name=value;}
}
public EntityTest():base("TableNameOfEntityTest","ID"){}
public override IList GetFields()
{
return new string[]{"ID","Name"};
}
public override IList GetFieldValues()
{
return new object[]{_ID,_Name};
}
public override IList GetPrimaryKeyValues()
{
return new string[]{"ID"};
}
public override void LoadFrom(System.Data.DataRow entityDataRow)
{
_ID = int.Parse(entityDataRow["ID"].ToString());
_Name = entityDataRow["Name"].ToString();
}
}
public class EntityTestManagement:WebMIS.Data.EntityAccess.EntityAccess
{
public EntityTestManagement(EntityTest entity):base(entity){}
protected override WebMIS.Data.EntityAccess.IExeSql DoReturnDataAccessInstance()
{
return null; //只要实现IExeSql并返回,即可完成跨数据库操作
}
}
在 EntityTest实现IEntityMap接口,为EntityTestManagement提供需要的数据访问信息。如果数据库的结构发生了改变,如何处理?
大家肯定说,数据结构改变了,增加一个字段嘛,然后重新编译一下就OK了。
话是不错啊!有没有好的方法,修改了数据结构,不用修改这里的代理,这样就不用重新编译了,程序升级也灵活。
还有,如果有100个表,是不要要定义100表这个的实现IEntityMap接口的实体呢?怎么样做才能不用编写这样的实体类?
方法是有的,就需要不断的创新。WebMIS B/S快速开发平台就是采用的XML描述,由程序解析执行,所以结构改变,只需要手动或自动更新XML就可以了。WebMIS C/S快速开发平台,基于单据的快速开发管理系统,也是采用配置,然后装这些配置保存到数据库,只需要升级配置文件就可达到升级程序的作用。详细见开源:企业管理信息系统完全DIY,短平快,.NET源码大放送
基于WebMIS.Data.EntityAccess.IEntityMap/IEntityAccess的XML暂时还没有开发,现在一直在忙公司给网通做的奥运项目,等这段时间忙完了,就准备做这个。有兴趣的朋友可以一起参预。
任何一个架构,在一定条件下,可能是好的优秀的架构 , 而在另一个条件和应用中,可能它就是个有很缺陷的架构。不要迷信于别人的架构,它有参考价值,但决不会是一成不变的。
对于数据处理,如果是基于交易系统,即数据总是单条单条的或批量少的处理,以上这个架构模型非常方便,很实用。但是,如果是基于查询系统,即数据批量处理系统,这个模型在数据处理上就不那么优越了。如果有机会,我将在后面讨论大批量数据处理的架构模型。
以上说的这个架构,应用于网通某局一个企业级的客户关系管理中,开发相当快速并且维护方便。在公司的项目中,这个项目至少是在部门的项目中,提前很长时间完成开发任务的一个项目。
总之,架构是实践,架构是总结,架构是创新,只有开发适合自己的应用,即使是没有架构的架构,也是一个好的架构。
本文来源:CSDN上的长江支流Blog:
http://blog.csdn.net/flygoldfish
声明:本文版权为周方勇所有,如需转载,请保留完整的内容及出处。
相关搜索: