随笔分类 - 其它 / 系统架构
摘要:在很多教科书中都这样定义“接口”,接口用来定义一种操作的规范,它的命名为I开头,内部元素均为public,接口中的方法与属性只能定义声明,不能实现,它们只能通过子类去实现,这些东西不是我今天要说的重点,我今天要说的接口主要从它为了实现“操作的统一”去说明。 在Repository模块中,一般将数据层的“增,删,改,查”进行统一的封装,然后调用时,统一来自一个地方,这样可以大大降低维护的成本。在操...
阅读全文
摘要:回到目录EF的Code First开始模式时,在设计Data层与Data First模式稍微有些不同,它主要有数据库类,数据库操作基类,数据通用操作接口和数据通过操作实现组成,每个类有自己的用途,先看一下最简单的结构:DataContext是EF的数据库对象类型,它里面的代码构架了我们的数据表对象 public class DataContext : DbContext, IDataContext { #region Properties /// <summary> /// 得ì?到ì?UserBase结¨¢果?集?¥ /// </...
阅读全文
摘要:儿子今天玩的有点晚了,所以今天的文章写的也有点晚了,呵呵! 从标题上可以知道,今天主要来讲继承,事实上是“继承”在项目架构中有没有用,如果有用,那应该如何去用的问题,一说到继承就肯定会说两个东西,基类(父类)和派生类(子类),在架构中,我们这样定义一个基类:当很多类型有相同的属性或相似的行为时,我们应该把它们的公共部分提取到一个新的类型中,这个类我们称为它们的基类,基类在架构中多为抽象类,即本身...
阅读全文
摘要:我们人类在做事之前喜欢先把它的整体结构设想一下,就像盖一座大厦,可能会想用砖盖,还是用最新的环保隔声材料盖,里面的格局是采用中式的还是欧式的,彩色主色采用什么等等,这些相关的数据都需要提前规定好,事实上项目架构也是这样,在开发项目之前,重要我们知道以下几点: 第一 项目整体的需求及根据需求规定开发周期和人员配置 第二 其实就是对这个项目在架构方式上进行选择(可能采用b/s结构,也可能采用...
阅读全文
摘要:我也来凑凑热闹,写几篇和架构有关的文章供大学参考吧,呵呵。代码均于本人自己编写,所以有语言不家当和不正确的地方,希望各位指正。 第一章 什么是项目架构 第二章 代码是否面向对象,要看你的继承怎么用 第三章 接口用来制定操作的统一性 第四章 抽象类展现代码的层次感 第五章 依赖住入在这个时候出场了 第六章 .NET原生态的ORM软件对比 第七章 项目的架构层次体现了项目以后的复用性和...
阅读全文
摘要:回到目录我架构的以lucene为技术的全文检索分为lucene检索模块,索引文件生成器和WEB检索测试三个部分组成结构如下:lucene模块它由通过检索项和几个具体检索业务子项目组成通过功能项目结构为:其中的一个子项目结构为子项目只负责自己业务的实现,createIndexFile这个类型主要实现的...
阅读全文
摘要:首先,建立一个windows服务项目然后进行设计视图在工作区空白处右属,添加一个安装项目然后就可以写我们的代码了,我们的服务需要实时监视MSMQ的队列中有没有记录,如果有,就向数据库中插入核心代码如下/// <summary>/// 接收来自MSMQ的消息,并保存到数据库/// </summary>public class MessageQueueService{ public static bool blnStopThread; public static string exTemp = string.Empty; public MessageQueueService
阅读全文
摘要:只是看结构,没有分项目做,只是这例子,呵呵 项目总体图 Data层统一数据返回接口 Entity层,统一枚举值管理 Entity层实体统一继承IEntity,并派生一个第三方类型,用户查询时返回实体类型 Service层提取出抽象基类,它由公用属性及方法组成 Service层个性业务实现,它继承个性业务接口和业务基类 UI层直接调用Service的接口对象即可,根据不同的业...
阅读全文
摘要:今天主要想说一个MVC+LinqTOSql的系统架构中哪些东西可以,也应该进行抽象.MVC的WEB层应该进行抽象的是:统一的Controller,将其它controller公有的属性和方法进行一个抽象,方便以后扩展和维护.代码可能是这样: /// <summary> /// Controller基类 /// </summary> public abstract class ControllerBase : Controller { /// <summary> /// 通用信息(一般由service层返回的) /// </summary> prot
阅读全文
摘要:回到目录我们挂在嘴过的一句话就是“static是静态对象,在类第一次被使用,或者第一次被实例化时执行“,但是你是否真正理解这句话,或者说你是否有对这句话进行一个实际的验证,如果没有,那我来带您完成这次旅行吧!首先有一张表,不会经常发生变化,比如分类表,他是一种树型结构表,结构可能是这样 1 /// <summary> 2 /// 分类表 3 /// </summary> 4 public partial class Common_Category : IDataEntity 5 { 6 //初始字段 7 #regi...
阅读全文
摘要:本版本延续MVC中的统一验证机制~续的这篇文章,本篇主要是对验证基类的扩展和改善 1 namespace Web.Mvc.Extensions 2 { 3 4 #region 验证基类 5 /// <summary> 6 /// 通用验证基类 7 /// </summary> 8 public abstract class EntityValidationAttribute : ValidationAttribute 9 { 10 #region Constructors 11 public E...
阅读全文
摘要:前段时间我发表的关于MVC架构中对验证方式的设计,收到了不少朋友的留言,意思是说过于复杂,复用性不高,当然我的出发点是减少实体部门的代码量。最近在朋友的建议下,看了另一种验证方式,事实上就是MVC实例中提供的实体属性验证方式,为每个视图加一个视图模型,对视图模型中的属性进行特性的约束即可。具体如下:WEB UI可能是这样<%using (Html.BeginForm()) { %> <%=Html.LabelFor(model=>model.Name) %> <%=Html.TextBoxFor(model=>model.Name) %> <
阅读全文
摘要:首先如果您使用linq to sql的底层数据支持,那这篇文章比较适合您,这也是一个系列,本文主要说添加操作 WEB层 实现对象创建 Service层 实现逻辑处理与业务组合 DAL层 实现操作最基础功能的插入 到这里,一个完整的记录插入流程就走完了,呵呵
阅读全文
摘要:项目为何要设计成N层架构?为何会有WEB,BLL和DAL,这些东西我们今天姑且不说,单说为什么要把BLL层进行抽象。 在之前我的博客中有一篇对WEB层的Controller进行了抽象,实现上对BLL层也可以进行一个必要的抽象,将大部分公用 的属性和方法进行抽象,提取到一个新的抽象类中,让其它BLL的业务逻辑类型去继承它,享用它内部公用的属性和方法 ,这在以后维护和扩展及程序稳定性上都非常重要...
阅读全文
摘要:呵呵,一个有趣的话题,事务(不是TSQL中的事务,只是指 System.Transactions下的TransactionScope类型)底道应该放在哪个层? 可以说,这个话题看你怎么看了: 如果同意在BLL层的,理由是:事务主要用来处理复杂逻辑,而复杂逻辑操作多表时需要用到事务,所以事务放在BLL层用来实现“逻辑组合”。而DAL层只负责最基础的数据操作,不管业务逻辑。 如果同意在DAL层的,理由...
阅读全文
摘要:/// <summary> /// 业务层抽象基类 /// </summary> public abstract class ServiceBase { /// <summary> /// 通用消息 /// </summary> protected...
阅读全文
摘要:/// <summary> /// 数据操作基类 /// </summary> public abstract class TESTRepositoryBase { /// <summary> /// 数据库基类 /// </summary> protected Entity.TEST.LinqTESTDataContext db = (Entity.TEST.LinqTESTDataContext)DbFactory.Intance("TEST", System.Threading.Thread.CurrentThread)
阅读全文
摘要:前几天看了老赵的Translate方式解决多表关联后产生实体类型问题,但多数据量时还是不太妥当,所以最后还是用老的方法,建立一个实体类来解决这个问题 首先我让实体类和LINQ表类型名称一样,只是加了个后缀用来区分,并让它去继承LINQ表对象,这样它将有表对象的所有非私有的属性和方法。 如图: IEntity是个接口,只要继承它,就必须实现它的一个PrimaryKey这个属性,它用来统一表对象的主...
阅读全文
摘要:今天只说说命名标准,这对象的命名可大有说头,有很多标准,今天我只说我们项目里的标准接口:interface IRepository{} 首字母为大写i,其它所有单词首字母大写类:class PeopleOperator{} 所有单词首字母大写枚举:enum PeopleStatus{} 所有单词首字母大写结构:struct ImageSize{} 所有单词首字母大写属性:public string Name{get;set;} 所有单词首字母大写方法:public string DisplayName() 所有单词首字母大写方法参数:public string DisplayName(stri
阅读全文
摘要:在业务逻辑层实现IOC,可以有效的减少代码量,把通用的操作写在通用的类中,然后在UI层对谁操作就建立谁的实例。具体做法看代码:Service层核心代码:接口规范:namespace Service{ /// <summary> /// 标准逻辑处理接口 /// </summary> /// <typeparam name="TEntity"></typeparam> public interface IServices<TEntity> where TEntity : class,Entity.IDataEntit
阅读全文