基于.Net(C#开发)平台的三层框架架构软件的设计与实现

 
  摘 要: 软件开发的三层框架思想能使整个项目更加灵活,便于维护,并且还有利于项目的多人协作开发。本文在介绍软件复用技术和三层架构思想的基础之上,运用C#设计并实现了

一个.NET平台下的信息系统软件框架。信息系统开发时通过运用该软件三层框架可以很方便的生成一个MIS 雏形,从而能有效的提高信息系统软件的开发效率和软件标准化及构件化水平。
  
  关键词: 软件复用三层架构软件框架三层框架c#三层框架
 
  
  1 软件框架
  
  随着软件复用技术和软件构件化思想的深入研究,现代软件系统的设计也不在是以前的程序=数据结构+算法,而更多的是对开发平台,软件框架的综合研究与设计。信息系统软件框架

是信息系统软件的一个体系结构和系统框架,他是一个半成品应用系统程序,是由信息系统中一组抽象构件以及这些构件间的接口所组成,因而在现代信息系统软件框架的设计与开发时其

主要任务就是对信息系统中可重复使用的软件骨架的主体研究与设计。在开发中一个面向对象的、可复用的信息系统软件框架已经成为一个软件开发团队的核心物质资本,而且更重要的是

信息系统软件框架将是一个新系统的开发周期、开发成本及软件维护的核心影响因子。Microsoft.Net 是Microsoft 支持下一代Internet 软件和服务的平台,作为新一代的开发平台,它彻

底支持面向对象技术,适于快速的构建灵活的,功能强大的MIS软件。本文将结合.NET 平台所提供的相关技术,构建出一个具用三层架构设计思想、面向对象、可复用的信息系统软件开发

框架。
  
  
  2 三层架构思想
  
  在管理学中有一个重要的概念即企业组织结构,企业组织结构是分层思想在企业中的重要应用,企业组织结构的目的是以求有效合理的把企业各层成员组织起来,为实现企业运作和发

展目标而相互协同努力。在软件框架的设计时,分层结构是最常见也是最重要的一种结构,虽然软件框架分层的目的和形式跟企业分层有所不同,但都有一个共同目标:以求有效合理的组

织相关构件,使其更高效的完成协同任务。在分层软件框架设计时最流行的是三层架构设计,任何一个系统从应用逻辑上对其进行抽象细分,均可划分为三层,自下至上分别为:数据访问

层(DAL 层)、业务逻辑层(BLL 层)和表示层。在软件开发设计时我们还会用到一些通用辅助类和方法,如数据库访问类、事务处理类等,为了实现各个模块之间的相互复用,在本次软

件架构设计时也将其分离出来,作为一个独立模块。在企业信息系统软件中整个系统操作的对象就是数据库中的数据表、视图等,为了便于在各层中相互传递,在设计时也将数据对象的实

体和方法进行分离,将其抽象为一个共用实体类模块。
  
  
  3 软件框架的设计与实现
  
  3.1 数据访问层的设计
  数据访问层( DAL 层) :用于实现信息系统对数据库的操作,完成业务流程对数据库中数据的插入、更新等操作。在管理信息系统中用户操作相关界面完成对应的业务流程的操作,

但无论是什么业务流程最终反映到软件系统中则是对数据库中相关数据表单的数据进行操作,所业在软件框架中我们可以将数据访问进行深入抽象,将其分为数据库的查询运算、插入运算

、修改运算及删除运算。这样对应的每个业务流程只需要指定相关的数据表或视图,就可以根据表中的数据项自动生成相关数据操作。在开发中我们选择是目前使用最为广泛的关系数据库

系统的SQL2005 ,为了避免代码里出现很多SqlConnection 、SqlDataReader等类和方法,同时也为了让代码的编写及后期维护更加清晰简单,因此框架设计时我们采用了微软所提供的一

个静态类SqlHelper。SqlHelper 类通过一组静态的重载方法来封装数据访问功能,开发时可以通过调用SqlHelper 的静态方法来对数据库的进行交互运算。数据的查询、插入、修改及删

除运算在业务流程中有很多种,在软件框架设计时通过重载的方式来加以实现,下面将以数据表Storage_StockOutType 为例,通过部分操作来展示软件框架的具体实现。
  
  3.1.1 数据查询运算
  通过实体类对象查询多条记录,首先根据所选择的实体类创建查询字符串strSQL,然后调用SqlHelper 中的ExecuteReader 函数进行查询,最后将查询结果实体类对象的List 值返回:
  public List<Storage_StockOutTypeInfo> GetStorage_StockOutType(Storage_StockOutType Info entity)
  {   StringBuilder strSQL = new StringBuilder();
  strSQL.Append("SELECT * FROM Storage_StockOutType WHERE 1=1");
  if (entity.ID != 0)
  { strSQL.Append(" and ID=" + entity.ID+""); }
  . //创建查询字符串strSQL
  List<Storage_StockOutTypeInfo> objItems = new List<Storage_StockOutTypeInfo>();
  using (SqlDataReader rdr = SqlHelper.ExecuteReader(SqlHelper.ConnString,CommandType.Text, strSQL.ToString(), null))
  { while (rdr.Read())
  { Storage_StockOutTypeInfo objInfo = new Storage_StockOutTypeInfo();
  if (rdr["ID"] != DBNull.Value)
  objInfo.ID = Convert.ToInt32(rdr["ID"]);
  
  objItems.Add(objInfo);
  }
  
  3.1.2 数据的插入运算
  插入一个实体类对象,首先根据选择的实体类对象属性创建查询字符串strSQL,然后调用SqlHelper.ExecuteScalar 函数进行插入,最后返回插入后对应的ID号。
  public object Insert(Storage_StoreHouseInfo entity)
  { object i = 0;
  string strSQL = string.Format("INSERTINTO[Storage_StoreHouse]( [StoreHouseNumber], [Define5])VALUES( ‘{0}”{8}’)",entity.StoreHouseNumber,entity.Define5); //创

建插入字符串strSQL
  strSQL += " SELECT CAST(scope_identity() AS int)";
  i=SqlHelper.ExecuteScalar(SqlHelper.ConnString, CommandType.Text, strSQL, null);
  }
  
  3.1.3 数据的的修改运算
  修改运算和前面几种运算的设计思想相同,首先是创建SQL 字符串,然后调用SqlHelper.ExecuteNonQuery 函数来完成对数据库的修改。
  public void Edit(Storage_StoreHouseInfo entity)
  { string strSQL = string.Format("UPDATE [Storage_StoreHouse]SET[StoreHouseNumber]= ‘{0}’, WHEREID="+entity.ID+"&quot
;,entity.StoreHouseNumber,.);
  SqlHelper.ExecuteNonQuery(SqlHelper.ConnString, CommandType.Text, strSQL, null);
  }
  
  3.1.4 数据的删除运算
  删除运算时因为已经知道相关记录然后再对其删除,所以删除时只需要根据ID 号即可删除对应的记录。如果要删除的是大批的记录,为了保证数据库的完整性,所以批量删除时要通

过事务处理业完成,事务处理是业务流程,因而将其放在业务层来实现。
  public void Del(int id)
  { string strSQL = string.Format("DELETE FROM [Storage_StoreHouse]WHEREID=" + id + "");
  SqlHelper.ExecuteNonQuery(SqlHelper.ConnString, CommandType.Text, strSQL,null);
  }
  
  业务逻辑层的设计
  业务逻辑层(BLL 层):用于实现数据业务流程,该部分研究与设计在管理信息系统软件的开发过程中是系统实现的核心环节,用于对上下层之间的交互数据进行逻辑处理,实现对应

的业务目标。在软件框架设计时因业务逻辑要根据具体的业务流程来决定,所以在软件框架中该部分的设计主要是设计通用的业务接口,通过这些接口业访问数据访问层,从而完成相关业

务操作。当有独特的业务流程时我们可以对BLL 层中相关类进行继承,然后重载相关操作。例如对数据表进行插入时我们可以写成:
  public static object Insert(Storage_StockOutTypeInfo entity)
  { object i=0;
  using (Storage_StockOutTypeDAL dal = new Storage_StockOutTypeDAL())
  { i=dal.Insert(entity); }}
  
  在业务流程中我经常需要对多个表单进行处理,所以在设计时我们可以实现主表与子表的同时操作,这时就需要通过事务来处理。因SqlHelper 在事务处理时只能一次连接数据库,因

而在定义事务时,我们必须传递同一个SqlConnection,为了完成相关功能我们定义了一个公共类Sql 类,在该类中我们提供静态方法完成各种特殊情况下的数据库操作,例如:
  using (TransactionScope scope = new TransactionScope()) //定义事务
  { using (SqlConnection connection = new DAL.Sql().CreateConnection())
  { object ID = 0;
  using (Storage_StockInDAL dal = new Storage_StockInDAL())
  { ID = dal.Insert(Storage_StockInInfo, connection); }
  using (Storage_StockInContentDAL dal = new Storage_StockInContentDAL())
  {
  dal.Insert(Storage_StockInContentInfos, connection);
  } }
  scope.Complete(); }
  从上面代码的实现中我们可以发现不管是什么对象和业务,我们只需要选择相关的数据表,然后根据表的数据字段就可以用相同的开发思想自动的生成不同表的数据层和业务层代码,

这样在我们的整个信息系统开发时只需设计出数据表和视图就可以通过运用这个软件框架自动生成对应信息系统的数据层和业务层骨架代码。
  
  3.2 界面层及实体类的设计
  界面层:主要实现人机交互和软件展示,负责提供一个完美的业务操作界面供用户操作相关业务,同时对用户业务操作结果进行展示。在界面层的设计时我们可以根据用户所选的不同

控件,通过GET 和SET 方法来完成实体类属性的操作,同时将实体类的值绑定到对应控件的属性上,以完成数据的自动获得与显示。因此在界面层代码生成时,只需要先选择对应的数据库

操作对象(多表时同时指定主从表及外键),然后给各数据字段指定相关显示控件,就可以运用前面的思想自动生成相关GET 和SET 操作代码。其次在信息系统软件的整个界面上通常会有

是:打印、查询、增加、删除、修改、审核、弃审等业务操作菜单及首页,上一页,下一页,最后一页等功能显示菜单,业务操作菜单操作完全相同,只是具体的业务实现有所不同,所在

现软件框架中,我们可以将业务操作菜单的框架实现,把业务流程作为接口函数在业务层去根据实际情况来实现。对于功能显示菜单,因为其功能完全相同所以其功能代码可以在框架中完

全实现。
  实体类(Model):是从数据库中的表抽象出来的对象类。在数据库管理系统中存储和操作的是数据库表及视图,而在信息系统软件中操作的是对象实例,所以软件框架设计时需要把

关系数据库中的表、视图进行对象实体化。在设计时将所选择的表、视图映射为实体类中的类对象,将表中的字段通过GET 和SET 方法将其映射为对象的属性,这样就可以把数据库和MIS

业务对象进行有机的结合,从而也形成了软件框架的实体类。例如:
  public class Storage_StockOutTypeInfo
  { private int _ID;
  public int ID
  { get{ return this._ID; }
  set{ this._ID = value; } }
  
  public Storage_StockOutTypeInfo(int iID,, string strRemark)
  { this._ID = iID;
  
  this._Remark = strRemark;
  } }
  
  
  4 结束语
  
  本文将三层架构思想引入到.NET 平台下信息系统软件框架的设计之中,运用C#语言实现了一个比较完善的三层软件框架程序。在信息系统软件开发时可以将实际业务需求和软件框架

进行有机的结合,运用软件框架程序来自动化生成信息系统的三层架构代码。从而降低系统的耦合性,增加系统的构件化水平,使系统各层之间分工明确,基础框架模块与扩展模块之间功

能定位明确。对软件系统来说这样不仅可以缩短开发周期,降低开发成本;同时也有利于信息系统软件走向模块标准化,使软件的测试与后期的维护和升级更加方。另外一方面,随着软件

框架代码的自动生成,开发人员可以将精力从繁琐的代码编写中解脱出来,而把主要时间放在软件的业务功能流程设计之中,这样设计出来的系统将更加符合客户的实际需求,提高了软件

开发的成功率,提升了整个信息系统的业务工作性能。软件复用;三层架构;软件框架;三层框架;c#三层框架

注:本文主要内容来源于网络,由程序员百味整理编辑

相关教程:
[C#源码实例]C#三层框架数据库设计实例教程下载

 

ASP搜索引擎蜘蛛爬行日志生成程序免费下载地址

要知道蜘蛛爬行方式,蜘蛛爬行记录,现在的这块蜘蛛爬行记录分析系统就可以详细的查看蜘蛛爬行,并可以及时的遥控爬行蜘蛛,再也不会出现百度蜘蛛不会爬行的问题了,怎么看蜘蛛爬行记录?  

搜索引擎蜘蛛爬行统计分析程序,ASP搜索引擎蜘蛛爬行日志生成程序免费下载地址,百度蜘蛛爬行,谷歌蜘蛛爬行程序,这是一款非常实用的seo软件,它可以统计所有的世界上所有的搜索引擎的爬行的地址。并记录所有的信息。

     只要把文件上传到网站跟目录.将本代码加入要统计的文件中(你的站点统计放那里这个就摆那里!),其中路径改为你的路径<!–#include file="域名/stat.asp" –>

如:<!–#include file="http://www.gxbobo.com/stat.asp" –>

蜘蛛访问后系统会生成日志文件放在/目录log/data/下。
察看日志请访问:http://域名/log/log.asp

余志国蜘蛛爬行统计分析程序下载>>

  • 软件大小: 4.34 KB
  • 浏览次数: 2587
  • 软件版本:
  • 软件语言: 简体中文
  • 软件评级: ★★★★★
  • 开 发 商:
  • 软件来源:
  • 本日下载: 3
  • 本月下载: 16

  • 软件类别: 国产软件
  • 软件授权: 免费版
  • 解压密码:
  • 运行平台: Win2000/WinXP/Win2003/
  • 更新时间: 2009年07月31日
  • 注册地址:
  • 演示地址:
  • 本周下载: 4533

asp蜘蛛爬行记录器下载地址:http://down.qiannao.com/space/file/bywei/-4e0a-4f20-5206-4eab/2010/1017/byweiseo/ASP-641c-7d22-5f15-64ce-8718-86db-722c-884c-65e5-5fd7-751f-6210-7a0b-5e8f.rar/.page

免费获取百味编程入门教程,进入软件编程世界

想要学习编程,就应该先把一下的编程入门教程看完,这是进入编程世界的基础,必须要牢记的常识!

当然首先就应该了解一下:


计算机包括两部分:硬件和软件

1.硬件
      1.输入设备 2.输出设备 3.中央处理器(CPU)4.存储器5.其他设备
1.CPU1.控制器   2.运算器 
        主频:内核工作时钟频率   外频:主板上总线工作频率 主频=外频x倍频                                                            {主频越音运算速度越快}    5400/7200                                                                    
        2.硬盘【容量8bt=lbgte       1024bte=lkb
               转度
 
       3.存储器 Rom随机访问存储器 Rom只读存储器
内存类型:SDRAM,DDR,和DDRⅡ(DDRⅡ读写速度快)
       4.显卡 128M 256M 512M 1G
       5.主板PCI插槽{白色} 显卡插槽{棕色}
2.软件
1.压缩软件 RAI ZIP
2.操作系统:管理和控制计算机系统中的硬件和软件资源和合理的组织计算机工作流程以方便用户使用的集合
操作系统分为两部分 1. 基于字符的界面(MS-DOS) 2.图形用户界面(Linux)
DOS命令:
cd..退回上级目录及子文件 cd\退回根目录 d:切换盘符 dir 显示子目录及文件 /p 显示信息满时会暂停显示 按任意键会看下一屏 /s 显示所有文件 /w宽列显示文件名/o 分类顺序显示文件
md新建目录
edit新建文件
copy复制文件
rd 删除目录
del删除目录下的一个或一组文件
move 移动文件
ren修改改名
cls清屏
ipconfig查看本机子网掩码 、默认网关、IP地址
ping测试网络是否通断
系统文件
系统文件的格式 FAT16 FAT 32   NTFS
文件扩展名
.doc Word的扩展名 .html 网页的扩展名 ..gif 和 .jpg图形图像 .ppt PowerPoint的扩展名 ..txt 记事本的扩展名 .exe 和 .com可执行程序的扩展名
子网掩码
A           255.0.0.0
B           255.255.0.0   
C           255.255.255.0
DNS服务器(域名解析系统)
作用:将域名映射成IP地址
收发Windows 自带电子邮件
必备的两个协议:
SMTP简单的邮件传输协议
POP3邮局协议

以上就是学习计算机编程入门教程,编程入门教程,java编程入门教程,电脑编程入门教程的基础,虽然简单但必须要牢记这些常识,希望你能在以后的编程之路上有更辉煌的发展!

2010年编程语言排行榜:Java排名下降,php编程排名稳定上升

 

 

   据报道,Java排名下降,php编程排名稳定上升,这份数据来自于最新的《2010年编程语言排名》,接下来就让我们一睹为快:与上个月相比,编程语言排行榜此次排名变化情况不大:前20 名中只有4款语言的位置发生变化,编程语言排名最靠前的依然是Java、C、PHP。

     其中Java的份额又有所减少,减至 17.348% ,而C语言却增至 16.602% ,上个月两者份额相差1.2%,而如今只相差0.7% 。而所有的编程语言中Objective-C和谷歌Go毫无疑问的成为上升势头最快的两款语言,二者目前分列12、13位。

2010年2月编程语言排行榜
Tiobe二月编程语言排行榜  

     TIOBE开发语言排行榜每月更新一次,依据的指数是基于世界范围内的资深软件工程师和第三方供应商,包括谷歌、微软等巨头公司均参与统计,其结果作为当前业内程序开发语言的流行使用程度的有效指标。
 
     十大编程语言演变统计曲线图


十大编程语言演变统计曲线图

 
     十大编程语言历史排名:


十大编程语言历史排名

 
     排名21-50编程语言


排名21-50编程语言

 
     近七年“年度最佳语言”奖得主:


近七年“年度最佳语言”奖得主

 
     动/静态语言使用率对比


动/静态语言使用率对比