C#的架构、框架、设计模式

建立层务必使用类库选项,不要使用文件夹(没错,说的就是我自己)

一、两层架构

        1.架构概述

                两层架构适合小型 / 中小型项目

名称标识用途
数据访问对象DAL模型服务,需要添加Models引用
实体对象Models模型
用户界面UI交互界面,需要添加DAL和Models引用

         2.实体对象的序列化

                序列化:将对象状态转换为可保持/传输的格式,会转换为字节流

                反序列化:将流转换为对象

                实现:在类中加入可序列化标记[Serializable]

二、三层架构

        1.架构概述

                适合大 / 中型应用开发

         2.命名规范(通用)

         3.DAL与BLL

//BLL
publc class StudentManager
{
    private StudentSeiver objStu = new StudentSeiver ();    //创建数据访问对象

    public List<Student> GetAllStu()
    {
        return objStu.GetAllStu();    //仅起数据传递作用
    }

    public List<Student> GetStuByClass(string className)
    {
        if(className == null || className.lenght == 0)
            return objStu.GetStu();
        else
            return ibjStu.GetStuByClass(className);    //根据不同查询条件实现数据访问
    }
}

                在主程序中,仅需调用BLL中的接口,而无需去处理DAL中的具体方法(进一步分离)

                相当于将原来位于UI层的业务逻辑处理下移到了BLL层

        4.特征

                优点:分离开发人员关注的内容;        项目需求变化时,程序模组可以无损替换;        提高代码的可复用性;

                缺点:代码量大;        实现复杂;

三、通用控制层的扩展

        1.通用层的概念

                用以复用一些共用技术,如:通用的辅助类和工具方法;数据校验方法;缓存处理、加密方法

                以Common为标识

 四、接口与多态

        1.软件设计中的接口

                .Net中的接口定义规范:①使用关键字interface定义,接口类一般以 I 开头

                                                       ②接口中的属性、方法只做声明而不具体实现

                                                       ③均为public

                 接口的实现

                 特点:①接口具有强制性,实现接口的类必须实现接口的所有成员

                            ②一个类即可以实现多个接口,也可以同时继承其他类

         2.应用多态实现多态

                前提条件:①一个接口必须被 两个/以上 的类实现

                                  ②接口实现类必须转换成接口类型去使用

                 与继承多态的比较

抽象类接口
使用abstract实用interface
只能继承一个类可以实现多个接口
非抽象派生类必须实现抽象方法实现接口的类必须实现所有成员
使用override实现直接实现
都不能用于实例化
都未包含实现方法
子类/“接口实现类”都必须实现为实现的方法

五、设计模式

        1.概述

                常见的设计模式:        ①简单工厂(单一对象创建的扩展)       

                                                     ②抽象工厂(多找那个类型数据库访问问题/不同业务逻辑)       

                                                      ③单例模式(Web中设计购物车需要使用)

        2.简单工厂

                 原理:①工厂可以通过“选择”的方法来指定创建哪个“接口实现的类”

                            ②工厂实际是一个对象创建的方法,让对象延迟创建(取代原来new的作用)

                实现:①接口(产品原型)

                           ②工厂类(产品生产)

using System.Configuration;    //同时需要在项目中引用

class Facotory
{
    //1.定义接口变量
    staitc IReport objReport = null;

    //2.读取配置文件(添加App.config)
    static string reportType = congfigurationManager.AppSettings["ReportType"].ToString();

    //3.根据用户要求创建对象
    public static IReport ChooseRepType()
    {
        switch(reportType)
        {
            case "ExcelReport":    objReport = new ExcelReport(); break;
            case "WordReport":    objReport = new WordReport();    break;
        }
        return objReport;
    }
}

                           ③仓库(产品输出):具体的接口实现(多种实现)

                在主程序中的调用

IReport objRep = Factory.ChooseRepType();    //工厂动态新建

//等价于IReport objRep = new ExcelReport();  IReport objRep = new WordReport();

                基于反射技术的简单工厂改进

static string reportType = congfigurationManager.AppSettings["ReportType"].ToString();

public static IReport ChooseRepType()
{
    return (IReport)Assembly.Load("UseFactory").CreateInstance("Report."+reportType);
}

        3.抽象工厂设计模式

                同时开发不同数据库访问的DAL,集成在一个系统中,根据用户的需求配置不同的DAL和UI、BLL结合即可

                优势:只需要维护一套系统,维护和开发成本较低且部署灵活

                设计DAL方案:(任选其一)

                         BLL依赖“开关”与DAL隔离。

                抽象工厂的依赖关系

                 框架实现DAL(接口实现)、IDAL(接口)、DALFactory(抽象工厂)互相独立

                         使用的配置文件:

//DALFctory的实现

//1.读取数据库类型
static dbType = configurationManager.AppSetting["dbType"].ToString();

//2.读取DAL所在的程序集名称
static dalAssemblyName = configurationManager.AppSetting["DalAssemblyName"].ToString();

//3.组合要创建的对象的命名空间
static string path = dalAssemblyName + "." + dbType;

//4.使用反射来实现
public static IDAL.IStudentService CreateStudentService()
{
    return (IDAL.IStudentService)Assembly.Load(dalAssemblyName).CreateInstance(path + ".StudentService");
}

               BLL中的引用

public class ClassManager
{
    //通过抽象工厂创建DAL,实现DAL动态替换
    IDAL.IStuService objSer = DALFactory.DataAcess.CreateStuSerObj();

    //抽象构造方法
    public List<Stu> GetAllStu()
    {
        return objStu.GetAllStu
    }
}

六、反射技术

        1.概念

                通过反射,可以在运行时获得某个类型的各种信息,包括方法、属性、事件、构造函数等,还可以获取每个成员的名称等信息

                反射是在程序运行时进行的(动态创建对象、调用方法、设置属性、激发事件),并非在编译时完成

        2.应用

                ①系统需要基于插件开发的时候,必须使用反射

                ②简单工厂&抽象工厂中将使用反射

                ③一般配合接口使用

                ④反射会降低系统性能,除非必要否则不宜过多使用

        3.实现

using System.Reflection;    //引入反射命名空间
using ICal;    //引入接口库

//动态加载程序集并创建对象
ICalculator objCal = (ICalculator)Assembly.LoadFrom("CalDLL.dll").CreateInstance("CalDLL.Calcuator");
//调用反射,需要引入类文件 + 完全限定名(同时返回的是Objcet型,需要强制转换)

int Result = objCal.Add(num1,num2);  //通过接口运算

        4.优势

                使用反射后,不再需要添加接口实现类的引用,降低了模块之间的耦合,可以直接使用外部调用(随意替换文件)

  • 20
    点赞
  • 129
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
### 回答1: ASP.NET MVC是一种用于构建Web应用程序的开发框架,它使用C#作为主要的编程语言。ASP.NET MVC是微软公司推出的一种模型-视图-控制器(Model-View-Controller)架构模式的实现。 在ASP.NET MVC中,开发人员将应用程序分为三个主要组件:模型(Model)、视图(View)和控制器(Controller)。模型是应用程序的数据层,用于处理数据逻辑和持久化数据。视图是应用程序的用户界面,用于渲染数据并向用户显示信息。控制器负责接收用户请求,并根据请求调用适当的模型和视图,并对用户请求进行处理和响应。 ASP.NET MVC具有很多优点。首先,它提供了良好的可维护性和可测试性,因为它将应用程序分为独立的组件。这使得开发人员可以轻松地对每个组件进行测试和修改,而不会对其他组件产生影响。其次,ASP.NET MVC具有丰富的功能和灵活的扩展性,开发人员可以根据项目需求自定义和扩展框架。此外,ASP.NET MVC具有良好的性能和安全性,可以处理大量并发请求,并防止网络攻击。 为了使用ASP.NET MVC进行开发,开发人员需要具备一定的C#编程知识。C#是一种面向对象的编程语言,与ASP.NET MVC紧密集成。开发人员可以使用C#编写模型、控制器和视图,并使用C#提供的丰富的类库和框架来处理数据和逻辑。C#还具有强类型和类型安全性,可以提高代码的可靠性和性能。 总而言之,ASP.NET MVC是一个强大且灵活的Web开发框架,其结合了C#编程语言和模型-视图-控制器架构模式。它提供了可维护、可测试、高性能和安全的解决方案,适用于构建各种规模的Web应用程序。 ### 回答2: ASP.NET MVC(Model-View-Controller)是一种Web应用程序开发模式,通过将应用程序分为三个主要组件:模型(Model)、视图(View)和控制器(Controller),帮助开发人员更好地分离关注点和组织代码。 模型(Model)是应用程序的核心组件,它负责处理应用程序的数据逻辑和业务逻辑。模型通常是与数据库或其他数据存储互动的组件,它负责数据的获取、处理和存储。模型可以包含实体类、数据访问层和业务逻辑处理。 视图(View)负责呈现应用程序的用户界面,它是用户与应用程序交互的地方。视图通常是由HTML和其他前端技术组成,开发者可以使用视图模板语言来动态渲染数据。视图的主要职责是显示模型中的数据,并为用户提供交互操作的界面。 控制器(Controller)负责处理用户请求和控制应用程序的流程。它接收来自用户的请求,根据请求的类型和数据,调用适当的模型进行数据处理和业务逻辑处理,最后将数据传递给视图进行展示。控制器在MVC模式中扮演了协调器的角色,它负责将用户输入映射到模型和视图之间。 ASP.NET MVC为开发人员提供了一种清晰的结构和良好的组织方式,可以更好地管理应用程序的代码和资源。使用ASP.NET MVC,开发人员可以轻松实现URL路由、权限控制、数据校验和错误处理等功能。同时,ASP.NET MVC还提供了可扩展的机制和工具,使开发人员能够定制和优化应用程序的性能和功能。 总之,ASP.NET MVC是一种优秀的Web应用程序开发框架,它通过模型-视图-控制器的设计模式,使开发人员能够更好地组织和管理代码,提高应用程序的开发效率和质量。 ### 回答3: ASP.NET MVC是一种基于MVC(Model-View-Controller)架构的Web应用程序开发框架。它结合了传统Web Forms和ASP.NET的特点,提供了一种更加灵活和可控的开发模式。 ASP.NET MVC采用了分层的开发模式,其中Model层用于处理数据的操作,View层用于展示数据,并处理用户的输入和界面交互,Controller层用于处理业务逻辑和协调Model和View之间的交互。这种分层使得各个部分的职责清晰明确,提高了代码的可维护性和可测试性。 在ASP.NET MVC中,控制器负责接收用户的请求,并根据请求的内容决定要执行哪些操作,或者调用适当的Model来处理数据。然后,控制器将处理的结果传递给View层进行展示。通过这种方式,控制器起到了桥接Model和View的作用。 ASP.NET MVC还提供了强大的路由功能,通过路由表将URL映射到对应的控制器和操作上,使得开发者可以更加灵活地定义URL和页面之间的关系。 除了以上的特点,ASP.NET MVC还具有以下优点: 1. 更加灵活:通过MVC的模式,开发者可以根据自己的需求灵活地选择使用哪些组件和功能,没有多余的开销。 2. 可测试性:因为MVC将应用程序分成了独立的组件,所以每个组件都可以独立地进行测试,提高了代码的质量和稳定性。 3. 简化开发过程:ASP.NET MVC提供了很多通用的功能和组件,例如表单验证、身份验证和数据绑定等,这些可以帮助开发者快速构建应用程序。 4. 跨平台支持:ASP.NET MVC可以运行在Windows和Linux等多个平台上,为开发者提供了更多的选择。 总之,ASP.NET MVC是一个功能强大、灵活和可扩展的Web开发框架,它可以帮助开发者快速构建高质量的Web应用程序。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值