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

内容来源: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. 翻译-使用Ratpack和Spring Boot打造高性能的JVM微服务应用

    这是我为InfoQ翻译的文章,原文地址:Build High Performance JVM Microservices with Ratpack & Spring Boot,InfoQ上的中 ...

  2. iOS---后台运行机制详解

    一.iOS的“伪后台”程序 首先,先了解一下iOS 中所谓的「后台进程」到底是怎么回事吧? Let me be as clear as I can be: the iOS multitasking b ...

  3. KnockoutJS 3.X API 第六章 组件(3) 组件绑定

    组件绑定将指定的组件注入到元素中,并且可选地将参数传递给它. 本节目录 一个例子 API 组件生命周期 备注1:仅限模板组件 备注2:使用没有容器元素的组件 备注3:将标记传递给组件 处置和内存管理 ...

  4. lua解释执行脚本流程

    #include "lua.hpp" #include <iostream> using namespace std; #pragma comment(lib, &qu ...

  5. MVC4做网站后台:栏目管理1、添加栏目-续

    栏目类型跟原来一样分为常规栏目.单页栏目和外部链接.根据栏目类型的不同要隐藏相应的表单和验证(服务器端验证).另外一个是父栏目必须是常规栏目才行,easyui-combotree要用到树形json数据 ...

  6. C++中public、protected及private用法

    转自:http://www.jb51.net/article/54224.htm 初学C++的朋友经常在类中看到public,protected,private以及它们在继承中表示的一些访问范围,很容 ...

  7. 【开源】OSharp框架解说系列(4):架构分层及IoC

    OSharp是什么? OSharp是个快速开发框架,但不是一个大而全的包罗万象的框架,严格的说,OSharp中什么都没有实现.与其他大而全的框架最大的不同点,就是OSharp只做抽象封装,不做实现.依 ...

  8. 应用程序框架实战三十三:表现层及ASP.NET MVC介绍(二)

    最近的更新速度越来越慢,主要是项目上比较忙,封装EasyUi也要花很多时间.不过大家请放心,本系列不会半途夭折,并且代码干货也会持续更新.本文继续介绍表现层和Asp.net Mvc,我将在本篇讨论一些 ...

  9. 近期博客内容的规划(关于Swift语言)

    因为最近事情比较多,有一段时间没有发表博客了.前一段时间,利用空余时间翻译了一本关于Swif的书籍,过一段时间就会出版吧.通过翻译此书,英语水平没提高多少,不过Swift算是系统的学习了一下. 在翻译 ...

  10. 高级javascript---原型和原型继承

    高级javascript---原型和原型继承 在 JavaScript 中,prototype 是函数的一个属性,同时也是由构造函数创建的对象的一个属性. 函数的原型为对象. 它主要在函数用作构造函数 ...