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

内容来源: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. Android APK是否需要预解压

    今天在逛论坛的时候,发现有一个朋友问的问题.其主要目的,是想实现 玩家首次进入游戏的时候,或者新安装了版本的时候,对APK进行解压,写入SD卡.这样游戏运行过程中,将不会再从APK中读取资源. 以提高 ...

  2. 【VC++技术杂谈002】打印技术之获取及设置系统默认打印机

    本文主要介绍如何获取以及设置系统的默认打印机. 1.获取系统中的所有打印机 获取系统中的所有打印机可以使用EnumPrinters()函数,该函数可以枚举全部的本地.网络打印机信息.其函数原型为: B ...

  3. linux split 及优化

    split 虽然不好用, 但是还是可以用一下的! 有两个方式拆分, 按固定的行数, 按固定的大小. 默认是 1000 行, 后缀长度为2, 后缀长度N是说, 分片从N个字母/数字 的最小值 到 其最大 ...

  4. Atitti  onvif 设备发现与原理

    Atitti  onvif 设备发现与原理 1.1. ,有以下几个步骤:1 1.2. 设备搜索原理及编程技巧:2 1.3. Ws disconvert 的组播地址和端口就是37022 1)发现ipca ...

  5. MacOS中使用QT开发iOS应用

    因为项目合同中规定一部分业务内容要在手机端实现,包括安卓机和苹果机,因此选择了QT作为开发工具.程序在Win10和安卓系统上已经完美运行,这几天开始搭建iOS的编译和发布环境,因为以前没有使用过mac ...

  6. C#设计模式系列:简单工厂模式(Simple Factory)

    1. 简单工厂模式简介 1.1 定义 简单工厂模式定义一个Factory类,可以根据参数的不同返回不同类的实例,被创建的实例通常有共同的父类. 简单工厂模式只需要一个Factory类. 简单工厂模式又 ...

  7. Android总结之json解析(FastJson Gson 对比)

    前言: 最近为了统一项目中使用的框架,发现项目中用到了两种json解析框架,他们就是当今非常主流的json解析框架:google的Gson 和阿里巴巴的FastJson,为了废除其中一个所以来个性能和 ...

  8. Markdown编辑器入门

    欢迎使用博客园的Markdown编辑器 前言 今天早上起来在Ubuntu下操作,所以不能使用Windows Live Writer.所以就直接使用博客园的后台编辑器,开始以为博客园出错了,怎么编辑都没 ...

  9. wireshark常用的过滤器设置

     过滤源ip.目的ip.在wireshark的过滤规则框Filter中输入过滤条件.如查找目的地址为192.168.101.8的包,ip.dst==192.168.101.8:查找源地址为ip.src ...

  10. 45 个非常有用的 Oracle 查询语句

    ​ 这里我们介绍的是 40+ 个非常有用的 Oracle 查询语句,主要涵盖了日期操作,获取服务器信息,获取执行状态,计算数据库大小等等方面的查询.这些是所有 Oracle 开发者都必备的技能,所以快 ...