sns社区架构设计案例分享
今天看了个社区,了解了一下该产品的架构设计,做一下分享。
内容来源:http://www.jinhusns.com/Document/FrameworkDocument/?type=cc
一、 架构使用说明 > 引言 >
l 所有菜单用[…]->[…]表示,例如[设置]->[外观]表示菜单“设置”的子级菜单项“外观”。
l 所有按钮或超链接用“…”表示,如“确定”按钮。
l 注意事项用“注意:…” 表示,给出一些容易忽略的但是在某个地方比较重要的因素,例如:
注意:
1.TabPanel的TargetID属性需要关联到某个<div>的id;
2.TabPanel的HeaderText属性指定标签页的头部文字;
3.可以设置TabPanel的Href属性,使Tab页的内容从另一个页面获取;
l 提示用“提示:”来表示:
提示:
- 1. 提示信息提示信息提示信息提示信息提示信息提示信息提示信息提示信息提示信息提示信息;
- 2. 提示信息提示信息提示信息提示信息提示信息提示信息提示信息提示信息提示信息提示信息;
l 警告用“警告:”来表示:
警告:
- 1. 警告信息警告信息警告信息警告信息警告信息警告信息警告信息警告信息;
- 2. 警告信息警告信息警告信息警告信息警告信息警告信息警告信息警告信息警告信息;
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();
}
……
}
二、 架构使用说明 > 整体说明 >
图表1分层设计说明
- 1. 各层职责:
层 |
职责 |
说明 |
表现层 |
负责向用户显示信息和处理用户指令。(这里的用户也可能是其他计算机系统,不一定是使用用户界面的人) |
可能包括asp.net mvc、winform、移动客户端程序 |
应用层 |
定义软件要完成的任务,并且指挥领域层来解决问题。应用层要尽量简单,不包含业务规则或者知识,而只为领域层协调任务,分配工作,使它们互相协作。 |
一般包括Web Service、WCF、REST。 在我们目前的架构中应用层占的比重非常小,通常可以忽略。 |
领域层 |
负责表达业务概念,业务状态信息以及业务规则。尽管具体存取业务状态技术细节由基础设施层实现的,但是反映业务情况的状态是由本层控制和使用的。 |
领域层是业务软件的核心,一般包括:实体、值对象、领域层Service。 |
基础设施层 |
为以上各层提供通用的技术能力:为应用层传递消息,为领域层提供持久化机制,为用户界面提供呈现控件等。 |
- 2. 从上向下,层中元素仅依赖本层或其下层的元素,而不能依赖上层。
- 3. 各层在产品中的对应:
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、各应用模块项目;
- 4. 项目内的目录组织
1) 在BusinessComponents等项目中由于业务构件众多,而每个构件的文件数并不多,建议以构件名称来作为目录组织,例如:Tag、PrivateMessage;
2) 在各应用模块项目中建议采用类的类型来作为目录组织,例如:Models、Repositories、Services;
- 5. 命名约定:
1) Repository命名::=实体名称+Repository
2) Service命名::=实体名称+Service
三、架构使用说明 > 运行环境 > 使用说明 >
四、 架构使用说明 > 数据访问 > 使用说明 >
类图
功能介绍
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 |
获取所有实体(仅用于数据量少的情况) 可设置排序字段(多个排序字段用逗号分隔) |
自动对进行缓存(缓存策略与实体配置的缓存策略相同) |
sns社区架构设计案例分享的更多相关文章
- sns社区架构设计案例分享(二)
源码下载地址:http://www.jinhusns.com/Products/Download/?type=xcj 五. 架构使用说明 > 缓存 > 使用说明 > (一)基础类库介 ...
- web架构设计经验分享(转)
本人作为一位web工程师,着眼最多之处莫过于 性能与架构,本次幸得参与sd2.0大会,得以与同行广泛交流,于此二方面,有些心得,不敢独享,与众博友分享,本文是这次参会与众同撩交流的心得,有兴趣者可以查 ...
- 一套海量在线用户的移动端IM架构设计实践分享(含详细图文)(转)
1.写在前面 1.1.引言 如果在没有太多经验可借鉴的情况下,要设计一套完整可用的移动端IM架构,难度是相当大的.原因在于,IM系统(尤其是移动端IM系统)是多种技术和领域知识的横向应用综合体:网络编 ...
- SOA架构设计经验分享—架构、职责、数据一致性
阅读目录: 1.背景介绍 2.SOA的架构层次 2.1.应用服务(原子服务) 2.2.组合服务 2.3.业务服务(编排服务) 3.SOA化的重构 3.1.保留服务空间,为了将来服务的组合 4.运用DD ...
- [转]SOA架构设计经验分享—架构、职责、数据一致性
阅读目录: 1.背景介绍 2.SOA的架构层次 2.1.应用服务(原子服务) 2.2.组合服务 2.3.业务服务(编排服务) 3.SOA化的重构 3.1.保留服务空间,为了将来服务的组合 4.运用DD ...
- 【转】SOA架构设计经验分享—架构、职责、数据一致性
1.背景介绍 最近一段时间都在做系统分析和设计工作,面对的业务是典型的重量级企业应用方向.突然发现很多以往觉得很简单的问题变得没有想象的那么容易,最大的问题就 是职责如何分配.论系统架 ...
- 新年春节EDM邮件内容设计案例分享
春节自古以来都是中国最重要的节日.随着中国的发展,中国的春节在世界上都已受到越来越多人的关注,有许多国家和地区都将春节定为法定假日.与此同时,许多品牌营销商也选择在这个时候为中国客户发送马年新年邮件, ...
- SOA架构设计案例分析
转载自:https://www.jdon.com/soa.html 首先Martin Fowler提出SOA歧义Service Oriented Ambiguity,认为"什么是SOA&qu ...
- EDM设计案例分享:6款引人入胜的夏日邮件营销模板分享
夏日酷暑,清凉如风.在这个假期,旅游行业.酒店.服饰等都推出不少的假期活动,吸引游者的到来.假日期间,让我们看看一些旅游业.品牌服装店和酒店是怎么做好电子邮件广告的.在此,Focussend精心为大家 ...
随机推荐
- Python黑帽编程2.2 数值类型
Python黑帽编程2.2 数值类型 数值类型,说白了就是处理各种各样的数字,Python中的数值类型包括整型.长整型.布尔.双精度浮点.十进制浮点和复数,这些类型在很多方面与传统的C类型有很大的区 ...
- Linq操作非泛型集合
我们都知道,Linq能查询泛型集合,确切的说是:LINQ能实现查询泛型对象或者实现了IEnumerable.但是,很遗憾的是诸如ArrayList这样的非泛型集合并没有实现IEnumerable.那咋 ...
- C#之委托与事件
委托与事件 废话一堆:网上关于委托.事件的文章有很多,一千个哈姆雷特就有一千个莎士比亚,以下内容均是本人个人见解. 1. 委托 1.1 委托的使用 这一小章来学习一下怎么简单的使用委托,了解一些基本的 ...
- jQuery AJAX 网页无刷新上传示例
新年礼,提供简单.易套用的 jQuery AJAX 上传示例及代码下载.后台对文件的上传及检查,以 C#/.NET Handler 处理 (可视需要改写成 Java 或 PHP). 有时做一个网站项目 ...
- linux java so 历险
一开始 -bash-4.1# java -cp "/usr/linkapp/bin/tomcat-master/webapps/ROOT/WEB-INF/lib/*":" ...
- 【PRINCE2是什么】PRINCE2认证之七大原则(3)
我们先来回顾一下,PRINCE2七大原则分别是持续的业务验证,经验学习,角色与责任,按阶段管理,例外管理,关注产品,剪裁. 第三个原则:明确定义的角色和职责. 项目离不开人员,错误的人来了,合适的人没 ...
- salesforce 零基础学习(五十二)Trigger使用篇(二)
第十七篇的Trigger用法为通过Handler方式实现Trigger的封装,此种好处是一个Handler对应一个sObject,使本该在Trigger中写的代码分到Handler中,代码更加清晰. ...
- MyEclipse中屏蔽js检验
方法一: 右键工程-->properties-->Myeclipse-->validation-->Excluded Resource,勾选需要取消验证的文件或者文件夹就可以了 ...
- SQLServer比较两条数据是否相同
SQLServer比较两条数据是否相同 直接比较可能会一个一个字段的比较,也可以将多个字段拼成一个串然后比较,这里有个hash值比较的方法,很好用 用法 将需要的比较的column放进去,逗号隔开,只 ...
- "org.eclipse.wst.validation" has been removed 导入maven 项目出错。
在谷歌中找到解决方案: 右键关闭项目,在打开,将项目刷新,选中项目右键----->Maven4myeclipse------->Update maven project 错误消失. 若还有 ...