zoukankan      html  css  js  c++  java
  • 深入.NET平台的软件系统分成开发(1/6)

    第一章软件系统的分层开发

    1.1 分成架构

    分成模式定义:将解决方案中功能不同的模块分到不同的项目中实现。每一层中的主键应保持内聚性,每一层都应与他下面的各层保持松耦合。

    分层模式是最常见的一种架构模式,甚至可以说分成模式是很多分层模式的基础。

    数据访问层:处于最底层,负责与数据库交互,也成为DAL(Data Access Layer)。

    表示层:直接与用户打交道,负责显示或者获取数据,也称为UI层(User Interface Layer)。无论用控制台还是用Windows窗体显示数据,都是表示层的一种应用。

    表示层依赖于数据访问层,两层职能分开,协同工作,依赖关系如图1.4所示

    1.2搭建分层架构

    1.2.1  程序集

    程序集定义:如运行MySchool程序,在binDebug目录下会生成一个MySchool.exe文件,双击者这个文件就可以打开这个MySchool应用程序。这个编译好的.exe文件就属于程序集。

    .NET程序集是任何.NET Framework应用程序的基本构造。程序集由描述它的程序集清单(包含版本号,程序集名称等),类型元数据,MSIL代码和资源组成,将这部分都分布在一个文件夹中,或者几个文件夹中,如图1.5所示:


      • 可执行文件,即.exe文件。
      • 类库文件,即.dll文件。
      • 一个解决方案可以有一个或多个项目组成,这些项目可以是Windows应用程序,类库等。
      • 命名空间是组织C#程序的一种逻辑架构,一个命名空间可以有多个类。

    1.2.2如何创建分层架构

    (1)给项目添加类库。方法是右击解决方案,在弹出的快捷键菜单中选择“添加”>“新建项目”命令,弹出“添加新项目”对话框,给新建项取名为“MySchool.BAL”。

    (2)添加表示层和数据访问层之间的依赖关系。表示层和数据访问层都建立完毕,但每一层都是各自独立的,他们之间没有任何依赖关系,两者之间必须有依赖关系才能作为一个整体使用,即建立起表示层与数据访问层的依赖表示层才能调用后者中的类。一下有两种方法可以形成依赖。

    第一种方式是右击MySchool项目,在弹出的快捷键菜单中“添加引用”命令。

    第二种方式是选择“浏览”命令,添加数据访问层生成.dll文件的引用。

    1.3分层开发的优点和优势

    • 代码复用
    • 分离开发人员的关注
    • 无损替换
    • 降低了系统之间的依赖

    1.4异常处理

    1.4.1 为什么要异常处理

    前面介绍了分层架构开发系统,但是系统各层之间故障还是难以避免的。如果应用程序对用户的操作进行检查,判断,病在故障发生是提示出错或进行相应的处理,就会尽可能的避免程序系统的崩溃,这就用到了异常处理。

    在C#中程序运行是出错通过一种“异常”

    的机制在程序中传播。“异常”是程序在执行时发生的错误,导致这种错误的原因来自三个方面。

    1. 代码错误:包括编译错误,只是开发人员造成的。
    2. 资源不可用:由于系统访问了未经授权的资源引起的错误。
    3. 公共语言运行库:由CLR内部引起的错误。

    1.4.2 .NET异常处理机制

    异常由Exception的派生类表示。ExcePtion类中封装的异常处理有两种情况。

    • 一种是由用户程序执行引发的异常,派生于ApplicationException类。
    • 由公共语言运行库引发的异常,派生于SystemException类。

    常见异常类型

    异常类常见的属性

    异常处理语句

    语法:
    1.try-catch
    
    try
    {
            //可能引发异常的工作代码
    }
    catch(异常对象)
    {
            //异常处理
    }
    
    2.try-finally
    try
    {
          //可能引发的异常的工作代码
    }
    finally
    {
           //清理相关对象代码
    }
        
    3.try-catch-finally
    try
    {
            //可能引发异常的工作代码
    }
    catch(异常对象)
    {
            //异常处理
    }
    finally
    {
           //清理相关对象代码
    }

    多路异常捕获

    try
    {
            //可能引发异常的工作代码
    }
    catch(Exception ex)
    {
           thow ex;
    }
    catch(SqlException ex)
    {
           thow ex;
    }

     

     

     

     

    更多详情请关注 http://www.cnblogs.com/baixingqiang/
  • 相关阅读:
    在nginx环境下搭建基于ssl证书的websocket服务转发,wss
    在nginx环境下搭建https服务,代理到本地web项目
    java CountDownLatch报错java.lang.IllegalMonitorStateException: null
    https本地自签名证书添加到信任证书访问
    10013: An attempt was made to access a socket in a way forbidden by its access permissions
    chrome 报错 ERR_CERT_AUTHORITY_INVALID
    SDKMAN一个基于命令行界面的SDK用户环境管理程序
    springboot放到linux启动报错:The temporary upload location [/tmp/tomcat.8524616412347407692.8111/work/Tomcat/localhost/ROOT/asset] is not valid
    netty-websocket-spring-boot-starter关闭报错 io/netty/channel/AbstractChannel$AbstractUnsafe io/netty/util/concurrent/GlobalEventExecutor
    HTML DOM addEventListener() 方法
  • 原文地址:https://www.cnblogs.com/baixingqiang/p/5516444.html
Copyright © 2011-2022 走看看