• 登录
  • 忘记密码?点击找回


  • 获取手机验证码 60
  • 注册


  • 获取手机验证码60
  • 找回
毕业论文网 > 外文翻译 > 计算机类 > 软件工程 > 正文


 2022-10-29 09:10  

A Manageable Web Software Architecture:

Searching for Simplicity

Arthur H. Lee

School of Computing

University of Utah

Salt Lake City, UT 84112



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软件架构,去年春天我们已经成功地开设并教授了这门课程。它是一门初级/高级计算机科学专业选修课,并使用java,servlet,JSP,HTML,JavaScript,JDBC,和Apache Tomcat Web服务器作为关键技术。我们的经验表明,这样的网络编程课程设置在计算机科学课程中十分合理。


关键词:网络软件体系结构,Web编程,客户端/服务器架构,网络编程,HTML,JavaScript,java servlet,JSP,教育学。




一个传统系统领域的计算机科学系的教师如果想要学习和教授一门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软件体系结构的整体概况。
  • 学习如何使用每一个组成整体架构的技术。
  • 理解为什么每个技术被设计成它现在的样子。这是它所强调的与Web系统架构有关的基本概念。
  • 增加设计和实现足够大并且复杂到能够成为一个真正的应用程序的经验。


我们使用的主要教材为: Core Servlets and JavaServer Pages。这个学期开始不久,More Servlets and JavaServer Pages这本书就上市了。我们最终两本书都有用到。下一次,我们可能会使用第二个作为主要的课本,除非我们遇到一个更好的。关于这些学科有相当多的书,但大多数都不是真正的教科书,而是专业参考书。










  • 披萨订购工具(网络编程)
  • 简历发送服务
  • 线上购物商店
  • 在线旅行社




  • 通过一个简单的编程任务学习如何使用它。单单知道如何使用是远远不够的。因为在我们看来,知道如何使用可能对技术人员来说已经足够了,但对于一个计算机科学家来说是远远不够的。
  • 因此,我们不仅要知其然,还要知其所以然,我们需要了解它为什么被设计成这样。我们要试着了解哪些基本的计算机科学概念应用于设计,它们为什么会被使用,它们对整体系统有什么样的影响等等。
  • 通过理解设计原理试图思考如果改进它们。





  • 前端/客户端:客户端,典型的以Netscape或Internet Explorer浏览器为例。
  • Web层:HTTP服务器,典型的如Apache Web服务器或iPlanet。该层与客户端和应用层向服务器端的客户端层通信。
  • 应用层:JSP/Servlet环境,如Tomcat或iPlanet,也可以是一个应用服务器,如iPlanet,WebLogic或WebSphere。该层与Web层以及数据/资源层通信。
  • 数据/资源层:通常是一个数据库,如Oracle,MySQL,DB2。









套接字编程就是这样的一个附加概念[ 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




您需要先支付 20元 才能查看全部内容!立即支付


Copyright © 2010-2022 毕业论文网 站点地图