CSDN博客

img swnuwangyun

公共资源管理与共享子系统——公共资源共享模块

发表于2005/1/1 21:58:00  1520人阅读

目 录

摘要……………………………………………………………………………………………1

一、引言………………………………………………………………………………………1

()开发公共资源管理与共享子系统的意义………………………………………………1

()应用技术简介……………………………………………………………………………2

1开发工具(Microsoft Visual Studio.netC#SQL SEVER)简介

2.关键技术ADO.NET的介绍

二、需求分析…………………………………………………………………………………4

三、系统设计…………………………………………………………………………………5

()体系结构…………………………………………………………………………………5

()公共资源共享模块详细设计……………………………………………………………7

()WebService层的界面和源代码………………………………………………………7

()对系统进行的软件方面的优化………………………………………………………14

()应用示例………………………………………………………………………………15

四、结论………………………………………………………………………………………15

五、致谢………………………………………………………………………………………15

六、主要参考文献与附录……………………………………………………………………16

()主要参考文献…………………………………………………………………………16

()附录……………………………………………………………………………………16

附录1:体系结构图…………………………………………………………………………16

附录2公共资源共享模块中学生信息的调用过程图……………………………………17

附录3公共资源共享模块中院系信息的调用过程图……………………………………18

 

 

 

 

 

 

 

公共资源管理与共享子系统

    ——公共资源共享模块

 

帅琳娜

西南师范大学计算机与信息科学学院,重庆 400715

 

摘要 公共资源管理与共享子系统提供了MyCollege.Net中各种应用系统最常使用的公共数据资源,应用系统可以通过网络受控的使用这些数据资源。不同的应用系统对于不同的资源类型及资源属性有不同的访问权限。这样各应用系统的开发将有很强的灵活性,开发者可以针对该系统未来的运行环境(如网络状况等)制定出相应的数据访问方案,在减少数据的冗余性,增强数据更新的同步性,数据使用的跨平台性等方面获得最好的效果。

Abstract The system of common resource management & share provides common data resource for kinds of application systems in Mycollege.Net. In control of qualification, application systems can use these data resource by network .Different application systems have their access qualifications for different resource types and resource attributions. So, programmers can flexibly develop various application systems and they also can design proper data access scenarios in according to the running environments in the future (e.g. the statements of network).Besides these advantages, our system can reduce data redundancy, enhance the synchronization of the data update and application systems can use data in different develop environments.

关键词 公共资源 管理 共享 信息 权限

 

一、引言

 

公共资源管理与共享系统模块是由我们小组两人共同努力完成的。其中公共资源管理模块,数据库设计及部分数据访问层的代码由郑亚芬完成;公共资源共享模块,权限控制及部分数据访问层的代码由帅琳娜完成。其它的工作由我们两人共同完成。

 

() 开发公共资源管理与共享子系统的意义

 

公共资源管理与共享子系统主要是对学生资料以及院系资料的管理。学校里各个管理系统都需要学生或院系的资料。比如说:图书馆管理系统,学校机房管理系统,学费收费管理系统等等。假如每个管理系统的数据库中都必须存储学生资料的话,那么同样的工作需要重复进行。这样不仅会造成资源的浪费,增加系统开发的难度;而且容易出现数据的冗余和数据访问的不一致。我们开发本系统就是为了解决上述这些问题。

本系统的开发是基于WebService模式的,目标是实现公共资源的集中管理,并通过网络实现公共资源在不同系统、不同平台下的共享。其它管理系统只需调用本系统提供的公共调用接口就可以直接访问所需的公共资源信息,没必要自己再设计此方面的数据库。这样一方面可以避免公共资源信息重复存储造成的资源浪费和数据冗余,另外也简化了其它管理系统的开发。

 

() 应用系统简介

 

.开发工具简介

   Microsoft Visual Studio.net 是全方位的开发平台可以使用它来开发一般的应用程序数据库应用程序硬件的驱动程序或是Web-based应用程序。Visual Studio.net 包含了Visual Basic,C/C++以及C#等不同的语言,开发者可以根据需要选择采用何种语言,当然它也提供了不同程序语言间的整合性功能,例如COM+。另外在Visual Studio.net 中还提供了可视化的开发环境,你可以快速完成应用程序的接口设计。对于本系统我们采用Visual Studio.net 中的C#作为开发语言。

C#是一种面向对象的程序设计语言,它的基本语法与C/C++相同,其将软件开发中的逻辑分成5大部分:商业外观层(BusinessFacade),商业规则层(BusinessRules),数据访问层(DataAccess),Model层等。这种逻辑上的划分使得软件的开发更加方便,并使语句和数据库的访问分开,而由商业规则层单独提出规则,便于软件的扩展和维护。

Microsoft SQL Sever是高性能的客户/服务器关系数据库管理系统。有许多重要的新特性,如透明分布式处理、简明管理、基于对象嵌入与链接技术(0LE)的程序设计接口,以及与Internet的集成等。选择Microsoft SQL Sever最重要的原因是由于它的可扩展性。因为Microsoft SQL Sever是基于多线程并行数据库内核,它能够发挥附加处理器的优势。在许多情况下,只有使用特定的并行数据库和操作系统才能获得对对称多处理技术的支持。当然它还具备很高的安全性,对用户资料进行有效的保护。

 

2.开发本系统所使用的关键技术

本系统的代码编写完全采用了面向对象化的编程思想,其中很多函数类都是封装和继承的。我们的整个系统MyCollege.Net采用了. Net技术作为主要的开发技术,而作为MyCollege.Net中的一个模块——公共资源管理与共享子系统,由其所实现的功能性质决定了其需要管理的数据量很大,提供给用户调用的数据也很多。为了保证用户能够高效准确的调用数据,我们采用了三层构建模式,并在数据访问层采用了ADO.NET技术。

ADO.NET技术的介绍

(1) ADO.NET的编程基础:

ADO.NET是在.NET Framework平台中负责数据存储的对象。

(2) 什么是ADO.NET技术及使用的必要性?

ADO.NETActive  Data  Objects2.6(ADO)的后续版本。ADO.NET的主要目的是可以在.NET Framework中更容易的创建分布式的数据共享的应用程序。ADO.NET建立在如XML的业界的基础之上,就像ADO,它提供了一个数据访问接口,以便和OLE DB兼容的数据源进行通信,如SQL ServerOracle。应用程序可以使用ADO.NET连接这些数据源,并检索,处理和更新数据。

可能大家已经学过ADO,那么在旧版本还能正常工作时,为什么还要学习新的数据访问对象模型呢?如果需要,也可以在NET.Framework中使用ADO,但需要为COM层方面付出一些性能上的代价,另外,NET.Framework并不支持COM Variant数据类型,这是ADO用于Recordset对象中的Field对象值的数据类型,也就是说,如果在.NET中使用ADO Recordset对象,为了访问数据,NETCLR就经常会对每个字段进行类型转换,如果要一直访问数据,进行这些类型转换就会造成太大的系统开销。

使用ADO.NET最重要的理由是可以获取一个真正断开连接的数据体系结构和XML的紧密集成和一个通用的数据表示法,可以将各种不同数据源中的数据组合起来,并优化了和数据库交互的功能,同样ADO.NETNET.Framework的其它部分紧密的集成在一起,并充分利用NET.Framework中所有对象的层结构及设计模式。ADO.NET建立在ADO的基础之上,而且为数据访问工具集提供了许多工具。

(3) ADO.NET的特点

(a) ADO.NET使用不连接的数据结构;

(b) 数据被缓存到数据集内;

(c) 数据集独立于数据源;

(d) 数据保持为XML

         数据需要从数据存储区移动到数据集以及从数据集移动到各种组件,在ADO.NET中,传统数据的格式是XML。类似地,如果需要保持数据,则将其存储为XML,如果有XML文件,则可以像使用任何数据源一样使用它,并从它创建数据集。

        实际上,在ADO.NETXML是数据的基本格式,ADO.NET数据API自动用数据集内的信息创建XML文件或流,并将它们发送给另一个组件,第二个组件可以调用类似的APIXML读回数据集。

(e) 使数据协议以XML为基础可提供一个多便利之处,XML是工业标准格式。这意味着你的应用程序数据组件可以与其他任何应用程序中其他任何组件交换数据,只要该组件理解为XML,许多应用程序被编写为可理解XML,为异类应用程序间交换提供空前高的水平。

XML是基于文本的,数据的XML表示形式不使用任何二进制信息,这使它可以通过任何协议发送,大多数防火墙将阻塞二进制信息,但通过将信息格式化为XML,组件仍可以方便的交换信息。对于大多数方案,不必知道XML便可以使用ADO.NET中的数据。ADO.NET自动根据需要将数据转换为XMLXML自动根据需要将数据转化为ADO.NET,便使用普通编程的方法与数据进行交互。

(f) 架构定义数据结构

尽管不必知道有关XML的任何事情便可以读写数据库和数据集,但也有一些事情使用XML恰是你追求的标准。不打算访问数据而要进行数据设计时的情况,也就是,在ADO.NET中使用元数据时,将直接使用XML

数据集以XML表示,数据集的结构使用XML架构进行定义,就像数据集包含的数据可以从XML加载和序列化为XML,数据集的结构也可以从XSD架构和序列化为XSD架构。

ADO.NET中的数据进行的大部分操作,不必深入钻研架构。通常,基于Visual Studio.NET工具将可以在可视化设计器中进行操作,并根据需要生成和更新架构。

 

二、需求分析

功能描述

公共资源管理与共享子系统要完成学生信息管理,院系信息管理及共享权限控制三大功能。

1、学生信息管理包括以下的内容:

(1) 学生信息:姓名,学号,性别,身份证号码,专业,院系,宿舍电话,宿舍地址,家庭电话,生源地,家庭住址等信息。

(2) 功能模块:

(a) 添加信息

(b) 修改信息

(c) 删除信息

(d) 查询信息

2、 院系信息管理包括以下内容:

(1) 院系信息:包含学院名,代号,创建时间等。所开设专业资料包含专业名,代号,创建时间等。

(2) 功能模块:

(a) 添加信息

(b) 修改信息

(c) 删除信息

(d) 查询信息

3、 访问权限控制:

该系统的所有数据存取功能都将通过网络调用接口向外部公开,因此可以说这是一个纯粹的开放式系统。不同的应用系统都可以使用其中的数据资源,但对于不同的管理系统,它们使用本系统的数据权限不一样。

(1) 权限控制属性包括:应用系统的USID,资源类型,属性,可读,可写。

(1) 功能模块:   

可读属性:只包含查询操作权限。由应用系统的USID和资源类型这两个属性来共同决定用户只能进行相应的查询功能,而且查询返回的相关资料类型与数量也是由应用系统的USID和资源类型来决定的。

可写属性:包含了查询,添加,删除,修改等操作权限。由应用系统的USID和资源类型这两个属性来共同决定用户具有以上相关操作的权限,而且也是根据应用系统的USID和资源类型来决定对哪些资料进行以上操作。

 

三、系统设计

() 体系结构

为了实现本系统的两个主要功能,我们采用了三层设计模式:用户界面层、中间层和物理数据库层。其中,中间层又分为:WebService层,商务外观层(Business Façade),商务逻辑层(Business Rules)和数据库访问层(DataAccess)。商务外观层和商务逻辑层都可以访问数据库访问层。商务外观层主要是针对用户的,而WebService层则是面向不同的应用系统。本子系统设计结构的构建参考了整个系统的体系结构,是Mycollege.Net 体系结构的一个简化。

(1) 结构图如附录1

(2) 根据结构图对各层描述如下:

(a)  商务外观层(BusinessFacade

它主要是封装应用系统中分散的商务逻辑,给用户表示层提供一个简洁的无状态的界面。它实际上是对需求在函数接口层的精确描述,即该层类中的函数完全表达了需求中涉及的功能。这样,一旦该层设计完成,表示层的开发者就可以利用该层进行独立的界面开发。

在我们这个子系统中,它主要面向调用公共数据资源管理模块的用户。当某个用户通过界面层对我们公共数据资源进行操作时,该模块首先把它传递给商务外观层,接着商务外观层就将该用户的需求传递给数据库访问模块,以便数据库访问模块执行相应的操作,然后商务外观层再对数据库访问模块返回的值做出响应,若操作成功则向用户返回成功信息,否则返回错误信息。

(b) 商务逻辑层(BusinessRules

BusinessRules层主要是表达商务规则。在本子系统模块中,它主要设置用户对数据资源共享时的权限规则。

(c) WebService模块

WebService模块是一个开放函数接口。它主要面向共享本子系统数据资源的应用系统。当某个应用系统通过WebService模块调用公共资源时,该模块就把应用系统的要求传递给商务逻辑层,商务逻辑层应用其规则首先判断它的访问权限,若权限允许,商务逻辑层就将该应用系统的要求传给数据库访问模块,以便数据库访问模块执行相应的操作。然后WebService模块再对数据库访问模块返回的值做出响应,若操作成功则向用户返回成功信息,否则返回错误信息。

(d) 数据库访问模块(DA)

数据库访问模块(DA) 的主要功能是直接对数据库执行各种操作,如向数据库中添加新的信息,删除数据库中的某个信息,按要求查询信息及修改数据库中的信息等,同时根据执行情况返回一个相应的值。

(e) 物理数据库

所有的公共资源都存储在物理数据库中。

()公共资源共享模块详细设计

1、公共资源共享模块中对学生数据资源进行调用的过程见附录2

根据附录2描述如下:

当外部系统要共享本系统中的学生信息时,它首先通过Internet调用WebService层中的相应函数接口。WebService这一模块就对它的函数调用接口进行判断。若通过,则把它的访问命令传递给商务逻辑层(BusinessRules)。商务逻辑层用其所有的规则对传递过来的相关信息进行判断,看外部系统是否具有共享所要求的学生信息的权限。如果没有此权限,则不允许它共享,并向返回一个权限不允许的信息;否则商务逻辑层把该外部系统的共享要求先传递给缓冲层,如果缓冲层中有所需的信息就直接返回这些信息,否则得按照公共资源管理模块中的访问过程访问数据库访问层,由它来执行具体的操作。当数据库访问层从系统数据库中获取到这些学生信息时,它便返回一个成功信息。最后, WebService模块再向外部系统做出一个相应的反馈。至此,本系统就实现了对学生数据资源共享的功能。

2、公共资源共享模块中对院系数据资源进行调用的过程见附录3

根据附录3描述如下:

当外部系统要共享本系统中的院系信息时,它首先通过Internet调用WebService层中的相应函数接口。WebService这一模块就对它的函数调用接口进行判断。若通过,则把它的访问命令传递给商务逻辑层(BusinessRules)。商务逻辑层用其所有的规则对传递过来的相关信息进行判断,看外部系统是否具有共享所要求的院系信息的权限。如果没有此权限,则不允许它共享,并向返回一个权限不允许的信息;否则商务逻辑层把该外部系统的共享要求先传递给缓冲层,如果缓冲层中有所需的信息就直接返回这些信息,否则得按照公共资源管理模块中的访问过程访问数据库访问层,由它来执行具体的操作。当数据库访问层从系统数据库中获取到这些院系信息时,它便返回一个成功信息。最后, WebService模块再向外部系统做出一个相应的反馈。至此,本系统就实现了对院系数据资源共享的功能。

 

() WebService层的界面和源代码

1、WebService层中StudentService的界面:

 

2WebService层中对院系数据资源共享的源代码如下

namespace WebService

{

[WebService(Namespace="http://mycollege.swnu.edu.cn/cresource/webservice")]

       /// <summary>

       /// DeptMajorService 的摘要说明。

       /// </summary>

       public class DeptMajorService : System.Web.Services.WebService

       {

              /// <summary>

              /// 当增加新学院时,调用该函数

              /// </summary>

              /// <param name="dept">学院名称</param>

              /// <returns>若该学院添加成功,则返回true ,否则返回false</returns>

              [WebMethod]

              public bool AddDept(string dept)

              {

                     if(0< new DataAccess.DeptMajors().AddDept(dept))

                            return true;

                     else return false;

              }

              /// <summary>

              /// 当某个学院增加新专业时,调用该函数

              /// </summary>

              /// <param name="major">专业名称</param>

              /// <param name="dept">学院名称</param>

              /// <if(0<s>向指定的学院中添加新专业,若添加成功,则返回true;否则返回false</if(0<s>

              [WebMethod]

              public bool AddMajor(string major,string dept)

              {

                     if(0< new DataAccess.DeptMajors().AddMajor(major,dept))

                            return true;

                     else return false;

              }

              /// <summary>

              /// 设置某学院的单个信息,可重复调用多次来对该学院的所有基本信息进行设置

              /// </summary>

              /// <param name="dept">学院名称</param>

              /// <param name="field">需要设置的单个信息名称</param>

              /// <param name="info">具体信息值</param>

              /// <if(0<s>若该单个信息设置成功,则返回true;否则返回false</if(0<s>

              [WebMethod]

              public bool SetDeptSingleInfo(string dept,string field,object info)

              {

              if(0< new DataAccess.DeptMajors().SetDeptSingleInfo(dept,field,info))

                            return true;

                     else return false;

              }

              /// <summary>

              /// 设置某专业的单个信息,可重复调用多次来对学生的所有基本信息进行设置

              /// </summary>

              /// <param name="major">专业名称</param>

              /// <param name="field">需要设置的单个信息名称</param>

              /// <param name="info">具体的信息值</param>

              /// <if(0<s>若该单个信息设置成功,则返回true;否则返回false</if(0<s>

              [WebMethod]

              public bool SetMajorSingleInfo(string major,string field,object info)

              {

              if(0< new DataAccess.DeptMajors().SetMajorSingleInfo(major,field,info))

                            return true;

                     else return false;

              }

              /// <summary>

              ///  删除一个学院,该学院的所有信息都将被删除,调用该函数应十分小心

              /// </summary>

              /// <param name="dept">学院名称</param>

              /// <if(0<s>若该学院删除成功,则返回true;否则返回false</if(0<s>

              [WebMethod]

              public bool RemoveDept(string dept)

              {

                     if(0< new DataAccess.DeptMajors().RemoveDept(dept))

                            return true;

                     else return false;

              }

              /// <summary>

              ///  删除一个专业,该专业的所有信息都将被删除,调用该函数应十分小心

              /// </summary>

              /// <param name="dept">专业名称</param>

              /// <if(0<s>若该专业删除成功,则返回true;否则返回false</if(0<s>

              [WebMethod]

              public bool RemoveMajor(string major)

              {

                     if(0< new DataAccess.DeptMajors().RemoveMajor(major))

                            return true;

                     else return false;

              }

              /// <summary>

              ///

              /// </summary>

              /// <paramref name=" major">学生的专业名称</param>

              /// <returns></returns>

              [WebMethod(CacheDuration=60)]

              public DataSet ListAllDepts()

              {    

                     return new DataAccess.DeptMajors().ListAllDepts();

              }

              /// <summary>

              /// 当需要批量检索某学院的所有专业信息时,调用该函数

              /// </summary>

              /// <param name="dept">学院名称</param>

              /// <returns>若学院存在,则显示该学院的所有专业信息</returns>

              [WebMethod]

              public DataSet ListAllMajorsInDept(string dept)

              {

                     return new DataAccess.DeptMajors().ListAllMajorsInDept(dept);

              }

       }

}

 

3WebService层中对学生数据资源共享的源代码如下:

namespace WebService

{

       [WebService(Namespace="http://mycollege.swnu.edu.cn/cresource/webservice")]

       /// <summary>

       /// StudentService 的摘要说明。

       /// </summary>

       public class StudentService : System.Web.Services.WebService

       {           

              #region Add

              /// <summary>

              ///   添加一个学生,若要对学生信息进行详细设置可调用后面的SetSingleInfo函数

              /// </summary>

              /// <param name="snumber">学生学号</param>

              /// <param name="sname">学生姓名</param>

              /// <param name="sex">学生性别</param>

              /// <param name="nation">学生的民族</param>

              /// <param name="major">学生的专业</param>

              /// <param name="grade">学生的年级</param>

              /// <returns>如果添加成功,返回true;否则返回false</returns>

              [WebMethod]

       public bool Add(string snumber,string sname,string sex,string nation,string major,int grade)

              {

if(0<newDataAccess.Students().Add(snumber,sname,sex,nation,major,grade))

                            return true;

                     else return false;

              }

              #endregion Add

 

              #region Remove

              /// <summary>

              ///   删除一个学生,该学生所有的信息都将被删除,调用该函数应十分小心

              /// </summary>

              /// <param name="snumber">学生的学号</param>

              /// <returns>如果删除成功,返回true;否则返回false</returns>

              [WebMethod]

              public bool Remove(string snumber)

              {

                     if(0< new DataAccess.Students().Remove(snumber) )

                            return true;

                     else return false;

              }

              #endregion Remove

 

              #region SetSingleInfo

              /// <summary>

              ///   设置学生的单个信息,可重复调用多次来对学生的所有基本信息进行设置

              /// </summary>

              /// <param name="snumber">学生学号</param>

              /// <param name="field">学生的某个属性,如学生的身份证号码,姓名,民族等</param>

              /// <param name="info">对应学生某个属性的值</param>

              /// <returns>若该信息设置成功,则返回true ,否则返回false </returns>

              [WebMethod]

              public bool SetSingleInfo(string snumber,string  field,object info)

              {

                     if(0< new DataAccess.Students().SetSingleInfo(snumber,field,info) )

                            return true;

                     else return false;

              }

              #endregion SetSingleInfo

 

              #region GetStudent

              /// <summary>

              ///   通过学号检索学生

              /// </summary>

              /// <param name="snumber">学生的学号</param>

              /// <returns>输入学生学号,若该学号存在,则显示学生的信息;否则返回错误信息</returns>

              [WebMethod]

              public DataSet GetStudentBySNumber(string snumber)

              {

                     return new DataAccess.Students().GetStudentBySNumber(snumber);

              }

              /// <summary>

              /// 通过姓名模糊检索学生

              /// </summary>

              /// <param name="sname">学生的姓名</param>

              /// <returns>输入学生的姓名,若该姓名存在,则显示所有叫做这个名字的学生的信息;否则返回错误信息</returns>

              [WebMethod]

              public DataSet GetStudentBySName(string sname)

              {

                     return new DataAccess.Students().GetStudentBySName(sname);

              }

              #endregion GetStudent

 

              #region ListStudents

              /// <summary>

              /// 按专业,年级批量检索

              /// </summary>

              /// <param name="major">专业名称</param>

              /// <param name="grade">年级</param>

              /// <returns>若输入的专业名称和年级存在,则显示所有相关学生的信息;否则返回错误信息</returns>

              [WebMethod]

              public DataSet ListStudentsByMajor(string major,int grade)

              {

                     return new DataAccess.Students().ListStudentsByMajor(major,grade);

              }

              /// <summary>

              /// 按学院,年级批量检索

              /// </summary>

              /// <param name="dept">学院名称</param>

              /// <param name="grade">年级</param>

              /// <returns>若输入的学院名称和年级存在,则显示所有相关学生的信息;否则返回错误信息</returns>

              [WebMethod]

              public DataSet ListStudentsByDept(string dept,int grade)

              {

                     return new DataAccess.Students().ListStudentsByDept(dept,grade);

              }

              /// <summary>

              /// 按年级批量检索

              /// </summary>

              /// <param name="grade">年级</param>

              /// <returns>若输入的年级存在,则显示所有相关学生的信息;否则返回错误信息</returns>

              [WebMethod]

              public DataSet ListAllStudentsByGrade(int grade)

              {

                     return new DataAccess.Students().ListAllStudentsByGrade(grade);

              }

              /// <summary>

              /// 批量检索整个学校的学生信息

              /// </summary>

              /// <returns>显示整个学校所有学生的信息</returns>

              [WebMethod]

              public DataSet ListStudentsInCollege()

              {

                     return new DataAccess.Students().ListAllStudentsInCollege();;

              }

              #endregion ListStudents}

}

 

() 对系统进行的软件方面的优化

由于本系统管理的信息量比较大,既有学生的信息也有院系的信息。所以网络传输量相当大,特别是应用系统要共享公共资源时,需要通过网络传输大量的信息。于是系统运行速度受到了限制。因此,我们必须对本系统进行优化,以便在一定程度上提高系统的运行速度,从而能够较迅速的响应用户和各个应用程序的要求。我们这里将从软件方面来优化本系统。

1、WebService模块中对数据进行缓存:

由于本系统的功能之一就是通过WebService向外界公布函数接口,以便各应用程序通过这些函数接口共享到所需的公共资源。若仅仅把公共资源存储在物理数据库SQL SERVER中,则每一次资源共享都需要通过网络把大量的信息从SQL SERVER传输到数据库访问层,再传输到商务逻辑层,WebService层,最后才到应用系统。这样,网络的交通量相当大,不仅速度缓慢,而且信息的可靠性也降低,信息极易丢失或出错。于是,对于WebService模块,我们将在内存中开辟一定量的存储空间,把共享频率高,且更新频率不高的数据存储在该缓存中。这样某些数据既在物理数据库中存储,又在缓存中存储。虽然增大了系统的开销,但是却在很大程度上提高了系统性能。因为,当应用系统需要共享某些信息时,不必直接去访问物理数据库,而是先查看WebService模块的缓存Cache中是否已有所需的信息,若有,则Cache命中,可共享Cache中的信息;否则,访问物理数据库。这样缩减了网络访问时间。为了提高Cache的访问优先级,我们可将Cache的优先权设置为高,并把它的时间范围设置为0。同时为了保持数据一致性,当数据库中的信息发生变动时,我们就根据数据库中的新信息对存储在Cache中信息进行及时修改,以达到数据一致性的要求。

2、  数据库访问层和物理数据库的连接方式有两种:离线连接和非离线连接。由于本系统的数据量较大,若采用非离线连接,则数据库访问层和物理数据库之间的连接非常多,此时,系统的运行速度很慢。所以我们采用离线连接,当需要访问数据库时,才动态建立数据库访问层和物理数据库之间的连接,访问完成后即断开连接。这样,网络的传输量大大减少,系统的运行速度也会相应提高。同时在数据库访问层中,使用DAB来连接物理数据库,这样也简化编程的复杂性。

() 应用示例

为了使用及测试 “公共资源管理和共享系统”的功能及性能,我们可以CResource的基础上开发一个学籍管理系统。因为我们整个系统的集成是基于WebService模式的,学籍管理系统除了要设置本地数据库存储其本地的数据外,还要利用CResource中所提供的StudentService服务对学生的基本信息进行管理。在学籍管理系统中,学生入学、转系、退学、休学、复学的日期时间等相关信息都存储在本地数据库中,而学生最基本的信息(姓名,性别,民族等)的存储检索都要通过CResource中的StudentService服务。从整体上看学籍管理系统的数据有两个来源:一个是本地数据库,另一个是通过WebService技术从CResource中集成进来的。

 

四、结论

本系统模块的所有开发过程均是根据软件工程的思想和要求进行的,需求分析、系统设计、数据库设计和编码等方面都是严格按照客观分析,认真设计的宗旨来完成的。

本系统是在Microsoft Visual Studio.net的环境下,采用了基于.NETC#编程语言进行开发的,同时采用了SQL SERVER 2000数据库来对数据库进行开发与设计。

由于时间关系,我们只实现了完整的数据库及公共资源共享这一块,并与其它子系统成功集成。公共资源管理模块及公共资源共享模块中的权限管理逻辑层尚未实现。

通过这次毕业设计,我们认识到了理论与实践相结合的重要性,并学会了应用新的技术去解决问题,比如我们的开发环境和编程语言在以前的学习中从未接触过,但通过查阅资料和编程实践,我们现在已经对.net的各种性能及C#的使用技巧有了一定的了解。除此之外,我们还体会到了良好的团队精神对工作的有效运作起到了一个关键性作用。这些都将使我们在以后的学习和工作中受益。

 

 

五、致谢

本次毕业设计能够顺利完成离不开我们指导老师邹显春老师的指导和帮助,卢心红老师、陈武老师、闻晓老师、李运刚老师在此过程中也给予了极大的帮助,对他们的帮助表示衷心的感谢。还有小组所有成员对我的大力支持,在此对他们表示衷心的感谢!

六、主要参考文献与附录

 

() 主要参考文献

 

[1]  郭胜.C#.NET程序设计清华大学出版社,2002

[2]   嘉木工作室.C#编程思想 机械工业出版社2003

[3]  凡若切提..NET数据服务C#高级编程 清华大学出版社2002

[4]  巴韦尔.VB.NET高级编程  清华大学出版社2002

[5]   张莉.SQL Server数据库原理及应用教程  ,清华大学出版社,2003

[6]   闪四清.SQL Server2000数据库管理  北京希望电子出版社2002

[7]   梁方明.SQL Server2000数据库编程  北京希望电子出版社2002

 

() 附录

附录1:体系结构图

 

附录2公共资源共享模块中学生信息的调用过程图

 

附录3公共资源共享模块中院系信息的调用过程图

 

 

0 0

相关博文

我的热门文章

img
取 消
img