`
devgis
  • 浏览: 133547 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

谈.net开发人员应该熟悉的开发模式

 
阅读更多

我们总会有这样一个经验:一个系统最不容易也最不应该变化的部分是领域逻辑,最容易变化也最应该变化的是数据的呈现方式。

在java的各种应用中可以说是到处可见mvc,j2ee贯穿mvc的概念,android的开发方式也是类mvc的,mvc结构对于做过java应用的人而言简直就是司空见惯。而在.net这边,由于之前微软为大家提供的各种winform、asp.net项目典范(比如那个petshop series)将“三层”概念很好的灌输到了.net程序员的大脑中,许多.net开发者凡是做个东西都要搬出自己最拿手的IModel、IDAL这样的神器。

其实mvc与所谓的“三层架构”是两个层次上的东西,前者是一种结构模式,而后者则是分层的角度去说。

一件很奇怪的事情,许多人知道“三层”却不知道mvc,其实这要归结与.net的早期开发技术asp.net和winform这些page controller的典范让许多人对三层夸夸其谈却对mvc视而不见甚至一无所知。什么是page controller模式呢?搞.net的大多都用过winform和webform,这种xxxform用起来很直观,我们想要做一个程序,ok,最简单的方式就是拖拖拽拽几个控件,然后在一个叫code behind的东西里写这些UI事件的处理逻辑,加一大堆变量用于记录数据和状态,这样一个程序就能出炉。这种开发方式对于一些小软件系统的开发其实效率还是蛮高的,后来人们看到其弊端---一旦修改UI,事件处理就要跟着变,但是业务还是那个业务,凭什么要修改非UI的代码?于是有人提出“三层”,最朴素的理解就是将原本那堆事件处理里的code分成业务代码和数据库访问代码并转移到其它类中,做多了就把那坨UI叫做UI,那坨业务代码叫做BLL,那坨DAO叫做DAL。也就是这种架构:

image

而对于j2ee的开发者来说熟悉的是下图。

image

(说明:这两幅图copy自是daxnet文)

MVC是什么

MVC是一个很经典的结构,并且其又其思想衍生出很多变种比如MVP,MVVP。传统的MVC结构之一是这样的(拿主动型mvc来说):

image

比如web开发(比如asp.net mvc或者是java的web开发方式),view就是纯web页面或者webservice,当提交一个表单/调用webservice或者ajax后会将数据提交给controller(当然期间可能会经过各种filterchain、listener这样的东西)controller调用相应的业务模块来处理这个请求,最终结果会更新View的显示。

MVP

对于非天然mvc的框架

对于asp.net/winform而言,虽然可以通过改造让其支持mvc结构的开发(比如通过定制IHttpModule、IHttpHandler云云),但是在企业看来这些都算是邪门武功(因为这样会丧失xxxform在开发上的很多特性比如快速开发)。大多数使用的是mvp模式。什么是mvp呢?其实mvp是mvc的一个变种。因为用winform或者webform的话form始终是个阻碍mvc开发的问题。那么好,我们仍然使用designer和codebehind,其实一个架构设计的好坏是取决于人而不是具体的技术的,只要我们OO一时强page controller一样好用。

image

在MVP模式中我们需要自己定制各个View(web页面或者窗体)对应的IView和IPresenter、IModel。IView要对IPresenter暴露操作UI、数据绑定的接口,IPresenter对IView要暴露当UI事件触发需要调用的接口,IPresenter根据IView传递过来的请求调用业务接口并根据结果操作UI。举个简单的例子,一个计算“x+y=?”的程序。如果我们这样定义IPresenter和IView

public interface IPresenter
{
IView View { get; set; }
void CalculateResult();
}

public interface IView
{
IPresenter Presenter { get; set; }
void ShowResult(string result);
int ValueOne { get; }
int ValueTwo { get; }
}

IPresenter的实现如下(这里从简把IModel去掉了)

分享到:
评论

相关推荐

    精通.NET企业项目开发:新的模式、工具与方法

    第ⅲ部分是第6-12章,本部分属于核心内容,结合按揭贷款申请的示例,详细讲解了企业开发涉及的各种设计模式,这些设计模式都是为了达成企业系统的特定目标;后是附录部分,主要是为不太熟悉.平台的读者准备的,介绍...

    ASP.NET MVC实战

    《ASP.NET MVC实战》适合于对MVC框架感兴趣的ASP.NET开发人员,其中的许多设计原则和最佳实践则可以适合于各种开发人员。MVC作为一种流行的应用程序开发框架已经存在多年。现在,Microsoft公司也加入了这个社区,ASP...

    基于ASP.NET的电商系统的设计与实现

    本电商系统主要使用ASP.NET技术+BootStrap前端框架+SQLServer数据库,通过对该系统的设计,简化代码实现过程,保留核心功能,可以在实践过程中掌握ASP.NET技术的部分使用方法,如对三层架构开发模式的熟悉、各种控件...

    asp.net 设计模式样章试读

    涵盖了开发企业级ASP.NET应用程序的知名模式和最佳实践。本书用到的模式可以用于从ASP.NET 1.0到ASP.NET 4.0的任何版本。不必管模式本身所用的语言,可以将模式用于任何面向对象编程语言。 本书是为那些熟悉.NET框架...

    ADO.NET高级编程

    ADO.NET是Microsoft在.NET环境下使用的一种最新数据访问...本书适合那些在.NET Framework中开发过Visual Basic.NET应用程序,或是已经熟悉如何利用ADO开发数据驱动的应用程序,而且希望掌握ADO.NET的中高级开发人员。

    graphql-aspnet:适用于ASP.NET开发人员的GraphQL库。 此库表示库的核心源代码

    NET Core , .NET 5 GraphQL ASP.NET是功能齐全的graphql库,它利用ASP.NET MVC开发人员熟悉的控制器/动作编程模型。 与其关注模式和映射解析器,不如关注控制器和模型。 GraphQL ASP.NET将自动生成与您的代码匹配...

    AutoCode代码生成器(ASP.NET版)

    使用本软件的自动生成的代码,符合.NET的开发模式结合工厂模式,展示、业务、逻辑、存储的分层实现,代码的编写已分门归类,重要体现了“桥归桥,路归路”的理念,这样对任何需要尽快熟悉项目的人员,一定可以在短...

    ASP.NET设计模式-杨明军译(源码)

    《asp.net设计模式》涵盖了开发企业级asp.net应用程序的知名模式和最佳实践。本书用到的模式可以用于从asp.net1.0到asp.net 4.0的任何版本。不必管模式本身所用的语言,可以将模式用于任何面向对象编程语言。  ...

    ASP.NET MVC网站编程案例精解

    《ASP.NET MVC网站编程案例精解》面向的读者是熟悉Web开发的基本概念和ASENET的Web开发人员,《ASP.NET MVC网站编程案例精解》中的所有示例是用C#语言实现的。 内容提要 ASENETMVC整合了强大的新功能,可以帮助您...

    asp.net设计模式(中文)

    《asp.net设计模式》涵盖了开发企业级asp.net应用程序的知名模式和最佳实践。它是为那些熟悉.net框架但希望了解如何改进编码方式以及如何运用设计模式、设计原则和最佳实践来提高代码的可维护性和适应性的asp.net...

    基于asp.net的轻量化在线考试系统

    3.1 本系统采用Visual Studio2010作为开发工具,以SqlServer ...ASP.NET提供了强大的Web应用程序开发能力,可以通过ADO组件提供的接口方便地访问数据库,同时兼考虑开发人员对开发工具的熟悉程度,选择ASP.NET作为服务

    基于Asp.net技术实现的简单博客系统

    通过对该系统的设计,简化代码实现过程,保留核心功能,可以在实践过程中掌握ASP.NET技术的部分使用方法,如对三层架构开发模式的熟悉、各种控件的使用、数据库的连接、SQL语句实现多表联查以及分页查询、登录注册...

    Visual Basic.NET线程参考手册

    本书适合于从事.NET开发的VB程序员阅读,不要求读者具备任何线程方面的知识。 目录 第1章 定义线程 1.1 线程的定义 1.1.1 多任务 1.1.2 进程 1.1.3 线程 1.2 Visual Basic.NET对线程的支持 1.2.1 System....

    中美 IT 培训 C# Asp.net 全套笔记1

    C# 基本语法、面向对象的思想、数据结构和算法以及设计模式(120课时) 详细介绍.Net Framework、C# 基本语法、编程规范和编程技巧、面向对象的认识问题和分析问题的思想、以及数据结构和常用算法,学习单件模式、...

    中美 IT 培训 C# Asp.net 笔记3

    C# 基本语法、面向对象的思想、数据结构和算法以及设计模式(120课时) 详细介绍.Net Framework、C# 基本语法、编程规范和编程技巧、面向对象的认识问题和分析问题的思想、以及数据结构和常用算法,学习单件模式、...

    中美 IT 培训 C# Asp.net 笔记2

    C# 基本语法、面向对象的思想、数据结构和算法以及设计模式(120课时) 详细介绍.Net Framework、C# 基本语法、编程规范和编程技巧、面向对象的认识问题和分析问题的思想、以及数据结构和常用算法,学习单件模式、...

    基于asp.net实现FTP客户端设计与开发源代码和论文

    FTP是Internet上最早也是最...进一步熟悉.net开发环境,掌握一定开发Windows应用程序技术。对提高自己的C#语言编程能力,熟悉ftp工作过程。制作一个界面友好,快速,稳定的下在软件。对信息的快速共享起着一定的作用。

    Orleans是一个跨平台框架,用于使用.NET构建分布式应用程序-.NET开发

    Orleans建立在.NET开发人员生产力的基础上,并将其带入了分布式应用程序的世界,例如云服务。 Orleans可从单个本地服务器扩展到云中全局分布的高可用性应用程序。 奥尔良采用了对象,接口,异步/等待和尝试/捕获等...

Global site tag (gtag.js) - Google Analytics