今天看了个社区,了解了一下该产品的架构设计,做一下分享。

内容来源: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. 1.         提示信息提示信息提示信息提示信息提示信息提示信息提示信息提示信息提示信息提示信息
  2. 2.         提示信息提示信息提示信息提示信息提示信息提示信息提示信息提示信息提示信息提示信息

l   警告用“警告:”来表示:

警告:

  1. 1.   警告信息警告信息警告信息警告信息警告信息警告信息警告信息警告信息;
  2. 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. 1.         各层职责:

职责

说明

表现层

负责向用户显示信息和处理用户指令。(这里的用户也可能是其他计算机系统,不一定是使用用户界面的人)

可能包括asp.net mvc、winform、移动客户端程序

应用层

定义软件要完成的任务,并且指挥领域层来解决问题。应用层要尽量简单,不包含业务规则或者知识,而只为领域层协调任务,分配工作,使它们互相协作。

一般包括Web Service、WCF、REST。

在我们目前的架构中应用层占的比重非常小,通常可以忽略。

领域层

负责表达业务概念,业务状态信息以及业务规则。尽管具体存取业务状态技术细节由基础设施层实现的,但是反映业务情况的状态是由本层控制和使用的。

领域层是业务软件的核心,一般包括:实体、值对象、领域层Service。

基础设施层

为以上各层提供通用的技术能力:为应用层传递消息,为领域层提供持久化机制,为用户界面提供呈现控件等。

  1. 2.         从上向下,层中元素仅依赖本层或其下层的元素,而不能依赖上层。
  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、各应用模块项目;

  1. 4.         项目内的目录组织

1)         在BusinessComponents等项目中由于业务构件众多,而每个构件的文件数并不多,建议以构件名称来作为目录组织,例如:Tag、PrivateMessage;

2)         在各应用模块项目中建议采用类的类型来作为目录组织,例如:Models、Repositories、Services;

  1. 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社区架构设计案例分享的更多相关文章

  1. sns社区架构设计案例分享(二)

    源码下载地址:http://www.jinhusns.com/Products/Download/?type=xcj 五. 架构使用说明 > 缓存 > 使用说明 > (一)基础类库介 ...

  2. web架构设计经验分享(转)

    本人作为一位web工程师,着眼最多之处莫过于 性能与架构,本次幸得参与sd2.0大会,得以与同行广泛交流,于此二方面,有些心得,不敢独享,与众博友分享,本文是这次参会与众同撩交流的心得,有兴趣者可以查 ...

  3. 一套海量在线用户的移动端IM架构设计实践分享(含详细图文)(转)

    1.写在前面 1.1.引言 如果在没有太多经验可借鉴的情况下,要设计一套完整可用的移动端IM架构,难度是相当大的.原因在于,IM系统(尤其是移动端IM系统)是多种技术和领域知识的横向应用综合体:网络编 ...

  4. SOA架构设计经验分享—架构、职责、数据一致性

    阅读目录: 1.背景介绍 2.SOA的架构层次 2.1.应用服务(原子服务) 2.2.组合服务 2.3.业务服务(编排服务) 3.SOA化的重构 3.1.保留服务空间,为了将来服务的组合 4.运用DD ...

  5. [转]SOA架构设计经验分享—架构、职责、数据一致性

    阅读目录: 1.背景介绍 2.SOA的架构层次 2.1.应用服务(原子服务) 2.2.组合服务 2.3.业务服务(编排服务) 3.SOA化的重构 3.1.保留服务空间,为了将来服务的组合 4.运用DD ...

  6. 【转】SOA架构设计经验分享—架构、职责、数据一致性

      1.背景介绍       最近一段时间都在做系统分析和设计工作,面对的业务是典型的重量级企业应用方向.突然发现很多以往觉得很简单的问题变得没有想象的那么容易,最大的问题就 是职责如何分配.论系统架 ...

  7. 新年春节EDM邮件内容设计案例分享

    春节自古以来都是中国最重要的节日.随着中国的发展,中国的春节在世界上都已受到越来越多人的关注,有许多国家和地区都将春节定为法定假日.与此同时,许多品牌营销商也选择在这个时候为中国客户发送马年新年邮件, ...

  8. SOA架构设计案例分析

    转载自:https://www.jdon.com/soa.html 首先Martin Fowler提出SOA歧义Service Oriented Ambiguity,认为"什么是SOA&qu ...

  9. EDM设计案例分享:6款引人入胜的夏日邮件营销模板分享

    夏日酷暑,清凉如风.在这个假期,旅游行业.酒店.服饰等都推出不少的假期活动,吸引游者的到来.假日期间,让我们看看一些旅游业.品牌服装店和酒店是怎么做好电子邮件广告的.在此,Focussend精心为大家 ...

随机推荐

  1. Expert 诊断优化系列------------------你的CPU高么?

    现在很多用户被数据库的慢的问题所困扰,又苦于花钱请一个专业的DBA成本太高.软件维护人员对数据库的了解又不是那么深入,所以导致问题迟迟不能解决,或只能暂时解决不能得到根治.开发人员解决数据问题基本又是 ...

  2. EventAggregator, EventBus的实现

    系列主题:基于消息的软件架构模型演变 .net中事件模型很优雅的实现了观察者模式,同时被大量的使用在各种框架中.如果我们非要给事件模型挑毛病,我觉得有两点: 实现起来略微繁琐 正如我们上篇文章分析,事 ...

  3. [解惑]JavaScript事件机制

    群里童鞋问到关于事件传播的一个问题:“事件捕获的时候,阻止冒泡,事件到达目标之后,还会冒泡吗?”. 初学 JS 的童鞋经常会有诸多疑问,我在很多 QQ 群也混了好几年了,耳濡目染也也收获了不少,以后会 ...

  4. iOS开发系列—Objective-C之内存管理

    概述 我们知道在程序运行过程中要创建大量的对象,和其他高级语言类似,在ObjC中对象时存储在堆中的,系统并不会自动释放堆中的内存(注意基本类型是由系统自己管理的,放在栈上).如果一个对象创建并使用后没 ...

  5. JSON与XML的区别比较

    1.定义介绍 (1).XML定义扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据.定义数据类型,是一种允许 ...

  6. 台式电脑、笔记本快捷选择Boot(启动项快捷键)大全

    我们在安装系统时,会去设置电脑是从硬盘启动.U盘启动.光驱启动.网卡启动. 一般设置的方法有两种:一种是进BIOS主板菜单设置启动项顺序:另一种就是我在这里要介绍的快捷选择启动项. 以下是网友整理的各 ...

  7. 《Effective Java》—— 读后总结

    这本书在Java开发的行业里,颇有名气.今天总算是粗略的看完了...后面线程部分和序列化部分由于心浮气躁看的不仔细.这个月还剩下一周,慢慢总结消化.

  8. c#设计模式-适配器模式

    一. 适配器(Adapter)模式 适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本接口不匹配而无法在一起工作的两个类能够在一起工作. 名称由来 这很像变压器(Adapter),变压 ...

  9. 【非愚人】重要通知:04-01 贴吧继PHP资源之后又。。。

    贴吧继PHP资源之后又取消了JAVA,IOS等资源的贴,现在专注于Net,C++,Linux,平面设计.主要是为了让广大Net程序员具备全栈全平台牛人的潜力,故而取消那些干扰因素.Net的潜力和活力大 ...

  10. 希尔排序及希尔排序java代码

    原文链接:http://www.orlion.ga/193/ 由上图可看到希尔排序先约定一个间隔(图中是4),然后对0.4.8这个三个位置的数据进行插入排序,然后向右移一位对位置1.5.9进行插入排序 ...