花仙子儿童服装销售系统设计外文翻译资料
2022-10-29 21:44:05
A Manageable Web Software Architecture:
Searching for Simplicity
Arthur H. Lee
School of Computing
University of Utah
Salt Lake City, UT 84112
alee@cs.utah.edu
Abstract
Instruction on web programming at an advanced level in computer science has been in high demand in recent years. The topics and technologies in this area are so vast and diverse that designing and teaching a course requires vast knowledge and the ability to select coherent topics and technologies that can be presented in a semester. The students should learn enough of the underlying fundamental concepts along with the selected technologies so that they can practice in the real world setting while being able to adapt and expand beyond what was taught in class. Very few courses of this kind if any have been taught. We describe such a course, called Web Software Architecture, that we created and have taught successfully last Spring. It is a junior/senior level computer science elective course that uses Java, Servlets, JavaServer Pages, HTML, JavaScript, JDBC, and the Apache-Tomcat web server as key technologies. Our experience supports the assertion that such a web programming course has a legitimate place in a computer science curriculum.
General Terms: Design, Languages, Experimentation.
Keywords: Web software architecture, web programming, client/server architecture, network programming, HTML, JavaScript, Java, Servlets, JavaServer Pages, Pedagogy.
1 Introduction
Almost every computer science student as well as anyone who is already programming in industry seems to want to learn how to program the Internet. With the ever-increasing pervasiveness of the web, it is not surprising.
Most universities o er some form of an entry-level web programming course to the general university-wide students, where HTML and a scripting language such as JavaScript is used. However, there is a surprisingly small number of universities that o er a serious web programming course for the advanced computer science students as an intensive systems course. One of the reasons might be that it is an “unteachable class' as Treu put it . There is an incredible range of different Web technologies each of which is constantly changing and yet requires a significant amount of effort to learn.
A computer science faculty in the traditional systems area wanting to learn and teach a web programming course would run into the names such as HTML, DHTML, XHTML, XML, Java, Applets, JavaScript, Perl, CGI, Cascading Style Sheets (CSSs), JavaServer Pages (JSPs), C#, Active Server Pages (ASPs), PHP, JDBC, ODBC, Oracle, DB2, mySQL, network programming, multi-threaded programming, AWT, Swing, HTTP protocol, MIME (Multipurpose Internet Mail Extensions) protocol, client-server model, Apache, Tomcat, Iplanet, WebLogic, WebSphere, JRun, ServletExec, Resin, JBoss, ANT, Netscape, Internet Explorer, etc. It would be overwhelming for anyone new to these areas. One needs to understand enough about all these to make a coherent plan for a course given a limited amount of time ( usually a quarter or a semester).
We will describe a web programming course, Web Software Architecture, that we created and have taught successfully at our university last semester for junior/senior level computer science students as a technical elective. Its goal is to teach enough fundamentals as well as enough practical knowledge so that the student can be a productive software engineer in an industrial-strength development setting, doing web programming. The set of technologies that we focused on include HTML, XML, JavaScript, CSSs, Applets, Java, Swing, Servlets, JSPs, JDBC, HTTP, client-server model programming, Apache, and Tomcat plus several other related topics. These are appealing technologies to most of our students be-cause of their experience in and desire to learn more about Java-related technologies. The course was offered as a special topics course last semester, and afterwards we immediately adopted it officially as a regular course and it is scheduled to be taught every Spring semester.
2 Objectives
The key objectives of this course are:
- Understand the overall picture of the web software architecture from the programmers point of view.
- Learn how to use each technology that makes up the over-all architecture.
- Also understand why each technology is designed the way it is. This is where the fundamental concepts that are related to web systems architectures are stressed.
- Gain experience in designing and implementing an application large and complex enough to be a real world application.
3 Course Material
The main textbook that we used was Core Servlets and JavaServer Pages . Soon after we started the semester More Servlets and JavaServer Pages came out. We ended up using both. Next time, we will probably be using the second one as the main text unless we come across a better one. There are a fair number of books on these subjects, but most of them are not really written as textbooks but rather as professional desk references.
These two books do not cover other topics in any sufficient detail. So we used many tutorials and references available on the Internet. Although many books are available on many of these topics, it would not be practical to ask the students to buy many of the books on different subjects when the information on the net is readily available. Also it is important for the students in this kind of course to learn to find the necessary information on the Internet. Often times the information available on the Internet is current while many published books are already outdated. This is one of the most fastest-changing fields in computer science in recent years. I ha
剩余内容已隐藏,支付完成后下载完整资料
易于管理的Web软件体系结构:简单搜索
摘要:
近年来,在计算机科学的高级网络编程方面的课程要求一直很高。在这方面的主题和技术也非常广泛和多样化,以至于课程的设计和教学需要大量的知识和选择相关主题和技术的能力,并保证这些主题和技术可以在一个学期内传授完。学生应学习足够的基本概念与选定的技术,这样当他们能够适应和扩展课程上所学到的知识时,他们就能够在现实世界中练习。这样的课程即使有的话也极少。我们描述了这样一个课程,称为Web软件架构,去年春天我们已经成功地开设并教授了这门课程。它是一门初级/高级计算机科学专业选修课,并使用java,servlet,JSP,HTML,JavaScript,JDBC,和Apache Tomcat Web服务器作为关键技术。我们的经验表明,这样的网络编程课程设置在计算机科学课程中十分合理。
通用术语:设计、语言、实验。
关键词:网络软件体系结构,Web编程,客户端/服务器架构,网络编程,HTML,JavaScript,java servlet,JSP,教育学。
1、简介
几乎每一个计算机科学专业的学生以及任何在工业领域编程的人似乎都想学习如何编程。随着网络的普及,这并不奇怪。
大多数的大学都有一些入门级的网络编程课程,这些课程向普通高校学生开放,主要使用HTML和JavaScript等脚本语言。然而,有极少数的一些大学对高年级的计算机科学专业的学生开放更专业的网络编程课程,这些课程组成一个强化系统课程。其中一个可能的原因是,就像Treu所提过的那样,这是一个不好教的课程。不同的网络技术有一个惊人的范围,并且其中的每一个都是不断变化的,而且需要付出很多努力去学习。
一个传统系统领域的计算机科学系的教师如果想要学习和教授一门WEB程序设计课程的话,他会遇到如HTML、DHTML、XHTML、XML、java小应用程序,JavaScript,Perl,CGI,层叠样式表(CSSs)、Java服务器页面(JSP)、C #,动态服务器页面(ASP)、PHP、JDBC、ODBC、Oracle、DB2、MySQL数据库、网络编程、多线程编程,AWT,Swing,HTTP协议,MIME(Multipurpose Internet Mail Extensions)协议,客户端-服务器模型,Apache,Tomcat,iPlanet,WebLogic、WebSphere、JRun、ServletExec,Resin,JBoss,ANT,网景,IE浏览器等多个名词。这会让任何不熟悉这个领域的人感到无所适从。人们通常需要在一段有限的时间(一般是四分之一个学期或一个学期)内充分了解所有这些内容,制定一个有条有理的计划。
我们将介绍一门网络编程课程,Web软件体系结构,我们上学期已经在我们的大学成功的开设并教授这门课程,并将它作为初级/高级计算机科学专业的学生的技术选修课程。它的目标是传授足够的基础知识以及足够的实践知识,使学生在工业迅速发展的背景下成为一个多产的做网页编程的软件工程师。这组我们关注的技术,包括HTML,XML,JavaScript,CSSs、Applets,java,JSP,Servlet,JSPs,JDBC,HTTP,客户端-服务器端模型编程,Apache和Tomcat,以及其他一些相关主题。对于大部分的学生来说这些都是吸引人的技术,因为他们的经验少并且渴望去了解更多的java的相关技术。这个课程上学期是作为专题课程开设的,接下来后我们将立即把它作为一个正式课程,并且我们计划将在整个上半学年开设这门课程。
2、目标
本课程的主要目标是:
- 从程序员的角度理解Web软件体系结构的整体概况。
- 学习如何使用每一个组成整体架构的技术。
- 理解为什么每个技术被设计成它现在的样子。这是它所强调的与Web系统架构有关的基本概念。
- 增加设计和实现足够大并且复杂到能够成为一个真正的应用程序的经验。
3、课程教材
我们使用的主要教材为: Core Servlets and JavaServer Pages。这个学期开始不久,More Servlets and JavaServer Pages这本书就上市了。我们最终两本书都有用到。下一次,我们可能会使用第二个作为主要的课本,除非我们遇到一个更好的。关于这些学科有相当多的书,但大多数都不是真正的教科书,而是专业参考书。
这两本书在很多有用的细节问题上没有加以描述。因此,我们还在互联网上使用了许多教程和参考资料。虽然很多书都有涉及到这些话题,但是要求学生购买许多不同学科的书并不实际,因为网络上的资料已经足够了。当然对学生来说,学会在网上查找这类课程的必要信息是非常重要的。很多时候,互联网上的信息就是最前沿的,而许多出版书都已经过时。近年来,计算机科学已成为变化最快的领域中的一个。我已经在参考文献部分列出了一部分我们认为有用的书籍。
想要查看我们在许多技术中应用的链接,请参阅http://www.cs.utah.edu/classes/cs4540/。课程网页上有全体教职工和学生在这学期发现的最新资讯。当这门课程在2003春季再次被教授时,它将使用更多更新的材料进行修订。
3.1课程教材编排
我们花了大约三分之一学期的时间学习关于客户端的主题以及一些准备科目。他们包括HTML,XML,JavaScript,CSS,java线程和映射等更高级的主题,使用套接字网络编程,分布式计算的概念,HTTP协议,MIME协议的概述,以及一些其他主题,如AWT和Swing。
本学期的中间三分之一的时间,我们专注于服务器端的关键话题。大部分的时间都花在了用Servlet和Java服务器页面等处理一些如用表格数据或HTTP请求头处理客户端的请求,生成的服务器响应HTTP状态码和HTTP响应头,处理cookie,会话跟踪的内容,并了解了一些基本的JSP的特点。
本学期的最后三分之一的时间,我们花在了更高级的服务器端的主题的学习上,包括JSP文档中的文件和小应用程序,通过JSP使用JavaBeans,创建自定义的JSP标签库,整合Servlet和JSP,以及最终使用JDBC访问数据库。
下一次授课时我们将尽量在学期末组织一个团队项目。
3.2主要的编程工作
整个学期的编程任务中有很多小程序贯穿其中。其中有几个相当具有现实意义的应用程序,这些程序要么是在课堂上所学习的,要么就是包含在分配的编程任务中的。它们包括以下内容:
- 披萨订购工具(网络编程)
- 简历发送服务
- 线上购物商店
- 在线旅行社
4、使用的教学方法
一个迭代过程就是在迭代中加入一种新的技术的过程,整个学期其实就是把迭代合成一个完整的web软件架构画面的过程。我们开始在客户端增加新的技术,然后一步步向服务器端迈进。
对于每一项新技术的增加,我们试图做到以下几点:
- 通过一个简单的编程任务学习如何使用它。单单知道如何使用是远远不够的。因为在我们看来,知道如何使用可能对技术人员来说已经足够了,但对于一个计算机科学家来说是远远不够的。
- 因此,我们不仅要知其然,还要知其所以然,我们需要了解它为什么被设计成这样。我们要试着了解哪些基本的计算机科学概念应用于设计,它们为什么会被使用,它们对整体系统有什么样的影响等等。
- 通过理解设计原理试图思考如果改进它们。
一旦足够数量的新技术被引入(在某些情况下,一个就足够了)编程任务的内容就会发生翻天覆地的变化。有了这些任务,我们试图把尽可能多的我们已经尽可能的研究了的概念和技术用于解决现实性的问题。我们所做的其中三项列在第3.2节。因此,整个学期,我们都在试图解决许多小规模到中到大型规模的编程问题。
一些小组项目在即将学期末大约在一个月内左右的时间内结束,这是一次很好的尝试。由于资源缺乏以及准备不充分,我们没有尝试做这些,这就是我们第一个学期的准备过程。然而,他们中的许多人仍然尝试组成项目组,因为他们在同一学期上了高级软件工程项目课程。下一次,我会认真考虑在学期的最后三分之一个季度或四分之一季度做一个小组项目。
5、多层Web软件体系结构
一个典型的多层次的Web应用环境包括以下这些内容:
- 前端/客户端:客户端,典型的以Netscape或Internet Explorer浏览器为例。
- Web层:HTTP服务器,典型的如Apache Web服务器或iPlanet。该层与客户端和应用层向服务器端的客户端层通信。
- 应用层:JSP/Servlet环境,如Tomcat或iPlanet,也可以是一个应用服务器,如iPlanet,WebLogic或WebSphere。该层与Web层以及数据/资源层通信。
- 数据/资源层:通常是一个数据库,如Oracle,MySQL,DB2。
对于客户端的关键技术,我们选择研究HTML,JavaScript,CSS和Applets。而Web层采用Apache。应用层我们主要研究Servlet和jsp,使用Tomcat作为服务器。对于数据/资源层,我们使用MySQL,因为它是免费的。
这些内容是我们要求用基于微软技术的java技术的直接结果,这也将是另一个主要的结果。而我们之所以选择java技术,主要有几个原因。一方面,基于java技术的Apache和Tomcat是使用最广泛的Web服务器,并且它是可以免费使用的。另一方面,由于我们的课程设置方式的原因,相比以微软技术为基础的课程,学生们更愿意接受基于java的课程。而且如数据库系统所需的数据/资源层等其他外围技术是随时可以使用的资源,无需任何成本。另外,我们不希望课程太专注于具体的公司使用的相关技术上。而且与该课程相关的教师相对于微软技术也更了解java技术。下学期我们再一次开课时,我们将考虑两者皆教授。
6、课程的关键准备工作
在我们第一次开课时,我们要求将高级数据结构与算法和软件实践(本科软件工程课程)作为基础课程。因为上过这些课程的学生才有足够的java编程经验。有一些学生已经学习了一部分或所有的操作系统、数据库系统和网络课程。正如第八节中所描述的那样,现在的学生的基础各不相同,所以我们最终也加入了一些进阶课程,如网络编程基础、包含多线程程序设计概念的操作系统、像SQL这样的数据库、编程语言等。一般情况下这些需要操作系统、网络、数据库系统、面向对象编程等课程作为先决课程。
7、主旨
7.1、关键的网络编程相关概念
客户端的HTML和JavaScript、服务器端的servlet和jsp等是Web编程的关键知识点,这些老师们显然都研究得很详细、细致了。对教授这类课程的讲师来说,更有趣的事情就是去了解哪些附加概念被排除在web编程领域之外,而且需要被隐藏起来,因为他们在Web编程方面发挥着十分重要的作用。我不会只停留在讲述本文中网络编程的基本概念,因为当你决定教这样的课程后,你会很快理解它们是什么,并很快学习到足够的知识点。因此我将专注于其他你可能没有明显注意到的概念,但你仍然需要细心去发现这些概念在Web编程中发挥的作用。这些将在下一节中讨论。
7.2所需了解的附加概念
套接字编程就是这样的一个附加概念[ 4,13 ]。学生可能不会直接使用它,但它会帮助他们更好地了解底层的关系。还有更多的需要你们充分、详细的了解的细节:
- 分布式计算模型:Web编程在很大程度上依赖于客户端-服务器端模型,它就是一种特殊的分布式编程模型。因此,它需要一个很好的关于客户端-服务器端模型的概述。
- 网络协议和编程:网络编程需要理解一定程度的网络编程和网络协议,如对于HTTP和MIME的理解。除此之外,还需要了解包括TCP/IP,UDP,防火墙、代理服务器等内容。我们建立了一个使用套接字编程的比萨饼订购服务程序。
- Java中的先进理念:Java中的反射以及其背后的机制被隐藏起来了,因此更高的抽象层次的分布式计算才可以更好地被理解。
- 多线程程序设计:这个概念是绝对必要的。Web服务器是作为其中的一个基本概念来实现的。学生既应该了解单线程模型,也应该了解多线程模型,这样才能更加有效且快速的编程,并且了解Web服务器的机制。
- java和JSP之间的关系:JSP的设计方式在很大程度上受到了java的设计方式的影响。从编程语言设计的角度看,它们之间的密切关系是极具启发性的。比如我们覆盖的JSP的方式,我们试图将其与java语言的设计方式联系起来。对学生来说,看到这其中的联系是非常重要的。
- 数据库连接:虽然一些Web编程书籍认为数据库连接在网络编程中不是一个关键的知识点,但只要是有意义的Web编程几乎都涉及到一些数据库系统访问的知识。JDBC就是这样的一个典型例子。我们需要一些额外的时间来覆盖这样的一些概念,如查询语言,关系等,因为这本身就是一个必须掌握的知识点。
- java 组件:JSP可以加载一个组件用于JSP页面。这种能力可以让你在不破坏JSP单独添加的servlets的功能的情况下重用java类。使用JSP有效的编程对于理解组件的基本概念是非常重要的。
7.3 Web服务器:Apache和Tomcat
在基于java的web编程的情况下,考虑将Apache和Tomcat分别作为Web服务器和java
剩余内容已隐藏,支付完成后下载完整资料
资料编号:[137519],资料为PDF文档或Word文档,PDF文档可免费转换为Word