今天看了个社区,了解了一下该产品的架构设计,作一下分享。node
内容来源:http://www.jinhusns.com/Document/FrameworkDocument/?type=cc数据库
1、 架构使用说明 > 引言 > 缓存
l 全部菜单用[…]->[…]表示,例如[设置]->[外观]表示菜单“设置”的子级菜单项“外观”。架构
l 全部按钮或超连接用“…”表示,如“肯定”按钮。mvc
l 注意事项用“注意:…” 表示,给出一些容易忽略的可是在某个地方比较重要的因素,例如:asp.net
注意:ide
1.TabPanel的TargetID属性须要关联到某个<div>的id; ui
2.TabPanel的HeaderText属性指定标签页的头部文字; spa
3.能够设置TabPanel的Href属性,使Tab页的内容从另外一个页面获取;.net
l 提示用“提示:”来表示:
提示:
l 警告用“警告:”来表示:
警告:
l 提示事项用“提示:…”表示,用于给出简明短小的建议或窍门。
l 提示事项用“警告:…”表示,用于提醒用户重视程序可能带来的潜在问题、不正确的结果以及要避免的错误。
l 类成员说明示例:
方法名称 |
成员修饰 |
说明 |
备注 |
Insert(TEntity entity) : void |
public virtual |
把实体entity添加到数据库 |
|
l 代码块表示为:
/// <summary>
/// 处理访客计数的任务
/// </summary>
public class UserVisitsTask : TaskBase
{
/// <summary>
/// TaskBase方法
/// </summary>
public override void ExecuteTask(XElement node)
{
UserVisits.SaveQueue();
}
……
}
2、 架构使用说明 > 总体说明 >
图表1分层设计说明
层 |
职责 |
说明 |
表现层 |
负责向用户显示信息和处理用户指令。(这里的用户也多是其余计算机系统,不必定是使用用户界面的人) |
可能包括asp.net mvc、winform、移动客户端程序 |
应用层 |
定义软件要完成的任务,而且指挥领域层来解决问题。应用层要尽可能简单,不包含业务规则或者知识,而只为领域层协调任务,分配工做,使它们互相协做。 |
通常包括Web Service、WCF、REST。 在咱们目前的架构中应用层占的比重很是小,一般能够忽略。 |
领域层 |
负责表达业务概念,业务状态信息以及业务规则。尽管具体存取业务状态技术细节由基础设施层实现的,可是反映业务状况的状态是由本层控制和使用的。 |
领域层是业务软件的核心,通常包括:实体、值对象、领域层Service。 |
基础设施层 |
为以上各层提供通用的技术能力:为应用层传递消息,为领域层提供持久化机制,为用户界面提供呈现控件等。 |
|
1) 基础设施层对应于Tunynet.Platform中的Infrastructure、MvcExtensions;
2) 领域层主要存在于Tunynet.Platform中的BusinessComponents、E2的Enterprise以及各应用模块项目中;
3) 应用层不多用到,若是有则存在于Tunynet.Platform中的BusinessComponents、E2的Enterprise及Common、Spacebuilder的Common、各应用模块项目;
4) 表现层对应于E2的Common、Spacebuilder的Common、各应用模块项目;
1) 在BusinessComponents等项目中因为业务构件众多,而每一个构件的文件数并很少,建议以构件名称来做为目录组织,例如:Tag、PrivateMessage;
2) 在各应用模块项目中建议采用类的类型来做为目录组织,例如:Models、Repositories、Services;
1) Repository命名::=实体名称+Repository
2) Service命名::=实体名称+Service
3、架构使用说明 > 运行环境 > 使用说明 >
4、 架构使用说明 > 数据访问 > 使用说明 >
类图
功能介绍
IEntity:Entity接口,全部实体都应该实现该接口;
IRepository<TEntity>:用于处理Entity持久化操做;
PagingDataSet:用于分页数据封装;
PagingEntityIdCollection:封装用于分页的实体Id;
Repository<TEntity>:数据仓储实现类,全部自定义数据仓储类都今后类派生;
经常使用方法介绍
Repository<TEntity>:
方法名称 |
成员修饰 |
说明 |
备注 |
Insert(TEntity entity) : void |
Public virtual |
把实体entity添加到数据库 |
|
Update(TEntity entity) : void |
public virtual |
把实体entiy更新到数据库 |
|
Delete(TEntity entity) : int |
public virtual |
从数据库删除实体 |
|
DeleteByEntityId(object entityId) : int |
public virtual |
从数据库删除实体(by 主键) |
|
Exists(object entityId) : bool |
public virtual |
依据主键检查实体是否存在于数据库 |
|
Get(object entityId) : TEntity |
public virtual |
依据主键获取单个实体 |
|
GetAll() : IEnumerable<IEntity> |
public virtual |
获取全部实体(仅用于数据量少的状况) |
自动对进行缓存(缓存策略与实体配置的缓存策略相同) |
GetAll(string orderBy) : IEnumerable<IEntity> |
public virtual |
获取全部实体(仅用于数据量少的状况) 可设置排序字段(多个排序字段用逗号分隔) |
自动对进行缓存(缓存策略与实体配置的缓存策略相同) |