ASP.NET精品课

2024-07-23

ASP.NET精品课(精选9篇)

ASP.NET精品课 第1篇

《ASP.NET程序设计》课程是我院软件技术专业的主干与核心课程,是一门动手实践能力要求高、与实际工作岗位联系紧密的课程,目前软件企业对ASP.NET程序员的需求很大,也是我院软件专业学生的主要就业方向。因此,该课程对于实现专业的培养目标、增强学生的就业竞争力具有非常重要的作用,是检验专业教学成果的重要课程。我院于2006年把“ASP.NET程序设计”作为精品课程进行建设,经过多年的建设,取得了较好的效果,以下是我们在建设“ASP.NET程序设计”精品课程中的一些研究与实践。

1 树立符合高职特点的教学理念

针对高职教学的特点,《ASP.NET程序设计》精品课程团队坚持“能力为本位”、“以学生为中心”、“就业导向”、“够用为度”的教育理念,深化课程的教学改革。

1.1 能力为本位,重视素质培养

与传统的重理论灌输、知识传授,轻能力、素质养成的观念不同,我们强调通用素质,尤其是能力素质的培养,在教学内容的安排上,不是一味的多传授知识,而注意学生的思维能力、动手编程能力的培养;通过项目培养团队精神,通过让学生对项目的宣讲提高表达能力,通过严格考勤强化守时习惯。

1.2 以学生为中心

上课不是对内容的灌输,而是要启发学生,注重引导,更多的是提出问题让学生去思考,去解决;教师的主要作用是“导”,学生是学习的主体。注意维护与激发学生的学习兴趣,使学生保持主动探索问题的积极性。

1.3 就业导向

软件行业处于不断的变化之中,而ASP.NET技术也已经历了很大的变化,尤其目前已从ASP.NET1.1升级为ASP.NET2.0,ASP NET2.0成为软件企业WEB开发的主流技术,原先基于ASP.NET1.1的课程内容必须紧跟技术潮流,面向就业岗位要求来作大幅度的修改。

1.4 够用为度

教学不必面面俱到,对知识作全方位、系统化的讲解,因为这样的方式,不符合高职学生的思维习惯;要更多的采用项目、案例的方式来讲解内容。把内容结合在项目中,讲授项目中用到的内容。

2 基于“项目驱动,案例教学”重构内容体系

在传统的ASP.NET的教学中,以知识体系为主线来按排教学内容,相应的,课堂讲解采用“讲知识—例题讲解—习题”的方式,教学以教师“教”为主导,学生在教师的指导下完成相应内容的学习,从而达到教学目标,学生基本上处于被动的接受状态,主动性不强。学生普遍感到学习目标不明确;理论记不住;实践不知如何动手,从何处着手;课程难学难懂甚至不懂;教师也教的很累。

针对这种情况,我们以“项目驱动,案例教学”重构课程,项目驱动是指专业课程以项目开发作为教学总目标,项目可划分为若干个典型案例,不同教学阶段的项目功能和难度都是不同的;案例教学是指课程教学中以典型案例划分单元教学内容,以案例引导学生对知识点的掌握。让学生在教中学,在学中做,在做中学,实行“理论与实践的一体化”。

在项目的选择上,考虑到学生大多数接触过网上购物,尤其是有很多的网上书店,如当当网,学生对这类电子商务网站比较容易接受,也比较有兴趣,因此我们选择“网上书店”作为教学项目,课程内容围绕“网上书店”展开,把项目分解各功能模块,并根据学生的认知规律从易到难进行序化,分解出15个教学单元,每个教学单元4课时,各教学单元具体如下:

1)搭建ASP.NET开发环境;

2)注册页面的设计;

3)注册页面的验证;

4)注册页面的数据库操作;

5)显示图书信息模块;

6)用户登录页面;

7)单元实践1:会员管理系统;

8)图书分类;

9)图书展示模块;

10)图书管理模块;

11)图书上架模块;

12)单元实践2:在线投票系统;

13)内置对象;

14)图形网站计数器;

15)网上书店外观设计。

3 全面贯彻“理论实践一体化”教学模式。

《ASP.NET程序设计》课程采用“理论实践一体化”的教学模式,所有课都在机房上课,机房也都配置了投影仪;教师介绍完理论知识,学生马上就可以进行动手实践,这样理论教学和实践教学可以有机的融合,实现“教、学、做”三位一体。这种教学模式相比传统多媒体教室上一次理论课,紧接着一次上机实验课,在教学效果有很明显的提高。在“理论实践一体化”的教学模式下,根据程序设计类课程的特点,我们总结和提炼了“MCLA教学法”(如图1所示),即每个教学单元的教学按照“情景展示”、“知识讲解”、“教师演示--学生模仿”、“指导实践”和“总结提高”的环节展开,各环节的作用如下:

1)情景展示。通过真实项目场景,展示要实现的功能,使学生明确本次教学的目标。

2)知识讲解。围绕着实现目标所需要的知识,教师采用一些简短的例子进行讲解。

3)教师演示。在讲解了所需知识的基础上,教师即时动手来编程实现案例,而不是对现成写好案例讲解,在这过程中,学生可以在自己的机器上模仿练习;这种方式,不仅讲解了知识的运用,而且潜移默化的向学生展示解决问题的思路与方法。

4)指导实践。教师给学生一个练习案例,学生综合应用本教学单元的知识点和技能点来完成,教师给予指导,这环节的要点是练习案例与讲解的案例要有相似性与差异性,所谓相似性,就是指实现练习案例所需的知识与讲解的案例基本相同,以保证学生能够变通实现;差异性指练习案例要有所变化,使学生有一种新鲜感与挑战感,在实现过程中,提高对所学知识运用能力。

5)总结提高。通过师生共同总结实现知识和技能的提升。

4 改革考核评价模式

课程的评价模式采用“675”模式,6是指6C(C是指CombineWith),即6个方面相结合综合评价学生的学习情况。6C是指:形成性评价与终结性评价相结合;理论与实践相结合;技能训练与态度习惯相结合;笔试、口试、操作相结合;校内教师评价与企业评价相结合;学生之间他评、自评互评相结合。7是指7个评价项目,包括学习态度、组织纪律、课堂实践、单元实践、期中考试(笔试)、期末考试(笔试)和期末考试(项目);5是指评价结果要符合“五性”:有效性(Valid)、可靠性(Reliable)、一致性(Consistent)、公平性(Fair)、客观性(Objectivity)。《ASP.NET程序设计》课程的评价表见表1。

5 课程建设成效

经过多年的建设,《ASP.NET程序设计》课程的教学质量得到充分的保障,能够很好的达到预定的教学目标。具体的成效有:组建了一支高水平的,以中、青年教师为主的“双师型”课程团队;有丰富的教学资源,包括理论及实践教学大纲、电子教案、教师指导书、实验实训指导书、网络教程、试卷库和试题库等;出版了3本教材,其中两本被评为教育部精品教材;优越的实践条件,目前有10个设备先进的实训室,同时可以容纳学生400人,能充分保证ASP.NET课程以“理论实践一体化”的方式组织教学。

摘要:该文介绍《ASP.NET程序设计》精品课程的建设情况,着重介绍了内容体系的重构、教学模式创新及课程的考核评价。

关键词:精品课程,ASP.NET程序设计,教学方法

参考文献

[1]张丽萍,刘东升.程序设计精品课程建设的研究与实践[J].内蒙古师范大学学报,2007(1).

ASP.NET三层构架解析 第2篇

关键词:ASP.NET;表示层;业务逻辑层;数据访问层

中图分类号:TP311 文献标识码:A 文章编号:1674-1161(2016)03-0038-02

1 ASP.NET三层构架概述

ASP.NET三层构架分别是表示层、业务逻辑层和数据访问层。表示层(USL)以WEB,WINFORM方式表示。如果逻辑层相当强大和完善,无论表现层如何定义和更改,逻辑层都能提供完善的服务。业务逻辑层(BLL)主要是针对具体问题的操作,也可以理解成对数据层操作,对数据业务进行逻辑处理。如果说数据层是积木,则逻辑层就是对积木进行搭建。数据访问层(DAL)主要是原始数据(数据库或者文本文件等存放数据形式)操作层,而不是指原始数据,为业务逻辑层或表示层提供数据服务。

简单的三层结构程序一般包括DAL,BLL,WEB,Model几个项目,它们的相互引用关系为:WEB引用BLL,Model;BLL引用DAL,Model;DAL引用Model;Model无引用。

为使用户实现简单管理,应先建立一个空白解决方案,然后添加如下项目及文:1) 添加ASP..NET Web Application项目,命名为UI,新建Web Form类型文件User.aspx(含User.aspx.cs)。2) 添加ClassLibrary项目,命名为BLL,新建Class类型文件UserBLL.cs。3) 添加ClassLibrary项目,命名为DAL,新建Class类型文件UserDAL.cs。添加SQLHelper引用(一般用自己写的数据访问类DataAccessHelper)。4) 添加ClassLibrary项目,命名为Model,新建Class类型文件UserModel.cs。5) 添加ClassLibrary项目,命名为IDAL,新建Interface类型文件IUserDAL.cs 6,添加ClassLibrary项目,并且命名为ClassFactory。

2 文件在各层的应用方法

2.1 User.aspx文件和User.aspx.cs文件都属于表现层

User.aspx更容易理解,因为它就是显示页面。一般情况下,User.aspx.cs不应在表现层,而应该属于业务逻辑层。但如果不进行具体分层,User.aspx.cs处理业务归属逻辑层乃至操作数据库都可以;但如果进行分层,则应在分层结构中,User.aspx.cs只会处置与显示有关的部分,其它内容不应触及。

若要实现用列表方式显示用户的功能,则提取信息工作由BLL完成。UI(本例中是User.aspx.cs)调用BLL得到UserInfo后,通过代码绑定到User.aspx数据控件上,实现列表表现。在此过程中,User.aspx.cs对UI不起主要作用,只是用来传递数据。由于现实编码大多采用此方法实现,因此感觉User.aspx.cs不应该属于UI,而是应该并入BLL负责逻辑处理。这就提出一个新要求,在每个用户前面加一个相应图标,直接表示出用户性别,其中不满18岁的用户用儿童图标表示。这个需求的实现,需要User.aspx.cs来完成。

2.2 NewBLL.cs添加方式

public IList GetUsers()public UserInfo GetUser(int UserId):返回指定用户的具体信息public bool AddUser(UserInfo User):新增用户信息public bool ChangeUser(UserInfo User):更新用户信息public void RemoveUser(int UserId):移除用户信息后,此文件属于营业逻辑层,专门用来处置与营业逻辑有关的操纵。

有很多人把表示层传过来的数据转发到数据层,说明项目较为简单或项目本身没有与业务紧密结合,导致业务层没有操作,只起到转发作用。但这不代表营业层无关紧要,随着项目增大或业务关系复杂化,业务层的作用将凸显。此外,很多人容易把数据操作代码划分到业务层,并且把数据库作为数据访问层,造成错误。例如,有些人觉得BLL层意义不大,将DAL的数据提上来处未作任何处理就转发给UI。BLL层SelectUser(UserInfo userInfo)根据传入的username或email得到用户详细信息;IsExist(UserInfo userInfo)判断指定的username或email是否存在;然后,DAL相应提供方法供BLL调用SelectUser(UserInfo userInfo)IsExist(UserInfo userInfo),这样BLL确实只起传递作用。但如果这样做,BLL.IsExist(Userinfo userinfo) { UerInfo user = DAL.SelectUser(User);return (userInfo.Id != null); },DAL无法实现IsExist()方法,BLL中有逻辑处理代码。

2.3 UserModel.cs实体

Model在三层架构中的位置和int,string等变量一样,只用于数据存储,但它存储比较复杂的数据。所以,若项目中都是比较简单的对象,则不用model,直接传递参数也可以做三层架构。

现举例说明model在各层参数传递中的作用。在各层间传递参数时,可以设置为AddUser(userId,userName,userPassword,…,),也可以设置为AddUser(userInfo),但第二种方法更好。

应用model和普通变量时,SelectUser(int UserId)SelectUserByName(string username)SelectUserByName(string username,string password)SelectUserByEmail(string email)SelectUserByEmail(string email,string password),可以概括为SelectUser(userId) SelectUser(user)。这里用user的Model工具包括username,password,email这3个参数的4种组合模式。UserId也可以合并到user中,但项目中别的BLL都实现id参数接口,故也留下这项。

传入userInfo的处理,需要依照前后次序用详细代码决定。UserDALcs public IList SelectUsers():返回全部的用户信息列表public UserInfo SelectUser(int UserId):返回指定用户的信息 public bool InsertUser(UserInfo User):新增用户信息public bool UpdateUser(UserInfo User):更新用户信息public void DeleteUser(int UserId):移除用户信息 。

许多人对数据访问层比较迷糊:有一部分人不清楚定义,认为数据库是访问层,其实DAL是数据访问层,而不是数据存储层,故数据库不是这一层的;也有人把SQLHelper(或其同类作用组件)作为数据访问层。SQLHelper的作用是削减重复性编码,提高编码效率,所以在注重效率或利用非数据库数据源时,可以抛弃SQLHelper。和数据源操作相对应的代码,属于数据访问层。

ASP.NET精品课 第3篇

如何创建精品课程, 如何能达到灵活设置, 使得每一门课程都能在平台上得以实现呢?本文主要简述这类精品课程网站开发过程、系统的设计方法以及主要功能模块的设计等。

一、精品课程网站的系统设计

精品课程网站针对的主要用户是学生、教师和管理员。学生是网站的使用者, 要把课程的所有学习资料体现在网站中, 方便学生在线学习、下载课件。教师和管理员是网站的创建者, 负责整个课程的信息整理以及网站的搭建。

整个网站分为两部分, 前台部分和后台管理部分。前台主要是学生进行浏览、下载课程资源, 也可以在线测试和在线交流。后台主要是教师或管理员对本课程进行信息的删除、修改和添加、上传各种教学资源、进行试题的添加、删除和修改、批改作业以及打分等相关功能。本系统的功能结构如图1所示。

二、精品课程网站的模块设计

本网站的教学模块共分为以下九个部分, 即“主讲教师”、“课程描述”、“课程规划”、“教学资源”、“模拟试题”、“网上答疑”、“实训案例”、“技术文章”和“后台管理”, 其中“后台管理”部分在“模拟试题”中有“管理员入口”可以进入, 是一个单独的系统。

1) 主讲教师。本模块主要介绍了本课程的主讲教师的学历情况、职称状况、专业特长、取得的成果等内容。

2) 课程描述。本模块主要由“课程简介”、“课程特色”、“方法手段”等三部分组成。

3) 课程规划。本模块主要由“教学大纲”、“实训大纲”、“考核要求”、“授课计划”等4部分组成。

4) 教学资源。本模块主要由“电子教案”、“实训指导”等两部分组成。

5) 模拟试题。本模块主要有“注册信息”、“在线练习”、“在线考试”、“成绩查询”、“管理员入口”组成。试题包括判断题、选择题和简答题。

6) 网上答疑。本模块主要有“添加留言”、“查看留言”。

7) 实训案例。本模块主要有“任务书”、“实训模板”、“学生作品”。

8) 技术文章。显示“C#语言”和“ASP.ne t”的技术文章。

9) 后台管理。负责整个网站的管理工作。

以上所有模块都是可以更改的, 教师可以根据自己课程的需求进行添加修改。

三、精品课程网站的技术实现

本网站主要采用ASP.net开发, 数据库采用SQLServer 2005, 开发平台为Visual Studio 2008, 采用三层架构模式设计, 其特点是可以分模块组织代码, 让代码更容易理解, 还有一个优点就是便于修改、扩充。

(一) 公共设计类

本系统的公共类主要有三个, 分别是Sql.cs (数据库操作类) 、We b.cs (页面访问帮助类) 和ge t.cs (获取验证码类) 。其中数据库操作类主要包括数据库的链接、删除、添加、修改等操作。页面访问帮助类主要包括页面的提示信息。获取验证码类主要负责生成动态验证码。

(二) 数据库设计

在软件开发过程中, 数据库设计是否合理会直接影响到项目的开发, 如果设计不合理, 会给开发和调试增加难度, 本网站采用的数据库是SQLServer2005, 根据整个网站的需求, 设计8张表, 分别是adm in (管理员表) 、de partm e nt (系部表) 、cours e (课程信息表) 、file (课程资料表) 、danxuan (单选题表) 、panduan (判断题表) 、que stion (简答题表) 、re ply (答疑表) 。

四、结论

依据以上讲述, 目前, 已经开发省级精品课程1门, 院级精品课程3门, 所有精品课程都在校园网上运行, 总体运行情况良好。从各方反应的效果看, 精品课程的建设主要还是在于教师对这门课的运用理解上, 除了要有丰富的教学资源, 还要有良好的教学设计, 从而激发学生的学习兴趣, 更好的为课堂教学服务。

参考文献

[1]程琪.ASP.net动态网站开发项目化教程[M].北京:清华大学出版社.

[2]王凯等.基于ASP.net精品课程网站设计与开发[J].数字技术与应用.

ASP.NET精品课 第4篇

精品课程建设是高等学校教学质量与教学改革工程的重要组成部分。《ASP.NET (C#) 程序设计》是计算机应用专业职业技能核心课程。随着计算机技术和网络互联的发展, 虚拟企业联盟、移动办公等应用领域取得长足的进步。微软配合以上技术的发展顺应当今软件工业分布式计算、面向组件、企业级应用、软件服务化、以Web为中心等大趋势推出的.NET框架是软件开发的主流技术, 掌握ASP.NET基本编程技术是当今程序员和网络应用系统维护人员必备的职业技能之一。本文结合省级精品课程建设的实践对如何建设精品课程进行论述和探讨。

2课程设置

2.1课程性质与作用

本课程是计算机应用专业职业技能核心课程, 从学习领域的的角度讲课程定位在分布式系统开发过程的学习。学生在学习了面向过程的基本设计思想和面向对象的程序设计方法后, 重点是通过以企业内部物流管理系统为例的一个工程实践, 采用基于软件产品开发过程的教学设计, 按照软件产品开发的规范与流程, 培养学生的技术应用能力和岗位职业能力。

基本定位参考依据如图1, 课程定位在真实项目+专业教室阶段。

2.2课程设计的理念与思路

几年来我们主动适应区域和行业经济发展的需求, 以就业为导向, 与企业进行了实质性接触。通过召开专业建设研讨会等多种形式, 根据技术领域和职业岗位 (群) 的职业能力要求, 参照相关的职业资格标准和实践性专家的建议, 建立突出职业能力培养的课程标准, 规范课程教学的基本要求, 提高课程教学质量。在课程设计过程中邀请北大青鸟华光等企业行业专家全程参与。组织往届毕业生中召开“实践专家访谈会”, 有针对性地征求意见, 确定典型的工作任务、学习领域, 教学方法以及考核方式。通过把以上理念渗透到课程内容设计过程中, 根据行业企业发展需要和完成职业岗位实际工作任务所需要的知识、能力、素质要求, 选取教学内容, 并结合职业资格认证和职业综合素质培养的要求, 保证人才培养过程的实践性、开放性和职业性, 同时为学生可持续发展奠定良好的基础, 取得了较好的效果。

3教学内容

3.1教学内容的针对性与适用性

通过把以上理念渗透到课程内容设计过程中, 根据行业企业发展需要和完成职业岗位实际工作任务所需要的知识、能力、素质要求, 充分考虑针对性和适用性情况选取教学内容, 并将职业资格认证和职业综合素质培养的要求贯穿其中, 保证人才培养过程的实践性、开放性和职业性, 同时为学生可持续发展奠定良好的基础, 取得了较好的效果。

宏观上根据我们专业积累和开发经验确定真实的工作任务。我们有针对性地选取了潍坊生建集团企业内部物流管理系统、山东凯马汽车供应链管理系统等系统为例。这些系统都是采用ASP.NET开发实现, 其次都是该课程的主讲教师主持或参与设计, 项目运行情况良好, 分别获得过山东省计算机应用优秀成果奖和潍坊市科技进步奖。开发单位对教学过程提供鼎力支持。学生学习过程中可以根据自己的经验和知识积累选择合适的项目作为学习和进一步开发的对象。学生通过学习能模拟开发以上子系统或局部模块。

微观上通过对企业的调研发现学生主要技能培养应该侧重以下几个方面:

理解.NETFrameWork2.0相关概念, 能够在VS.NET工具下熟练编码, 熟练使用C#语言, 对ADO.NET、XML/Web Service、ASP.NET相关技术能够熟练应用;理解并且能够按照界面/业务逻辑/数据访问三层结构框架来组织代码和进行开发。宏观上说就是教会学生最新的、社会正在使用的微软技术。在职业素质方面, 通过项目组角色分配工, 明确工作思路和责任等多种训练手段, 培养学生的团队精神和沟通能力, 具备良好的职业习惯, 具备“软技能”。

3.2教学内容的组织与安排

教学组织过程中我们充分遵循学生职业能力培养的基本规律, 以真实工作任务及其工作过程为依据整合、序化学内容, 科学设计学习性工作任务, 教、学、做结合, 理论与实践一体化, 实训、实习等教学环节设计合理, 教学内容如表1。

3.3教学内容的具体表现形式

经过近几年的建设, 课程组建设了表现形式一整套教学资源, 包括纸质教材讲义或校本教材《基于工作过程的C#实训教程》、电子教案、习题集、工学结合的实训系统、学生优秀作品库和基于Internet的网络远程教学系统等。具体包括:电子教案、优秀作品、习题集、试题库与实践项目支持资源、在线测试系统、IT职业资格认证。在网络平台的支持下, 突出辅助教学与技术交流作用, 努力打造“立体化”教材, 支持在线答疑, 自测考试, 方便学生自学、自测。

4教学方法与手段

在教学模式的设计上本课程教学设计根据大力推行工学结合, 突出实践能力培养, 改革人才培养模式的要求, 采用企业引进项目或教师科技服务项目, 注重教学过程的实践性、开放性和职业性, 进行完全的基于工作过程的课程教学, 借鉴教学工厂教学模式完成全过程。我们的主要做法是在宏观课程教学中, 遵循企业开发实际项目的要求, 将具有代表性的工程项目贯穿整个教学过程, 采用学中做、做中学, 探索理实一体化教学;采用“多元化”能力评测代替传统的考试;以比赛促实践, 以比赛促就业。在教学过程中持续开展旨在考察学生的动手能力, 提高学生的就业竞争力的竞赛, 培育成就感和荣誉感, 更好地为就业做准备;紧密结合山东半岛软件外包企业的特点, 有针对性的开设专业英语、日语、韩语强化课程, 为学有余力的学生拓展软件外包岗位的技能。在多种教学方法的运用上采用自主学习、“现场讨论法”、学生演示法、教师演示讲练结合、任务驱动;基于软件企业项目实践。在现代教学技术手段的应用方面采用的现代教育技术手段主要有:精心设计教学课件, 通过提供现实工作任务, 激发学生学习兴趣;充分利用多媒体教学系统;利用网络将课堂教学延伸到课外;教师运用远程在线指导。

5师资队伍

经过几年的培养、引进, 本课程教学团队的职称、学历、年龄结构、专业知识结构及专任教师与来自企业的兼职教师的比例合理, 是一支教学能力强, 教师专业素质高, 综合素质优良的“双师型”教师团体。

6实践条件建设

6.1校内实训条件

加强实训、实习基地建设是彰显办学特色、提高教学质量的重点。我们在近几年的教学过程中积极探索校内生产性实训基地建设组合新模式要充分利用现代信息技术, 开发虚拟工厂、进行虚拟实验, 有利地促进了课程建设。随时可以根据本课程的学习需要搭建虚拟企业平台, 更好地完成教学任务。利用现代信息技术开发多媒体课件, 通过搭建起多维、动态、活跃、自主的课程训练平台, 使学生的主动性、积极性和创造性得以充分调动。

6.2校外实习环境

积极建设校外实习基地, 充分利用企业资源, 努力实现“互设共建”的, 按照企业需要开展学生的职业教育, 与企业合作开展应用研究和技术开发, 使学校在校企合作中创新人才培养模式。先后与潍坊青鸟华光、用友软件潍坊分公司、山东新北海、宅急送、山东凯马汽车等11家企业建立良好的合作关系, 成为签约的校外实训基地。

7教学效果

为了更好的做好课程建设工作, 我们组织校内督导组、校外同行、用人单位专家、学生等四个环节进行综合评价, 着重考察授课教师教学过程的组织、教材的处理、理论联系实际及工学结合教学新模式的应用等方面情况。普遍反映毕业生素质好, 尤其实践动手能力与过去相比明显提高, 毕业生的就业质量显著提高, 学生参加各项大赛均取得了好成绩。

8特色与创新

8.1基于完整工作过程的课程开发与教学特色

我们结合区域和行业岗位需求选择山东凯马汽车供应链管理系等分布式管理系统为例。实例具有较强的课程代表性和针对性。在实训中心采用软件工厂训练模式, 真实项目、真实环境, 企业项目经理全程指导, 遇到问题到企业实际流程中咨询解决。把实验、实训、实习作为三个关键环节, 在不同环境中进行。人才培养方案的课程体系结构和课程内容以及教学模式等都发生了“颠覆性”的变化, 从系统论的角度重新认识了高职课程的教学设计问题。

8.2双导师制的技能培养模式

针对计算机应用专业人才培养过程的特殊性, 我们实行高职学生教学过程导师制。以软件开发工作任务或适用领域为分类依据, 以技术应用为目标, 找到老师和学生的结合点和共同的兴趣点, 从二年级开始确定指导教师。指导教师在思想上、知识上、操作技能上给学生以具体指导, 建立一种真正的“师徒式”的学习关系, 培养技术拔尖的学生。让主动学生走出去接触师傅、接触职业、接触社会, 加强学生的生产实习和社会实践。

9结语

精品课程是具有一流教师队伍、一流教学内容、一流教学方法、一流教材、一流教学管理等特点的示范性课程。精品课程建设对高职专业或专业群建设起着积极地促进作用, 是一项事半功倍的质量工程举措。

参考文献

[1]姜大源.职业教育学基本问题的思考 (一) [J].职业技术教育, 2006 (1) :12-15.

[2]温涛, 等.教育部高等院校高职高专计算机类专业目录调整调研报告[J].计算机教育, 2009 (9) .

ASP.NET精品课 第5篇

1 ASP和ASP.NET的相似点

对于ASP和ASP.NET来说, 两者都是动态网页技术, 在使用时的主要功能基本是相似的, 但ASP.NET是ASP的一种新型开发, 增加了一些新型的功能, 从而更好地满足人们的工作生活需要。ASP技术是开发人员针对Windows NT和Web而编写的一种动态Web应用程序, 其一出现就引起了网页开发人员的关注, 并对其进行了重点掌握, 逐渐成为网页开发中的一种重要工具。同理, ASP.NET也能够实现对Web网页的制作, 两种服务端的动态网页技术具有一定的相似性。

首先, 两者在进行动态网页的制作时, 都能实现对页面布局的设计, 且能够将页面中的内容进行分离, 在进行网页制作的过程中, 都是通过HTML页面将需要解释的代码插入到服务器中, 实现对页面的制作。其次, 两者的执行效率都比CGI技术要高, 对于CGI技术, 其在接收了用户的请求后, 需要先将请求发送给独立的进程, 然后通过进程的运行进行工作。但这种方式所需要占用的Web资源较多, 且随着运行程序的增多, 其运行速率也在逐渐下降。而对于ASP和ASP.NET来说, 两者都是通过统一的线程方式运行, 且其运行的过程中, 数据交换是在Web内部进行的, 这就大大提高了数据传输和交换的速率, 且在对程序进行修改时, 这两种方式相对于Web来说更加方便。最后, 两者都能够通过其他的组件获得自身运行所需要的数据, 对于ASP来说, 其主要是靠ADO来获取外部的数据信息, 而ASP.NET则是依靠ADO和组件的结合获得所需要的外部数据信息。还有两者都能够在SSI系统上执行等, 这些相似点表明, 在某些方面两种动态网页技术能够实现通用[1]。

2 ASP和ASP.NET的不同点

2.1 工作原理的不同

对于这两种不同的动态网页技术, 其工作原理相差非常大, 当Web服务器接收到ASP页面的请求时, 往往会先将该请求发送到ASP.DLL文件中, 然后系统会对该文件进行全面地解释和执行, 并根据请求的具体内容将生成的HTML页面返回到浏览器中。在这一过程中, ASP.DLL文件会根据用户的不同请求, 形成一个单独的线程。而对于ASP.NET来说, 其任务的执行主要是依靠其服务器上的.NET来实现的, 在服务器第一次接收到ASP+页面的相关请求时, 若该请求的主要内容是对页面的相关程序进行创建或者修改, 其会通过.NET Frame Work程序对该页面中的程序语言进行编译, 使其成为能够被编译成机器码的MSIL语言。最后, 计算机会根据编译完成的机器码执行程序, 并将得到的执行结果返回到浏览器中。在ASP+页面的内容被编译成MSIL语言后, 其会通过执行代码建立一种单独的线程方式, 且在今后的运行过程中一直存在于服务器的存储结构中。在今后若出现了对ASP+页面的再次修改时, 可以直接调用服务器中的线程方式, 而不需要再次对其进行编译, 这一内容会一直存在于服务器存储结构中, 直到页面修改完成或者能够重新启动Web程序为止[2]。

2.2 对脚本语言的支持

对于ASP来说, 其支持的编码语言非常多, 像VB和REXX等, 且在进行编程的过程中, 可以将多种脚本语言使用在同一个ASP文件中, 其能够对多种脚本语言进行解释, 这是ASP技术使用中的一个非常大的优势。但对于ASP缺省来说, 其在进行编写的过程中, 只能使用VB和JScript两种编程语言, 若必须使用其他脚本语言时, 必须安装相应的脚本引擎, 才可以对其他的脚本语言进行解释和编译。且在对ASP进行第一次执行时, 其会将相关的解释内容存储在cache中, 这种情况导致其在使用过程中, 往往不能将其他的一些结构语言添加在其中, 这对ASP技术来说, 是一个巨大的限制。但对于ASP.NET技术来说, 其在执行的过程中, 往往能够使用VB和C#等多种编程语言, 并能够将其编译成能够被解释的MSIL程序语言, 这就为中层语音的执行功能提供了多种语言的使用权限, 大大增强了ASP.NET技术的使用优势。

2.3 执行速度

根据上述内容的介绍可以知道, 对于ASP.NET来说, 其在第一次执行的过程中, 往往需要进行两个阶段的编译。因此, 其在初次使用过程中, 速度一般是慢于ASP技术的, 但通过第一次执行以后, 在存储结构中会生成MSIL文件, 并被保存在存储结构中, 在进行下次使用时, 其执行速度会得到较大地提高。通过对ASP网页和ASP.NET网页执行速度进行比较可以发现, ASP.NET除了第一次的执行速度略低于ASP网页, 在今后的执行过程中, 其速度都比ASP网页快。

2.4 对后台数据库的访问

对于大多数的动态Web网页来说, 其最大的特点便是能够对后台的数据库进行访问, 但不同的网页技术在进行后台数据库访问时的方式差别非常大。对于ASP网页来说, 其在进行后台数据库的访问时, 往往是通过ADO技术实现, 其能够访问任意支持OLE DB和ODBC的数据库系统, 然后通过ASP网页的内置组件ADODB对数据库内容进行访问。通过这一组件, 实现了ASP对数据库内容的正常访问, 无论网页内容和程序多么复杂, 其都能够通过简单的方式实现对数据库的访问。但在进行数据输出时, 由于ASP没有专门的输出组件, 导致其内容必须通过ADO技术对数据库访问内容进行逐笔读取和记录, 这种数据记录方式较为复杂, 严重影响了ASP网页技术的发展。而ASP.NET网页技术则对该情况进行了良好地解决, 其通过ADO+技术既能够实现对后台数据库内容的快速访问, 还能够通过对应的数据库元件直接显示数据库中的内容, 简单快捷。

2.5 代码的复杂性

代码是实现程序运行的根本, 因此动态网页技术能够更快地执行与代码具有非常大的关系。在ASP网页中, 由于其程序执行较为繁琐, 在编写代码时, 几乎需要将所有的事情都包含在内, 像数据在from中的保存和用户数据的写入等, 这些内容导致整个ASP程序的编写非常麻烦。而对于ASP+来说, 其引入了一种真正的组件模式, 在运行过程中, 能够通过该模式对服务器的终端进行有效控制, 且操作较为简单, 对于这种新型的组件控制系统, 其在运行过程中, 往往只需要对内容进行声明, 网页就能根据用户的需要执行程序。对于这种网页技术, 其在应用的过程中需要编写的代码远远少于ASP网页技术, 且对于大多数的情况而言, 其代码的编写都可以省略[3]。

3 结语

随着Internet技术的不断发展, 其在人们日常生活中的使用也越来越多, 对人们的影响将越来越大, 对于服务器端的动态网页技术, 其只有不断满足人们对Web应用程序的需求, 才能满足人们的生活和工作需要。目前, ASP技术和ASP.NET技术的发展已经大大提高了人们的生活质量, 但两者之间的不同点和差异也使人们在使用时较为繁琐。对于这两种技术, 各自具有不同的优点, 人们在使用时, 往往会根据自身的习惯和具体的使用要求选择合适的技术。但ASP.NET技术却远远优于ASP技术, 因此其必将逐渐取代ASP技术。

参考文献

[1]孙俊, 李正明, 杨继昌, 等.ASP技术与ASP.Net技术的比较[J].微型机与应用, 2003, 22 (1) .

[2]刘桂玲.浅谈从传统ASP到ASP.NET的转变[J].数字技术与应用, 2014 (4) .

ASP.NET精品课 第6篇

ASP技术的出现,使动态交互式Web主页设计成为一件轻松的事情。ASP.NET是Microsoft.NET的一部分,作为战略产品,它不仅仅是ASP的下一个版本,还提供了一个统一的Web开发模型,其中包括开发人员生成企业级Web应用程序所需的各种服务。ASP只需把服务器端代码写入HTML代码中,文件扩展名设为.asp。而ASP.NET完全不同,它的表示层(HTML代码)与业务层(后台代码)是完全分离的。ASP.NET应用是一些已编译的代码部件,由一些可重用且可扩展的组件组成,可以用第一类语言(包括C#、Microsoft Visual Basic.NET、Microsoft JScript.NET和J#)创建,并且可以访问.NET Framework中整个类的层次结构[1]。

HTTP是无状态协议,也就是说,Web服务器将网页的每次访问都当作相互无关的访问来处理,但实际应用中我们常常希望跟踪某个用户在站点的访问情况,在ASP及ASP.NET中会话状态是存储用户在会话期间信息的一个有效选择[2]。由于ASP.NET拥有更加强大的性能,使得原本很多用ASP技术设计的Web站点和应用程序都需要升级为ASP.NET的。但在实际应用中,由于许多ASP页面都运行着关键业务且结构相当复杂,要进行整体的升级可能需要大量的资源,并且可能给现在的应用带来很大的风险。所以很多时候,选择一个合适的ASP到ASP.NET的升级策略并不是清晰明了的,升级并不一定是一个“全部或者全不”的事情,ASP和ASP.NET可以同时存在,同一站点里的网页或应用程序能够同时包含ASP和ASP.NET页面[3],而此时便需要在ASP和ASP.NET之间共享会话状态。

1 Session

ASP.NET框架支持自动跟踪用户和把服务器的资源与用户关联。可以在用户在Web站点的页面之间移动时利用会话状态来把信息与用户关联起来[4]。而我们用session在页面之间传递会话状态信息。会话(session)的定义是单个用户和特定的Web应用程序相互作用的时间段[5]。客户端浏览器对Web站点的每一次访问都是一个会话,一个会话通常包括对多个网页的访问。在一个会话期间,可以通过Session对象建立属于单个浏览器端专用的变量,即Session对象变量。会话从客户端浏览器访问Web服务器开始,终止于浏览器结束连接或在一定时间(默认为20分钟)内浏览器未向Web服务器提出任何请求[6]。

Session对象的类名称是HttpSessionState。Session对象的常用方法有Add、Clear、Remove、RemoveAll、Abandon等。Session对象的事件主要有两个:Start事件和End事件,分别在会话开始和会话结束时被触发。

创建Session对象变量的语法格式为:

Session(“变量名”) = 表达式

Session.Add(“变量名”,表达式)

获取session对象变量的值使用下面的语法格式:

普通变量 = Session(“变量名”)

在Web应用程序的配置文件Web.config中,可设置的session的存储模式有四种,分别为:Off、InProc、StateServer、SQLServer。Off为关闭session功能;InProc为将session存储在进程内,这和ASP中的存储方式一样,是默认值;StateServer为将session存储在独立的状态服务中;SQLServer为将session存储在SQL Server中。

2 ASP和ASP.NET共享session

尽管微软用尽最大努力让ASP和ASP.NET能够毫不费力地共存,但有一个地方仍然是一块绊脚石——session状态。ASP和ASP.NET中session的存储机制不一样,虽然可以在同一个IIS下同时运行ASP与ASP.NET页面,但是它们之间不能直接传递session。在ASP和ASP.NET页面之间要想共享session状态,需要有一定的转换方法。以下为ASP和ASP.NET共享session的两种一般方法。

2.1 微软提出的session共享的解决方案

针对ASP和ASP.NET不能直接传递session的问题,微软在其MSDN网站上提出了一个session共享的解决方案,该方法的实质是ASP与ASP.NET之间的session统一存储在数据库中来实现共享。该方法大致步骤如下:

1) 创建数据表 在原有数据库下创建存储所要共享的session信息的表格,要注意设置连接ASP和ASP.NET各自session信息的主键。

2) 下载并使用文件Session.rar 下载压缩文件Session.rar,将文件解压后,有两个ASP.NET系统文件和两个DLL文件,分别为global.asa、Web.config和SessionUtility.dll、SessionManager. dll。需将各文件复制到适当的系统目录下,分别进行适当的修改,如global.asa和Web.config中的都需添加相应的连接数据库的配置。

3) 安装和注册SessionUtility.dll 首先将Session Utility.dll文件复制到系统目录下,在安装和注册该文件之前需关闭IIS中ASP的Session选项。在 Microsoft Visual Studio.NET 2003SD Kv1.1Bin 目录下找到gacutil.exe文件,在命令提示符窗口中执行gacutil /i SessionUtility.dll来安装SessionUtility.dll,如执行失败,请将文件的绝对路径写全。然后再在Microsoft.NETFrameworkv1.1.4322(通常Microsoft.NET在WINDOWS目录下)中找到regasm.exe文件,在命令提示符窗口中,执行regasm.exe SessionUtility.dll /tlb:SessionUtility.tlb,产生出一个tlb文件,可当普通的COM(Component Object model)组件来调用。

4) 注册SessionManager.dll 将SessionManager.dll文件复制到系统目录下,在命令提示符窗口中,执行regsvr32 Session Manager.dll。

至此,ASP与ASP.NET session共享成功,在使用数据库中共享的session时,和普通的从数据库中获取数据一样操作。在ASP.NET中使用时,要注意添加对SessionUtility的引用。程序中原来的继承public class WebForm1 : System.Web.UI.Page,可以修改为public class WebForm1 : MSDN.SessionPage,这样在编码过程中就可以使用Session(“变量名”)这样的形式。

以上就是微软提出的session共享的解决方案,该方案虽然能够完整地传递session信息,但过程比较繁杂,对操作系统不够熟悉的程序设计者难以实现,在使用时对COM组件不熟悉的程序员也不适用。而且资源Session.rar在互联网上很难得到。

2.2 通过转换页面实现session传递

该方法需要分别创建ASP和ASP.NET的转换页面来传递session信息,一般方法是通过隐藏的input(属性为hidden)来实现。在项目中分别创建ASPXTOASP.aspx和ASPXTOASP.asp页面,构造Form来自动提交传递ASP.NET中的session变量。在登录界面登录成功后,自动连接中间页面ASPXTOASP. aspx,其中Form的action属性设为ASPXTOASP.asp,将session的值存到页面的隐藏的input里,然后再把这个页面的值利用Form提交到ASP的中间页面ASPXTOASP.asp。该页面可以用Request对象来接收所传递的数据,然后把接收到的值存到session,这样即可实现将session信息传递到ASP页面。

这是一个简单的方法,但它不能反过来使用。因为在.NET里无法分辨你提交的页面是哪个,每个页面只能PostBack到本页。而且该方法有一个客户端信息中转的过程,有比较大的安全隐患,即使做了提交验证也不能避免别人截获数据包然后再修改数据重新提交的危险。

3一种简单实用的利用数据库共享session状态的方法

笔者在实际应用中起用了一种简单实用的利用数据库来共享session状态的方法,下面session信息传递方向以ASP.NET到ASP为例、ASP.NET后台编程以C#为例、数据库以Access 2003为例,来详细说明该方法。

使用该方法在Web.config中的session的存储模式无需修改,使用默认值InProc即可,省去一些启动和设置其它模式的麻烦。首先在项目的原Access数据库中创建表T_Session,用于存储ASP.NET页面的session信息,利用数据库接口技术ADO(ActiveX Data Objects)把ASP.NET页面连接到数据库。将ASP.NET的session信息写入表T_Session中,需要session信息的ASP页面再从表中把所需数据读出,以此实现共享。但是ASP页面需要准确地从表T_Session中获取所需数据,必须能够识别出哪一条session信息是当前客户端用户的信息,这是本方法的一个难点。笔者是利用IP地址在Internet上的唯一性,使用获取远程客户端主机的IP地址的方法来解决这个问题。即在把ASP.NET的session信息写入数据库的同时,把该客户端主机的IP地址也和session信息捆绑在一起写入数据库中同一条信息中,写入数据的SQL语句如下:

insert into T_Session (Session_ID,Session_IP)values(‴+Session[″UserID″] +‴,″+Session[″UserIP″]+‴)

其中Session[″UserIP″]为远程客户端主机的IP地址,获取的方法为:

Session[″UserIP″]=Page.Request.UserHostAddress;

当连接到需要session信息的ASP页面时,该页面自动根据客户端IP地址从数据库中获取当前用户的session信息,代码如下:

userip=Request.ServerVariables(″REMOTE_HOST″)

Set rs1= Server.CreateObject(″ADODB.Recordset″)

rs1.Source=″select * from T_Session where Session_IP=‴+userip+‴order by number desc″

rs1.Open rs1.Source,conn,1,1

SQL查询语句中的number为表T_Session中每条数据的自动编号,查询出的数据按自动编号大小排序,自动编号按时间先后排序。这样做是因为如果有不同用户在使用同一IP地址先后登录,则SQL语句会找出最新的一个也就是当前真正登录了的那个用户的session信息排在所查出数据表的最前端,在使用该数据作为ASP页面的session状态时,就方便很多。

按上面的代码运行程序,如果用户没有登录而直接连接了此ASP页面,由于查询到的数据为空,程序就会出错。而很多时候用户只是想浏览页面信息,并不会登录,所以需在表T_Session中手动增加一条数据,该数据的Session_IP设为noip, Session_ID设为游客,在用户访问页面但没有登录的情况下,ASP页面从表T_Session中读出该条数据,表明身份为游客。紧接上面一段代码,实现该功能所需的代码如下:

if rs1.RecordCount<1 then

Set rs1= Server.CreateObject(″ADODB.Records et″)

rs1.Source=″select * from T_Session where Session_IP=′noip‴

rs1.Open rs1.Source,conn,1,1

end if

如果需要session信息的ASP页面很多,而其中很多又可以直接从ASP.NET页面连接过来,则可以在每个这样的ASP页面的代码中作一个if判断:如果session状态为空,则从数据库中获取数据;如果session状态不为空,则直接使用该session。

由于随着访问用户的累计增多,数据库中表T_Session中的数据量会越来越大,而服务器容量有限,所以需要定期删除过期不用的数据。定期删除数据即可定时删除,如每过30天执行一次删除程序;也可定量删除,如表中数据达到10000条便执行一次删除程序。

至此,ASP获取ASP.NET的session信息完成,利用数据库共享session状态的解决方案执行成功。可以看出,该方法简单实用,对程序员要求低,从ASP到ASP.NET和从ASP.NET到ASP双向都可轻松实现共享会话状态的session信息,而且共享过程完全在服务器端完成,安全系数高。存在的一个问题是如果一个IP地址曾经登录过用户,在定期删除执行之前,下次网站再有使用该IP的未登录的用户访问,页面就会从数据库读出上一次使用该IP访问的用户的session信息,不过经过笔者实践证明在实际应用中该问题影响不大。

4 结束语

ASP向ASP.NET升级是大势所趋,升级过程中ASP和ASP. NET页面会话状态的共享是一个难点。本文根据笔者的实践经验,对各种ASP和ASP.NET共享session状态的方法进行介绍和比较,最后提出一种简单实用的利用数据库来共享session状态的解决方案。经过实践证明,该方案实用性强、安全性好、易推广,对解决ASP和ASP.NET共享session状态问题有很好的借鉴之处。

参考文献

[1]Dino Esposito.Programming Microsoft ASP.NET2.0 Core Reference[M].Washington:Microsoft Press,2006.

[2]王世锋,姚文琳,高桂霞.从ASP到ASP.NET的会话状态管理[J].计算机与现代化,2007(2):89-90.

[3]Sorokin,Mark.ASP to ASP.NETmigration strategy:understanding pos-sible migration paths leads to optimal migration strategies[J].Dr.Dobb′s Journal,2005,30(5):66-73.

[4]Stephen Walther.ASP.NET Unleashed[M].Second Edition.SamsPublishing,2004:512-513.

[5]Russ Basiura,Mike Batongbacal.Professional ASP.NET Web Services[M].Wrox Press Ltd,2001,266.

ASP.NET批量发送邮件 第7篇

1 程序要求

采用的ASP.NET C#开发。技术要求如下:

(1) 要能批量发送邮件。

(2) 不会因为多次提交网页, 而造成邮件的重复发送。

(3) 不会因为关闭网页, 而造成邮件发送不完整, 或者发送邮件进程停止。

(4) 要看到所有发送邮件的发送结果, 且不会因为关闭浏览器或刷新浏览器而丢失结果。

(5) 能实时显示邮件发送的进度。

2 发送邮件的方法

(1) 在System.Net.Mail类下的邮件发送方法。发送邮件的函数如下:

(2) 在System.Web.Mail类下的邮件发送, 这个类已经过时了, 但mail服务器兼容性比较好:

3 邮件发送进程控制

当大量邮件通过邮件服务器发送时, 由于服务器响应的原因, 可能会造成邮件发送超时。所以每封邮件发送之间要有时间间隔。但也正是因为时间间隔, 使得当要发送的邮件很多时, 发送邮件的等待时间会很长。当用户等得不耐烦时, 就很容易刷新网页, 或者重新提交网页。

正是由于网页提交的重复提交, 页面的刷新, 关闭网页等操作, 都会产生多个邮件发送线程或邮件发送线程中止。因此, 选择了通过创建独立线程和线程锁的方法来使操作页面不会锁死, 通过线程锁来控制线程的数量, 但一般邮件服务器只能支持单线程。

经过对126、163、Tom等几个邮箱的测试, 发现当邮件发送间隔时间为4秒时, 发送比较流畅, 服务器超时现象较小, 成功率较高。

发送批量邮件的状态和结果, 需要进行保存, 一般采用公共静态变量就可以了。

下面是邮件发送类:

使用方法:

类创建方法:

4 无刷新显示邮件发送

对于.NET网站的无刷新方法一般有两种:

(1) .NET的Ajax控件实现无刷新

Aspx页面如图1所示。

Aspx页面主要代码:

Aspx.cs页面主要代码:

(2) JQuery控制邮件发送

通过JQery控制邮件发送, 是采用JQuery的$.ajax () 函数向ashx文件发送控制函数, 并返回JSON字符串, {“state”“返回邮件发送状态”, “result”:“返回结果字符串”}。主要代码如下:

脚本部分:

页面部分:

页面尾部放置:

Ashx页面代码:

5 结语

ASP.NET2.0人事管理系统 第8篇

摘 要:ASP.NET作为新一代Web应用程序开发平台,它是一个已编译的、基于.NET的开发环境,它提供了生成企业级应用程序所必需的全部服务,基于 .NET Framework 生成,整个框架都可用于任何 ASP.NET 应用程序。可以使用任何与公共语言运行库(CLR)兼容的语言(包括 Visual Basic.NET、C# 和 JScript .NET)来创建应用程序。我们可以充分运用asp.net与sqlserver的完美结合以及良好的开发优势,来创建本人事管理系统。

关键词:数据库;人事管理系统;三层架构

1 背景及其意义

人力资源管理系统(HRMS,Human Resources Management System),是指组织或社会团体运用系统学理论方法,对企业的人力资源管理方方面面进行分析,规划、实施、调整,提高企业人力资源管理水平,使人力资源更有效的服务于组织或团体目标。

企业现代人事管理是建立在先进的软件和高速、大容量的硬件基础上的新的人力资源管理模式,同过集中式的信息库、自动处理信息、员工自助服务、服务共享,达到降低成本、提高效率、改进员工服务模式。它通过与企业现有的网络技术想联系,保证人力资源与日新月异的技术环境同步发展。一般说来,可以分为四个部分来理解人力资源管理系统:

(1)管理人员角色和目标的改变。(2)提供更好的服务。(3)降低成本。(4)革新管理理念。

现代人力资源管理对企业的意义,体现在以下几方面:

(1)对企业决策层。人、财、物、信息等,可以说是企业管理关注的主要方面,人又是最为重要的、活的、第一资源,只有管理好了“人”这一资源,才算抓住了管理的要义、纲领,纲举才能目张。

(2)对人力资源管理部门。人不仅是被管理的“客体”,更是具有思想、感情、主观能动性的“主体”,如何制定科学、合理、有效的人力资源管理政策、制度,并为企业组织的决策提供有效信息,永远都是人力资源管理部门的课题。

(3)对一般管理者。任何管理者都不可能是一个“万能使者”,更多的应该是扮演一个“决策、引导、协调”属下工作的角色。他不仅仅需要有效地完成业务工作,更需要培训下属,开发员工潜能,建立良好的团队组织等。

(4)对一个普通员工。任何人都想掌握自己的命运,但自己适合做什么、企业组织的目标、价值观念是什么、岗位职责是什么、自己如何有效地融入组织中、结合企业组织目标如何开发自己的潜能、发挥自己的能力、如何设计自己的职业人生等,这是每个员工十分关心,而又深感困惑的问题。我们相信现代人力资源管理会为每位员工提供有效的帮助。

2 系统结构设计

图1

2.1 逻辑体系结构

2.2 结构设计如图

图2

2.3 系统环境概述

(1)系统开发操作系统:windows server 2003

(2)系统开发数据:MS SQL Server 2005

(3)系统前台页面设计:Dreamweaver CS3

(4)NET Framework:.NET Framework 2.0版可再发行组件包(.NET Framework 2.0框架)

(5)IDE开发工具:Microsoft Visual Studio 2005

3 需求分析

根据以上对人力管理内容的和人力资源管理系统的分析,本人力管理系统主要由如图3所示的各功能模块组成

图3

4 总体设计

(1)表示层:用于显示用户界面,其机构如图4所示。

图4

(2)业务层:用于显示层和数据层的交互。其中为了防止信息的安全,本系统使用MD5算法给管理员密码进行加密,主要代码如下:

Public Module lzmd5

Function lizhong_md5(ByVal input As String) As String

Dim md5before As MD5 = MD5.Create() '定义一个加密前的变量

Dim data As Byte() = md5before.ComputeHash(Encoding.Default.GetBytes(input)) '获取待加密的数据

Dim aftermd5 As New StringBuilder() '定义一个加密后的变量

Dim i As Integer '进行加密处理

For i = 0 To data.Length - 1

aftermd5.Append(data(i).ToString("x4")) '64位加密

Next i

Return aftermd5.ToString '返回MD5密文

End Function

End Module

3.数据层:用于存储系统各项信息,是整个系统的核心,其结构如图5所示

图5

5 数据库连接

本系统通过web.config和一个数据库操作类进行数据库连接。代码如下

web.config

<connectionStrings>

<add name="lisinghrconn" connectionString="Data Source=./SQLEXPRESS;AttachDbFilename=|DataDirectory|/lxrlxy.mdf;Integrated Security=True;User Instance=True"

providerName="System.Data.SqlClient" />

</connectionStrings>

SQL.VB:

Public Class SqlDataBase'获取Web.Config数据库连接字符串

Private lisinghrconn As String = ConfigurationManager.ConnectionStrings("lisinghrconn").ConnectionString

Private cn As SqlConnection '创建SQL连接

Private sda As SqlDataAdapter '创建SQL数据适配器

Private sdr As SqlDataReader '创建SQL数据读取器

Private cmd As SqlCommand '创建SQL命令对象

Private ds As DataSet '创建数据集

Private dv As DataView '创建视图

Public Sub Open()

cn = New SqlConnection(lisinghrconn)

cn.Open()

End Sub

Public Sub Close()

If cn IsNot Nothing Then

cn.Close()

cn.Dispose()

End If

End Sub

Public Function GetDs(ByVal strSql As String) As DataSet

Open()

sda = New SqlDataAdapter(strSql,cn)

ds = New DataSet()

sda.Fill(ds)

Close()

Return ds

End Function

Public Sub GetDs(ByVal ds As DataSet,ByVal strSql As String,ByVal strTableName As String)

Open()

sda = New SqlDataAdapter(strSql,cn)

sda.Fill(ds,strTableName)

Close()

End Sub

Public Function GetDv(ByVal strSql As String) As DataView

dv = GetDs(strSql).Tables(0).DefaultView

Return dv

End Function

Public Function GetTable(ByVal strSql As String) As DataTable

Return GetDs(strSql).Tables(0)

End Function

Public Function GetDataReader(ByVal strSql As String) As SqlDataReader

Open()

cmd = New SqlCommand(strSql,cn)

sdr = cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection)

Return sdr

End Function

Public Sub RunSql(ByVal strSql As String)

Open()

cmd = New SqlCommand(strSql,cn)

cmd.ExecuteNonQuery()

Close()

End Sub

End Class

End Namespace

6 总结

ASP.NET分层架构研究 第9篇

随着软件业的发展,现在系统设计者越来越注重构建耦合度低,具有良好可维护性以及扩展性的系统。在传统的系统设计中,往往将对数据库的访问、业务逻辑及界面显示等代码编写在一起。这样固然直观,但是代码可读性差、耦合度高,造成日后的维护和重构极不方便。为了解决该问题,有人提出了N层架构思想,即将各个功能明确分开,放在独立的层中,各层之间通过协作来完成整体功能。

相对于J2EE已经相当成熟和完善的分层架构来说,ASP NET平台上的分层架构并没有一个通用的框架,也没有成熟的理论支持。本文对ASP.NET平台上的分层架构进行初步研究和探讨,期望总结出的理论能给ASP.NET平台的开发人员一点指导性作用。

1 分层思想

分层是基于面向对象上的,是更高层次上的设计理念。在软件开发技术的发展过程中,出现了很多优秀的思想与模式。这些思想和模式凝结了无数程序设计人员的实践经验和智慧,是软件开发领域的精华。这其中有很多思想对分层架构设计有着重要的指导作用。下面将描述一下对本文的研究起着指导作用的思想以及本架构遵循的原则。

1.1 逐层调用原则及单向调用原则

首先,约定N层架构的各层编号依次为1,2,…,K,…,N,其中层的编号越大,则越处在上层。那么,我们设计的架构应该满足以下两个原则:(1)第K(1

其中第一个原则,保证了依赖的逐层性,即整个架构的依赖是逐层向下的,而不能跨层依赖。第二个原则,则保证了依赖的单向性,即只能上层依赖底层,而不能底层反过来依赖上层。

1.2 针对接口编程,而不是针对实现编程

这里所指的接口,是指一种抽象的,在语义层面上起着接合作用的语义体,并非指编程语言中的具体语言元素。其具体实现,可能是接口,可能是抽象类,甚至可能是具体类。

从不同的视角,接口可以有以下两种定义:(1)接口是一组规则的集合,它规定了实现本接口的类或接口必须拥有的一组规则;(2)接口是在一定粒度视图上同类事物的抽象表示。注意这里强调是在一定粒度视图上,因为“同类事物”这个概念是相对的,随着粒度视图不同而不同。具体到N层架构中,针对接口编程的意义是这样的:

现仍约定将N层架构的各层依次编号为1,2,…,K,…,N,其中层的编号越大,则越处在上层,那么第K层不应该依赖具体一个K-1层,而应该依赖一个K-1层的接口,即在第K层中不应该有K-1层中的某个具体类。

1.3 依赖倒置原则

在软件设计原则中,有一种重要的思想叫做依赖倒置。其核心思想是:不能让高层组件依赖底层组件,并且,不管高层组件和底层组件,两者都应依赖于抽象。该原则定义中的“依赖”是指“具体依赖”,而上面定义中的依赖全部指“抽象依赖”。两种依赖的定义如下:

具体依赖:如果P层中有一个或一个以上的地方实例化了Q层中某个具体类,则说P层具体依赖于Q层。

抽象依赖:如果P层没有实例化Q层中的具体类,而是在一个或一个以上的地方实例化了Q层中某个接口,则说P层抽象依赖于Q层,也叫接口依赖于Q层。

从这两个定义可以看到,所谓的依赖倒置原则,正是上面所提到的针对接口编程,而不是针对实现编程,两者在本质上是统一的。

1.4 封装变化原则

封装变化的原则定义为:找出应用中可能需要变化之处,把它们独立出来,勿与不需要变化的代码混杂在一起。

1.5 单一职责原则

在本架构中,任何一个类都应该属于单独的一层,负责实现单一功能,而不能同时担负两种职责或属于多个层。

2 系统架构

目前,典型的分层架构是三层架构,即自底向上依次是数据访问层、业务逻辑层和表示层。

这种经典架构经历了时间的考验和实践的多次检验,被认为是合理、有效的分层设计,所以,本文将沿袭这种经典架构,使用数据访问层、业务逻辑层和表示层的三层架构体系。一个大致的系统架构图如图1。

图1中单向箭头表示实泛化,双向箭头表示依赖及调用,实线表示依赖注入,Io C负责数据访问层,业务逻辑层的实例化(包括依赖关系注入)。

2.1 架构各层次介绍

综合以上分析,系统分为以下几个模块:

(1)实体类模块(Entity)。一组实体类的集合,负责整个系统中数据的封装及传递。该部分可以通过访问器set,get方便地实现。

(2)数据访问层接口族(IDAL)。一组接口的集合,表示数据访问层的接口。

(3)业务逻辑层接口族(IBLL)。一组接口的集合,表示业务逻辑层的接口。

(4)数据访问层模块(DAL)。一组类的集合,完成数据访问层的具体功能,实现数据访问层接口族。包括从数据源加载数据,向数据源写入数据,从数据源删除数据。

DAL常用的技术有ADO.NET+SQL语句,O/R Mapping框架NHibernate,NBear等。

(5)业务逻辑层模块(BLL)。一组类的集合,完成业务逻辑层的具体功能,实现业务逻辑层接口族。主要完成从DAL中获取数据供UI显示用,从UI中获取用户指令和数据执行业务逻辑,从UI中获取用户指令和数据并通过DAL写入数据源。BLL层可能访问DAL,也可能不访问DAL来完成业务。其职责机制如下:

(6)表示层模块(UI)。程序及可视元素的集合,负责完成表示层的具体功能。主要功能是向用户展现特定业务数据,采集用户的输入信息和操作。

(7)Io C容器模块。负责各层对象的实例化以及依赖注入的实现。其功能和实现将在下面做进一步介绍。

(8)辅助类模块(Utility)。完成辅助性功能。辅助类是指不代表任何实体或实体操作功能的面向对象抽象,它不属于任何一个层次,在多个部分、多个时段被使用,全局仅需要一个实例。

2.2 Io C(Inverse of Control)容器

Io C容器模块对系统的整个架构至关重要。

2.2.1 概念

反转控制实现了依赖注入(Dependency Injection,DI)的类无关性,在代码中,可以避免类或者对象自身来管理自己的依赖实例。这样,在使用某个类时不创建对象,而是描述创建对象的方式。这样,在实际编程中,使用某个类就像使用一个普通的变量一样。具体到分层架构中,是指当上层类需要调用下层类功能时,不再是由上层类直接实例化下层类,而是通过Io C容器获取一个下层类的实例,然后注入到上层类中。下层实例化的工作不再由上层类来完成,因此称为控制反转。运行的时候才产生上层类和下层类之间的依赖关系(把这种依赖关系在一个合适的时候“注入”运行时),这可能就是Dependency Injection这个术语的由来。

这样在某种程度上解除了强依赖,但是并不是说上层类和下层类之间的依赖关系不存在了,事实上上层类无论如何也需要下层类提供的服务,我们只是把这种依赖的建立时间推后了,从编译器推迟到运行时了。

图2以系统中业务逻辑层和数据访问层为例简单诠释了一下Io C。

2.2.2 Io C容器及依赖注入机制的具体实现

依赖注入机制的实现有两种途径,一种是使用现有的框架。如J2EE平台上的Spring框架就可以很好的完成依赖注入功能,在ASP.NET平台上有Spring.NET等框架可以选择。另一种途径,就是自己编写相应的代码,完成依赖注入机制。

鉴于ASP.NET平台上的“反射”机制对依赖注入的实现非常方便,笔者就基于反射机制和抽象工厂这种实现方式进行探讨。

反射就是动态发现类型信息的能力。它帮助程序设计人员在程序运行时利用一些信息去动态地使用类型,这些信息在设计时是未知的,这种能力可以用于后期绑定。反射还支持的更高级的行为,能在运行时动态创建新类型,并且对这些新类型的操作进行调用。

有了反射机制,我们就可以从配置文件(一般是在Web Config)读出配置信息后,不是根据这个信息实例化相应的工厂,而是让反射工厂通过这些信息,动态加载相应程序集中的类,这样每个层次只需要一个工厂就可以完成依赖注入,即使以后出现新的实现,也不需要修改或添加工厂,只要在配置文件中写明程序集的名字即可。如果考虑到性能和易用性,可以配合缓存(Cache)机制进一步优化Io C的设计。

利用ASP.NET平台上的反射机制,可以简化抽象工厂(Abstract Factory)设计模式的代码。而利用反射机制简化后的Abstract Factory则可以叫做Reflection Abstract Factory,也叫反射工厂。反射工厂结构图如图3。

使用反射,各层都需要进行泛型化,每个层只需要一个工厂,然后通过从配置文件中读出程序集的名称,动态加载相应类。为了提高依赖注入机制的效率,这里还引入缓存(Cache)机制。下面简单探讨下其具体实现。

(1)首先,在Web工程的Web.Config文件的节点下添加两个项

这两个配置选项分别存储要应用的数据访问层和业务逻辑层的程序集名称。value目前是空,是因为目前还没有各个层次的具体实现。

(2)实现缓存操作辅助类。为实现缓存对象,获得缓存操作,可以将缓存操作封装成一个辅助类。

(3)封装依赖注入代码。因为很多依赖注入代码非常相似,为了减少重复性代码,我们将可复用的代码先封装在一个类中。该类应该不能被继承,其中方法应该能够直接调用,所以此类应为sealed型,方法为static型。该类是依赖注入提供者,实现返回层对象功能,其机制是首先检查缓存中对象是否存在,如果不存在,则利用反射机制返回对象。

(4)实现工厂。实现数据访问层工厂和业务逻辑层工厂。调用上面封装好的注入代码,获取相应的数据访问层和业务逻辑层对象。

3 结束语

本文利用ASP.NET平台上的反射机制实现了Io C功能,并结合经典的三层架构模式构建了一种结构清晰、耦合度低、易于扩展的系统架构。该架构具有合理、简练、通用、结构清晰、耦合性低、良好的可维护性和可扩展性等特点,能够实现数据访问层、业务逻辑层和显示层的分离,应付多变的应用需求,为系统设计人员提供一定的指导作用。

摘要:随着互联网的发展,Web应用的复杂度日益增加,应用需求也在发生着变化,传统的软件设计方法已经无法满足需求。鉴于ASP.NET平台的“反射”机制对依赖注入实现非常方便的特点,利用其反射机制实现IoC功能,并结合经典的三层架构模式构建了一种结构清晰、耦合度低、具有良好的可维护性和可扩展性的基于ASP.NET平台的系统分层架构。

关键词:分层架构,控制反转(IoC),反射

参考文献

[1]郭玉峰,师成林.ASP.NET经典案例设计与实现[M].北京:电子工业出版社,2007.

[2]甄镭.NET与设计模式[M].北京:电子工业出版社,2005.

[3][美]里伯提,[美]赫威兹.Programming ASP.NET中文版(第3版)[M].瞿杰,赵立东,译.北京:电子工业出版社,2007.

[4]CRAIG WALLS,RYAN BREIDENBACH.Spring in Action(中文版)[M].北京:人民邮电出版社,2006.

上一篇:传统中国画的革新问题下一篇:创新与改变