程序员的自我救赎---1.1: 解决方案命分层规范

《目录》

《Winner2.0框架解决方案命分层规范》

初学编程,难免要从Hello Word开始,学习Winner框架首先要知道如何建一个项目。有了第一个项目的框架结构就知道如何施展自己的"增删查改"。

Winner框架 依然遵从MVC模式,这里我就不去赘述什么是MVC。

数据层:以"项目名.DataAcces"命名,例如:  Shop.DataAccess;

实体层:以"项目名.Entities" 命名    例如: Shop.Entities;

业务层:以“项目名.Facade”命名   例如:Shop.Facade;

显示层:以“项目名称” 命名  例如: Shop;

=======================华丽的分割线====================

winner 框架的核心库有 三个:

Winner.Framework.Core       (核心类dll)

Winner.Framework.Encrypt   (加密类dll)

Winner.Framework.Utils         (工具类dll)

整个Winner框架就以此三个为核心,开展工作。无论是哪一层都需要引用这三个程序集。

=======================华丽的分割线====================

数据库命名:

1.基础规范:
1.由于Oracle做大小写命名非常麻烦,所有统一采用PLSQL规范为大写。为了命名的可读性,每个单词与单词之间用下划线(“_”)隔开。

2.每个表、字段、试图都必须加上相关备注;

3.每个表的字段最后必须加上Remarks与Create_Time(默认为sysdate)字段;

4.凡是有字段在程序中为枚举的,则需要在备注中写明枚举名称和枚举值,例如用户状态的备注为:用户状态$UserStatus${未激活=0,已激活=1,已锁定=2}

2.命名规范:
1.表名: T模块_表名 例如:用户模块用户表,Tnet_Reginfo

2.试图: V模块_表名 例如:用户模块用户表,Vnet_Reginfo

3.主键: PK_表名 例如:PK_Tnet_Reginfo

4.外键: FK_表名_字段 例如:FK_Tnet_Reginfo_NodeId

5.唯一键: UK_表名_字段 例如:UK_Tnet_Reginfo_NodeCode

6.检查约束: CK_表名_字段 例如:CK_Tnet_Reginfo_NodeCode、

=======================华丽的分割线====================

DataAccess 数据访问层:

只存放由代码生成器生成的数据访问类,以及我们使用 “部分类” 自己根据需求扩展的数据库操作

这里我们使用 “部分类” 部分类,也叫分部类,这里就不科普C# 语言基础知识了。(关于代码生成器,在下一篇中再详细概述)

如下图:

注意: 由代码生成器生成的 文件名规范为:"表名.generate.cs" 自己扩展的不含“generate”字样以此区分。

代码生成器,会帮我们生成实体 和 数据库操作类,Winner框架将单条操作和 多条操作分成了两个类。

但是这两个类在同一个文件里,数据库操作类是以表为单位建文件。

这是代码生成器生成的带条操作,如果要根据需求扩展操作 着负责该类文件到Generate文件外,并删除文件名中的.generate。

类文件中保留引用,命名空间,类名,删除里面的方法。

XXX_XXXXCollection 类中所有的查询类要求统一以List开头例如:  ListUserByStr();ListUserByAccount();关于继承的DataAccesBase 和 DataAccessCollectionBase 在后面的篇章中会详细讲到。

这里有一条要注意,winner框架是集成了,数据访问类。整个项目只需要通过配置即可访问数据库,不需要再画蛇添足的去写数据库访问类,我们团队曾经有个新入职的员工,不是特别懂框架开发了两天

进度一直没上来,结果他一个人自己闭门造车写数据库访问层,如果这些最基础的工作每个项目都要开发者来重复做一遍就不能称之为框架了。 我们很长一段时间开发中有新的公用类,或者比较常用的工具

我们都会集成到框架里来,整个框架除了 三个 核心dll,扩展的dll 以及第三方的dll加起来有一两百个,比如常见的:NPOI,Newtonsoft,SQLite。这些在TFS中的dll文件夹中都有的,而且一直在更新。

================================华丽的分割线==============================

Entities 实体层:

一般我们Winner框架的代码生成器会自动生成表所对应的实体以及字段在DataAccess中,但是我们实际开发中经常要跨应用对接

比如要跟Android对接、IOS对接,这个时候我们很多情况下要自己 写Model,并根据model 序列化Json。 所以Entities 主要职责是存放model,

除了,存放model实体以外Entities还有另外三项职责,总的来说如下四点:

1,存放实体Model

2,存放枚举对象

3,保存产量,或变量。

4,存放该项目需要的工具对象。

如下图:

上面还有很多,比如根据项目需求写RAS加密工具类,基本上能公用的阿杰都写在了Winner.Framework.Encrypt  和 Winner.Framework.Utils。

这两个对象中,上图的一些工具,是根据项目需求进行了二次封装。

====================================华丽的分割线===============================

Facade 业务层:

业务层用来,处理逻辑业务。一个业务一个类文件,业务类继承FacadeBase,而在Facadebase中集成了如:log4net,事务等功能。

在后面的篇章中会详细介绍Facadebase。

命名规则为: “业务名Facade.cs”

如下图:

我们的业务层,基本只返回bool类型。遵从面对对象的封装思想,就如同ATM机一样。只有一个插卡的“入口”,然后输入“参数“”密码

最后只有一个“出口”,出钱出来。  业务层里面的方法没有特别要求命名规范,遵从驼峰命名法即可。

这里,好多新人加入我们团队的时候就好奇这个事务居然不要在数据库中写,这个在后面的篇章中再详细讲,总而言之我们遵循一个原则:

数据库的职责是做存储数据,我们尽可能不去把业务逻辑放在数据库中去处理。

这里还出现了Alert()方法,这个也是从FacadeBase中继承而来,在调用业务Facade的时候,我们可能直接拿出Facade业务对象返还的Message错误信息。

在后期的项目篇章中这个Alert() 会出现很多。

另外,这里我们也有一个写Facade业务的基础思想“水渠思想”,就像河水变成自来水的过程,要经过多到工序,有一步有问题我们就结束。

所以,我们就一层层的判断。 但不是 用嵌套if去写, 而在if判断为false之后 直接return,为true 就执行下一步。

(好比:“河水过滤失败,不能进行下一步,返回。过滤成功,下一步开始杀毒,杀毒失败返回,杀毒成功,开始氯洗····一直到最后成功”)

中间每一笔以事务管理起来,失败就RollBack(),成功则Commit()。

====================华丽的分隔线=====================

项目 显示层:

最后的显示层,以前我们用的是Asp.Net,我们会有TopPageBase基类 和 CommPageBase,TopPageBase没有验证登录信息,

是给不需要登录的界面继承的,而继承了CommPageBase 的页面则必须要登录。 当然还有相应有很多前端插件,比如分页控件,日历控件等等。

但是现在.net主要都是使用 .net MVC了。 所以我们单独也有一个程序集 Winner.FrameWork.Mvc.dll。

如下图:

自此也Winner框架的解决方案也就描述的差不多,我们前端没有形成自己的一套JS库,更多的还是使用第三方库。常规的JQuery 和 KnockOut

我就不再做描述,这方面我个人也用的不好,在这方面Jason和阿jie 都非常厉害。

遗憾的是Winner框架 没有形成一套Winner前端的后台模板。相对Ace UI模板用的比较多,另外 Amaze UI 也有一些。

阿杰说他有写一套前端,目前在团队内部推广。如果没问题,我也希望Winner有自己的一套前端这样也能省很多事。

不过,我的终极想法是,代码生成器能直接生成前端,这样就更省事了。

好吧,关于解决方案的命名和结构就写到这里。

时间: 2024-11-05 22:41:19

程序员的自我救赎---1.1: 解决方案命分层规范的相关文章

程序员的自我救赎---1.2:代码生成器的使用

<前言> <目录> (一) Winner2.0 框架基础分析 (二) 短信中心 (三)SSO单点登录 (四)PLSQL报表系统 (五)钱包系统 (六)GPU支付中心 (七)权限系统 (八)监控系统 (九)会员中心 (十)消息中心 (十一)Winner前端框架与RPC接口规范讲解 (十二)上层应用案例 (十三)番外篇 <代码生成器的使用> 今天中午阿杰聊了会,阿杰说看了我写的博客后.发现一个问题,把Winner框架整理成文档,要把Winner框架的核心思想 给写出来,比如

程序员的自我救赎---1.4.1: 核心框架讲解(DAL)

<前言> <目录> (一) Winner2.0 框架基础分析 (二) 短信中心 (三)SSO单点登录 (四)PLSQL报表系统 (五)钱包系统 (六)GPU支付中心 (七)权限系统 (八)监控系统 (九)会员中心 (十)消息中心 (十一)Winner前端框架与RPC接口规范讲解 (十二)上层应用案例 (十三)番外篇 <核心框架讲解> 之前在<Winner2.0框架解决方案命分层规范> 有讲到过Winner框架最重要的三个程序集分别是: Winner.Fram

一个程序员的自我救赎

为了找一个能清晰表达我在2017年的状态词语,我搜索了不下百个词语还是未能找到一个贴切的形容,可想我这一年的状态该有多么的糟糕.既然无法汇总,只好通过文字来聚焦我的思绪把这混乱一层一层地剥离.观察和思考. 疲惫的身躯 我细数了一下2017到底有多少可以让我"精神抖擞"的日子,算下来可能也就只有那可怕的10天左右,如果用"智能手环"来表达的话,2017我可能只有10天左右的睡眠质量勉强能达到良好.这是一个往我焦虑感火上加油的数字,我觉得这个数字恰恰应该是一个"

程序员的自我救赎---1.4.2: 核心框架讲解(BLL&amp;Tool)

<前言> <目录> (一) Winner2.0 框架基础分析 (二) 短信中心 (三)SSO单点登录 (四)PLSQL报表系统 (五)钱包系统 (六)GPU支付中心 (七)权限系统 (八)监控系统 (九)会员中心 (十)消息中心 (十一)Winner前端框架与RPC接口规范讲解 (十二)上层应用案例 (十三)番外篇 <核心框架讲解> 之前想用一篇文章讲完核心框架的三四个程序集,后来写着写着就发现一篇文章写不完,这才想了一下用最少要用三篇. 上一篇讲了一下DAL,其实也没

程序员的自我救赎---11.3:WinService服务

<前言> (一) Winner2.0 框架基础分析 (二)PLSQL报表系统 (三)SSO单点登录 (四) 短信中心与消息中心 (五)钱包系统 (六)GPU支付中心 (七)权限系统 (八)监控系统 (九)会员中心 (十) APP版本控制系统 (十一)Winner前端框架与RPC接口规范讲解 (十二)上层应用案例 (十三)总结 <WinService服务> 说道Windows服务基本每个以.net为主要开发语言的技术团队都会用到这个,Winner2.0中对于WinServices也有

程序员的自我救赎---11.4:FileSystem文件服务

<前言> (一) Winner2.0 框架基础分析 (二)PLSQL报表系统 (三)SSO单点登录 (四) 短信中心与消息中心 (五)钱包系统 (六)GPU支付中心 (七)权限系统 (八)监控系统 (九)会员中心 (十) APP版本控制系统 (十一)Winner前端框架与RPC接口规范讲解 (十二)上层应用案例 (十三)总结 <FileSystem文件服务> 前面写了很多Winner2.0的文章,基本我都是以"首先,开始,最后" 这样的格式体去写,今天换种写法从

程序员的自我救赎---3.1:理解Oauth2.0

<前言> (一) Winner2.0 框架基础分析 (二)PLSQL报表系统 (三)SSO单点登录 (四) 短信中心与消息中心 (五)钱包系统 (六)GPU支付中心 (七)权限系统 (八)监控系统 (九)会员中心 (十) APP版本控制系统 (十一)Winner前端框架与RPC接口规范讲解 (十二)上层应用案例 (十三)总结 <理解Oauth2.0> 关于SSO分两个篇章来讲,先讲讲Oauth2.0,之前还特地百度了一下Oauth怎么读,我们每次交流的时候都直接读字母O·A·U·T

程序员的自我救赎---2.1:报表系统项目分析

<前言> <目录> (一) Winner2.0 框架基础分析 (二)PLSQL报表系统 (三)SSO单点登录 (四) 短信中心 (五)钱包系统 (六)GPU支付中心 (七)权限系统 (八)监控系统 (九)会员中心 (十)消息中心 (十一)Winner前端框架与RPC接口规范讲解 (十二)上层应用案例 (十三)番外篇 <报表系统项目分析> “报表系统”顾名思义是用来做报表用的,但是在Winner当中报表系统经常被我们用来当作网页版的PL/SQL来使用. 不用Oralce的

程序员的自我救赎---2.1:短信中心项目分析

<前言> <目录> (一) Winner2.0 框架基础分析 (二)PLSQL报表系统 (三)SSO单点登录 (四) 短信中心 (五)钱包系统 (六)GPU支付中心 (七)权限系统 (八)监控系统 (九)会员中心 (十)消息中心 (十一)Winner前端框架与RPC接口规范讲解 (十二)上层应用案例 (十三)番外篇 <短信中心项目分析> 从本章开始,包括后面的SSO单点登录,钱包系统,GPU支付中心,权限系统,会员中心 都是Jason开发的大作.