文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | 免费看大片 | WPS | 杀毒软件
清风网络
首 页 软件下载 网络学院 数码学院
QQ 电脑入门 游戏 操作系统 图形处理 办公软件 媒体动画 精文荟萃 工具软件 网络编程 程序开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络学院网络编程ASP面向对象的应用服务层设计
精品推荐
特别推荐
·如何解密加密的ASP源代码
·PHP+MySQL 购物车程序实例
·ASP网站漏洞及入侵防范方法
·ASP网络安全
·1小时ASP入门
·初学ASP动态网页制作常用错误处理
·ASP实现网页打开任何类型文件都保存
·ASP技巧:使用FSO自动创建多级文件夹的函数
·轻松建站 主流ASP内容管理系统
·ASP教程:透彻掌握ASP分页技术
热点TOP10
·了解MSMQ,控制ASP进程 (一)
·用ASP对网页进行限制性的访问
·实现session登陆时间的验证,验证用户登录页面的一个监听器
·Java基础:常用的匹配正则表达式和实例
·smarty实例教程
·ASP基础教程之ASP程序对Cookie的处理
·实例详细讲解ASP教程之ASP中使用变量的方法
·ASP入门:认识ASP程序所使用的几种脚本语言
·ASP入门知识:简单介绍ASP的基础知识
·ASP技巧:ASP中三个常用语句的使用技巧

面向对象的应用服务层设计

日期:2008年5月30日 作者:清风网络学院 查看:[大字体 中字体 小字体]



  ◆ 业务服务的提供方式

  在我们完成系统的功能后,如何向客户提供服务,是我们需要考虑的问题。这里的客户,不仅仅是指软件的使用者,也包括调用的界面、其他程序等。例如,在一个基于Web的ASP.Net或JSP系统中,业务逻辑功能的客户便是这些ASP.Net页面或JSP页面。业务逻辑组件应该通过什么方式,直接的,或间接的,向这些客户提供服务,是这一层需要完成的任务。

  ◆ 层的部署和层间交互

  对于一个多层的应用软件系统来说,尤其是大型的应用软件系统,通常需要把不同的部分部署在不同的逻辑或物理设备上。特别是一些基于Web的应用软件系统,其部署工作将涉及到Web服务器、组件服务器、数据库服务器等不同的服务设备。在进行应用软件架构的设计的时候,必须考虑各种不同的部署方案。

 


  综上所述,一个完整的基于Web的应用软件系统,其架构可以用下图来表示(Websharp推荐的应用软件系统架构):

  对于以上各个方面来说,每个问题都可以有很多种策略和方案,但是,在一个系统中,应该尽可能的统一这些策略和方案。也就是说,在一个系统,或者一个项目中,应该统一每个解决每个问题所采用的方法。软件的开发方法是灵活的,可以用不同的方法解决相同的问题,这会诱使开发人员采用他们认为能够表现自己的方法,但是,从整个系统来看,这将会是灾难性的。我们应该尽可能统一,就是,采用统一的数据表示方式、统一的数据存取方式、统一的业务逻辑处理方式等。

  下面,将就这些部分的设计策略和可用方案进行一些比较详细的论述。

  数据实体的表示

  应用软件系统,从本质上来说,是计算机对现实世界的模拟。现实世界中的实体对象,在软件系统中,表现为需要处理的数据。在面向对象的系统中,这是通过"类"和"对象"来表示的。

  参考著名的"MVC"模式,类可以分成实体类(M)、控制类(C)、和边界类(V),分别代表了实体对象、控制和界面显示。系统中需要处理的数据,在面向对象的系统中,属于实体类部分。

  在考虑数据实体层的设计策略的时候,需要把握以下要点:

  ◆ 一致的数据表示方式。在一个系统中,数据的表示方式必须尽可能统一,同时,在处理单个数据和多个数据的时候,处理方式尽可能一致。

  ◆ 因为数据通常是需要存储到数据库中,因此,良好的映射方法是必需的。

  ◆ 处理好对象的粒度,即所谓的粗粒度对象、细粒度对象。

  一般例子

  考虑一个现实的例子,一个仓库中的产品(Product),在系统中可以使用如下定义:

  public class Product{public string Name; //名称
  public decimal Price;//价格
  public int Count;//数量
  }
  可以按照如下方法使用Product类:
  Product p=new Product();
  //……处理Product



  这是一个包含了三个属性的Product类的定义。为了便于说明,在这里,我们尽量将问题简化了。

  又例如,一张入库单可以使用如下定义:

  public class Form{public string ID; //入库单编号
  public DateTime AddTime; //入库时间
  public FormDetail[] FormDetails; //入库单明细
  }
  public class FormDetail
  {
  public Product InProduct; //入库产品
  public int Count; //入库数量
  }


  对于处理单个对象,通常采用上述的方法,但是,当我们需要处理相同类的一组对象,也就是处理一个对象集合的时候,就会有一些小小的麻烦。

  如前所述,我们希望在处理单个对象和对象集合的时候,处理的方式尽量统一,这对于软件开发的意义是很大的。常用的处理对象集合的方法有:

  ◆数组表示的方法

  例如,上面的例子中当一张入库单包含多条入库单明细的时候采用的方法。为了灵活性,也可以使用容器来,如Java中的Vector或C#的ArrayList(C#)。只是,在处理对象的时候,需要一个类型转换的操作。这个问题,在支持泛型的语言中不会存在,如使用C++的标准库的容器类。

  ◆ObjectCollection方法。这个方法同上面的方法类似,不同之处在于,为每个实体类设计一个Collection类。例如,可以为FormDetail设计一个FormDetailsCollection类(C#):

  public class FormDetailsCollection: ArrayList
  {
  public void Add(FormDetail detail)
  {
  base.Add(detail);
  }
  public new FormDetail this[int nIndex]
  {
  get{ return (FormDetail)base[nIndex];
  }
  }
  }



  这么做的好处在于,在操作集合中的对象时,不必进行类型转换的操作。

上一页 [1] [2] [3] [4] [5] [6] 下一页 




上一篇:MSN联系人中的小技巧

下一篇:Photoshop质感文字系列之:蟒纹字

相关文章:
·解决与HTTP 500 – 内部服务器错误错误信息有关的问题
·从零开始 无线网络终极应用宝典
·注册表应用100例—注册表使用全攻略之十一
·WindowsXP应用技巧的具体总结
·何谓HTTP 500内部服务器错误
·如何建立一个网站?规划、设计、目的、原则、宣传
·代理服务器使用原理与选购细则
·如何卸载netware客户服务
·各位网友能不能告诉我个速度快点的电信HTTP代理服务器?
·18个优秀的在线图片编辑服务网站
相关软件:
·C语言程序设计
·Dreamweaver 网页设计
·美工设计教程
·Photoshop CS经典创意设计200例
·Photoshop CS中文版平面设计师标准案例教程
·Windows环境下32位汇编语言程序设计
·颐家IDO在线互动设计软件
·Photoshop 7.0 平面 广告 装帧设计100例
·注册表实例应用视频教程swf
·超级DIY设计器V7.0 build 2143 特别版

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.viphot.com
| 帮助(?) | 版权声明 | 友情连接 | 关于我们 | 信息发布
Copyright 2007 www.viphot.com All Rights Reserved. 鄂ICP备05000083号Powered by:viphot