zoukankan      html  css  js  c++  java
  • 多层应用程序的开发

    商业应用程序一般会有多层

    表现层presentation,商务逻辑层business,数据访问层data access和数据存储data store

    分离逻辑思维的需要,团队或多语言开发的需要,重用商务逻辑层与数据层的需要

    1

    BT层:整体设计,安全性,商务规则,数据校验处理

    面向对象编程OOP

    完全OOP:任何事物都是对象,大概会有1000多个对象存储在RAM中

                       例如:Customers,products,Orders,Addresses,…

                       OOP的巨大能量能处理任何的问题,但也带来一定的压力。

    大颗粒(large-grain)OOP:任何对象都是对象,但对象是大颗粒的。

                           少量的全面的对象,虽然不优雅,但是更实际。

    不使用OOP:没有对象--返回过程样式的编程。

                           没有类--基于结构和静态方法。

    大颗粒设计,我们不要把所以的customers 都存储在RAM中。

    通过ID获得唯一的customer,可以查找customer ID的子集。

     2

    安全性

    安全性非常的复杂,对于任何一层的设计都有潜在的影响

        谁将使用本系统?(验证)

        是否允许该用户进行此操作?(权限)

        在何处进行安全检查?

                  商务逻辑层

                  表现层是否需要反映出用户的权限?

                  数据层是否需要进行检查?

    最基本的是通过商务规则来进行检验

    商务规则

    典型地通过明确地编码表现

    不同的商务情况有不同的规则

    但,有一条通用的规则-校验 validation

    校验(validation)

    表现层是第一级检验

    例:整形输入

    3

    典型情况,BT再做一次额外的检验。ID号码/信用卡号码/e-mail地址等是否有效

    编写有力的代码控制,正则表达式(regular erpressions)

    正则表达式REs,是强大的检验技术

    过程:有效的输入被表现为一种模式,对于用户的输入,运行模式进行检验。

    例如:“d”指单一的数字{0,1,2,3,4,5,6,7,8,9}   “w+@w+”是一个简单的E-mail地址模式

    例:检验Zipcode是否符合US的标准

           Zip 或 Zip+4

           模式:^表示开始,?可选,$结束

    4

    防止SQL输入攻击

    在数据被传入到数据层之前,对于文本框的内容必须检验。

    5

    在数据访问层并不管理和存储数据,它只是提供商务逻辑层和数据库之间的接口。

    设计接口,主要考虑到问题:high-level 还是low-level接口?存储过程或者动态SQL语句?

    HL接口隐藏BT传来的细节信息

    6

    LL接口

    7

    存储过程

    create proceduer sproctopten 
    
    as set rowcount 10 
    
    select * from customers order by accountBalance Desc

    存储过程是存储到数据库的SQL语句

                     DBAs编写,数据库模式与应用程序分离,提供数据访问控制的另一层,封装复杂的SQL,保证事物执行,可能对提高性能产生很大的帮助。

    执行存储过程

    使用标准的ADO.NET机制来执行

    例如:获取前10名最高账户余额的客户,通过ID删选客户信息

    8

    9

    层间如何传递数据:

             基本类型的数组,对象的集合,原始的dataset,强类型dataset

    强类型datasets,是特殊化的dataset

    强类型dataset 是从dataset继承的定制对象,它可以通过其显露的属性(properties)来对封装数据进行强类型的访问。

    强类型dataset避免了字段的晚绑定。强类型dataset提供了强类型的访问器,因为避免了到一个集合中查找列名或表名,访问时更快。

    除了能够提高运行时的性能,强类型dataset还提供了类型检查,并且在设计时可以通过自定义字段名对字段智能感知。

    例:

    10

    如何建立强类型(方便的,面向对象的,且易建立的)

    11

    强类型dataset可以当作BT,建立强类型dataset,添加一些实现商务逻辑的方法

    如果DB的模式发生了改变,你必须重新建立强类型,这时将失去商务逻辑。

  • 相关阅读:
    【转】ORACLE日期时间 等函数大全
    list_car()函数小记
    git代码提交流程
    windows连接ubuntu服务器方式
    win10专业版安装docker实战
    selenium来识别数字验证码
    web服务器、WSGI跟Flask(等框架)之间的关系
    pymysql的使用
    sql常用 语句总结
    sql语句insert into where 错误解析
  • 原文地址:https://www.cnblogs.com/HuXiaoxia/p/3435577.html
Copyright © 2011-2022 走看看