asp.net 设计模式文摘

1 目录

第1部分

模式与设计原则

第2部分

剖析 asp.net应用程序,学习并应用模式

 第3部分

案例研究

2.反模式智能UI

反模式:智能UI

sql server SQLEXPRESS  版本

1. 建立 Shop.mdf

2. html

3. cs代码

 该页面负责业务逻辑,数据访问.

3.数据访问层

应用程序分层与关注点分离

企业级分层设计的asp.net应用程序的典型体系结构

1.  用户体验

2. 表示

3. 应用程序服务

4. 领域模型、领域服务

5. 基础设施、资源库     ------------------>数据库

数据访问层

1. Linq to sql

2. 在业务层中创建 IProductRepository 接口

3.创建 ProductRepository 类实现 IProductRepository

在FindAll方法中,查询Linq to sql 获取所有的商品,然后创建业务实体 Product 列表并返回

4. 业务层

1. 应用程序的业务逻辑

建立折扣策略

建立价格类,依赖注入IDiscountStrategy

建立product 类

折扣工厂类:

集合扩展类:

服务类:

 5. 服务层

客户端与服务端交互,采用request/response 模式

将product 实体转化成ProductViewModel

添加Productservice 与领域模型交互

 6. 表示层

表示逻辑和用户体验分离,MVP模式

可以加任何形式的用户体验,wpf , winform ,web等

 7 .用户体验层

创建IProductRepository 接口的一个具体实现

structureMap Ioc容器

html

8.事务脚本模式

Transaction Script

过程式开发风格,为每个业务事务创建一个单独的方法,并将他们组合起来放入某种静态管理程序或服务类

适合小型应用程序

9.Active Record

适合在数据模型和业务模型之间具有一对一映射关系的简单应用程序,如博客,论坛

asp.net mvc + castle +nhibernate

1.创建 Blog.mdf

2.Model

3. Controller
4. view
5 Global.asax
6. web.config

10. Domain Model

业务实体并不知道如何持久化,没有必要在数据模型和业务模型之间简历一对一的映射关系,采用Repository负责数据持久化

实体: 需要标识符的事物

值对象:没有标识,不会单独存在,通常是实体的属性。

Transaction,只存在于与之相关的银行帐号实体中,在其上下文中并不单独存在.

领域服务:

有些动作没有很好的映射到领域实体的方法,那些没有真正位于单个实体中或者需要访问资源库的方法都被放到领域服务中

1. Model

事物+行为
2. Repository

3. Services

ViewModel: 提供了领域模型用于表示的展开视图

Messages + ViewModels

应用程序服务:并不包含业务逻辑

4. UI

11.用户体验层

理解ajax模式

异步javascrip和xml,一种从浏览器到服务器简历异步客户端回调的编程方式

底层采用的是XMLHttpRequest对象

javascript库:

script.aculo.us , dojo toolkit , google web toolkit , ajax javascript ,jquery

1.Periodic Refresh (定时刷新)和 TimeOut 超时

2.利用 javascript Template 实现数据绑定

Unique URL

window.location.hash = newStateInformation;

jTemplates

jquery + asp.net mvc + Repository

AjaxTemplates.UI.Web

AjaxTemplates.Controllers

AjaxTemplates.Model

AjaxTemplates.StubRepository

3.Predictive Fetch(预先获取)

可预测用户最可能马上需要用到的信息并在用户需要使用之前异步获取该信息

12.表示层

1.反转控制

service locator - 详见 Professional Enterprise.Net

ioc容器:

caltle windsor,

spring.net

ninject,

picicontainer.net

unity

structureMap   <举例参见作者另一博文>

2.MVP模式

视图控制整个表示层的逻辑流

模型-视图-呈现器

MVP.StubRepository

MVP.Model

MVP.Presentation

MVP.UI.Web

web表单进行asp.net 开发,采用MVP模式  <举例参见作者另一博文>

3.Front Controler模式 

MVC模式的核心

控制器与视图完全分离

FrontController.StubRepository

.FrontController.Model

FrontController.Controller

FrontController.UI.Web

命令模式实现

职责链模式实现

4.MVC  <举例参见作者另一博文>

控制器处理所有用户交互的请求的最初联络点

asp.net mvc框架

viewmodel  --------- 领域实体到ViewModel的映射

利用 autoMapper 映射 viewmodel  实现领域模型到视图模型的映射

5. castle MonoRail

 视图是index.vm格式

6. Page Controller模式

web表单模式

13.数据访问层

1.数据访问策略

Repository模式 适合于Domain Model

Data Access Objects模式(DAO模式)  数据库中的每张表创建一个DAO类 比较适合于Transation Script 和Active Record

2.数据访问模式

Unit of Work 模式  能够保持数据完整性

标记接口模式,这个接口充当类和方法的元数据

数据并发控制: 

乐观 : 最晚修改生效

悲观 : 1.检索出记录后锁定数据表 2.版本号比较

Lazy Loading 和 Proxy 模式

资源加载工作推迟到真正需要的时候

Identity Map 模式 

标识映射

为事务中使用的所有业务对象均保存一个版本, 类似于服务端缓存

Query Object 模式 

查询对象,表示采用领域语言编写的查询

与Linq相似

3. 使用对象关系映射器(ORM)

Nhibernate

MS Entity Framework

Linq to sql

14.服务层

1 SOA  :

面向服务体系结构是指一组松散集成服务的设计原则和实践,通常针对分布式应用程序

4项原则:

1.边界明确

2.服务自治

3.服务共享数据模式和契约而不是类

4.基于策略确定服务兼容性

2.Messaging模式

1. Document Message 和 Request-Reponse模式

Customer[] FindBy(CustomerSearchRequest request);

public class CustomerSearchRequest

{

     public string Country { get; set;}

     public string PostalCode { get; set;}

     public string Street { get; set;}

}

2. Reservation 模式

预定模式:带一个过期日期

3. Idempotent 模式 (幂等)

指定一个唯一标识号码

3. WCF

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值