(共26张PPT)
第二章 信息系统的支撑技术
2.6 网络应用软件开发
学习目标
借助工具与平台开发网络应用软件。
掌握网络架构C/S和B/S的优缺点。
网络软件是网络不可或缺的组成部分,离开网络软件,整个网络将无法运作。怎样才能开发出符合用户需求的网络软件呢?软件开发一般都需要基于某种程序设计语言及相应的开发工具或平台来实现。
新课讲授
知识点2.6.1:网络应用开发概述
在选择开发平台前,必须先了解网络应用软件的实现架构及不同分类。网络应用软件的实现架构有两种,分别是_______________和_______________。
1.客户端/服务器架构(Client/Server 架构,简称_______)
(1)概述:
它可以充分利用客户端与服务器端的硬件环境的优势,将任务合理地分配到客户端和服务器端。
①客户端:主要完成用户的具体业务,如人机交互、数据的输入与输出等。
②服务器端:主要提供数据管理、数据共享、系统维护和并发控制等。
客户端/服务器架构
浏览器/服务器架构
C/S架构
(2)优点:
降低了系统的通信开销和开发的难度。
(3)缺点:
客户端软件须安装才能使用,给应用程序的升级和维护带来一定的困难。
2.浏览器/服务器架构(Browser/Server架构,简称_______)
(1)概述:
它是随着Internet技术的兴起,对C/S架构改进后产生的一种软件系统体系结构。客户端无需专门的应用程序,用户工作界面通过浏览器来实现,应用程序基本上都集中于服务器端。
B/S架构
(2)优点:
客户端无需专门的应用程序,用户工作界面通过浏览器来实现,应用程序基本上都集中于服务器端。
由于客户端无需专门程序,应用程序的升级和维护都可以在服务器端完成,升级和维护都较方便,极大地降低了成本和工作量。
(3)缺点:服务器的负荷较重,对服务器的要求较高。
架构 客户端程序 系统的通讯开销 开发的难度 应用程序的升级和维护 服务器负荷
C/S架构 专用的应用程序 小 低 带来一定的困难, 客户端服务器端同时升级和维护 低
B/S架构 浏览器 大 大 较方便, 只升级服务器端,降低了成本和工作量 重
例1 小明搭建了一个“土壤湿度监测系统”,能通过浏览器查看
实时湿度数据,当湿度小于某阈值时,信息系统自动开启喷淋设备,
大于某阈值时自动关闭喷淋设备。该系统的架构如图所示:
下列说法不正确的是 ( )
A.该信息系统采用了B/S架构模式
B.该信息系统具备闭环控制功能
C.该信息系统仅传输了土壤湿度数据
D.网络是该信息系统中重要的支撑技术
C
解析:A选项Web服务器提供网页浏览服务,因此是B/S架构。
B选项指作为被控的输出量以一定方式对输入端施加控制影响的一种控制关系。
C选项信息系统在工作时,肯定还要传输控制信息等。
D选项网络可将地理位置不同、功能独立的多个计算机系统互联起来。
例1变式训练 某公司现行的网络系统架构是多年前搭建的,并专门配备了数名管理员负责公司内部的通信软件升级、维护,他们经常需要在几百甚至几千部电脑之间来回奔跑,工作效率低。今年,公司提起了项目改造新方案,完成后只需要在服务器端升级和维护系统即可。该公司新的网络系统架构是( )
A.B/S架构
B.S/C架构
C.S/B架构
D.C/S架构
A
解析:公司现行的网络系统架构为客户端/服务器(C/S)架构,管理员为员工升级维护软件就必须到个人电脑上操作。升级后,管理员只需要维护服务器端,这种架构是B/S架构,员工只需要在个人电脑上使用浏览器完成工作。四个选项中B和C选项不属于网络系统架构。
例2 小明搭建“室内环境监测系统”,实现如下功能:当室内亮
度达到系统设定的阈值时,系统使用执行器放下窗帘,当窗台湿度
达到系统设定的阈值时,系统使用执行器关闭窗户,并且系统将采
集到的数据通过室内 Wi-Fi 保存到服务器的数据库中。系统架构
示意图如图所示。下列说法不正确是 ( )
A.搭建该系统需要配备光线传感器和湿度传感器
B.该系统的网络架构为 C/S 架构
C.执行器可以响应 PC 客户端的请求
D.该系统客户端可以获取输入端传感器的数据
B
解析:
B选项题目中采用Web服务器,可知为B/S架构。
C选项执行器响应PC客户端请求,执行相应的动作。
例2变式训练 小王搭建“室内环境监测系统”,实现如下功能:当室内亮度达到系统设定的阈值时,系统使用执行器放下窗帘,当窗台湿度达到系统设定的阈值时, 系统使用执行器关闭窗户,并且系统将采集到的数据通过室内 Wi Fi保存到服务器的数据库中。系统架构示意图如图所示。下列说法不正确的是( )
A.搭建该系统需要配备光敏传感器和湿度传感器
B.该系统运行速度仅取决于硬件的性能
C.本系统采用B/S网络开发模式进行工作
D.该系统客户端可以通过网络获取输入端传感器的数据
B
解析:该系统运行速度取决于软件及硬件的综合性能。
知识点2.6.2:网络应用的规划设计
1.过程
(1)对网络应用进行详细的分析。
(2)在分析的基础上确定应用的架构模式,并根据架构模式选择合适的开发工具及现有的应用框架,同时明确应用的各个功能模块。
(3)用统一、规范的图表和书面语言表达出来。
(1)应用的目的:应用要解决的问题、软件的输入数据和输出数据。
(2)应用的总体架构:应用架构模式、开发工具、应用框架。
(3)应用的功能组成:应用的各个功能模块。
(4)界面设计及代码实现:按各个功能模块的作用设计出相应的人机交互界面,完成代码编制。
2.举例:“网络聊天机器人”应用的规划设计
知识点2.6.3:编写网络应用程序
编写网络应用程序首先要确定相应的Web应用框架,在Python中常用的Web应用框架有Flask、Django及Tornado,其中Flask Web框架非常精简,属于小型框架。Flask Web框架具有一个包含基本服务的核心,并且是一个可扩展的框架,很多功能可以通过扩展来实现。它允许开发者任意挑选符合项目需求的扩展,甚至可以自行开发。
1.导入框架模块
为Web应用程序导入Flask框架及扩展的模块,以便在程序代码中使用框架提供的功能,其代码如下:
from flask import Flask #导入Flask框架模块
2.创建应用实例
为Web应用程序创建Flask类的对象,即创建一个应用实例,其代码如下:
app = Flask(_name_) #运用Fask框架建立Web应用APP,该APP已经具备了Web应用的基本功能,开发者可以在此基础上增加自己的功能。
3.编写路由和视图函数
建立URL到程序代码的关联,其代码如下:
@app.route('/') #路由
def index(): #视图函数
return'
这是我的第一个网页程序!
'
当用户在浏览器中向Web服务器发出请求时,Web服务器会把请求发送给Flask应用实例,如上面的APP。
Flask通过路由和视图函数的方法,使应用实例知道每个URL与哪些Python代码相关联并运行。
4.启动Web应用
其代码如下:
if _name_ == '_main_':
app.run()
在Flask框架中Web服务器是自带的,调用应用实例APP的run方法就会启动该集成的开发Web服务器,服务器启动后就会进入轮询状态,等待用户访问并处理用户请求,直到程序停止。“_name_=='_main_'”是确保只有当直接执行这个脚本时才启动开发Web服务器,如:Python web.py。
注:开发“网络聊天机器人”,须在原有的Web应用程序的基础上解决两个问题:一是机器人对话能力的实现;二是网页上的输入与输出。
①机器人对话能力——通过导入AIML模块来解决
AIML(Artificial Intelligence MarkupLanguage)即人工智能标记语言,本模块由理查·华莱士(Richard Wallace)发明。目前AIML已经有了Java、Python、C、C#及Pascal等语言的版本。
②网页上的输入与输出——通过在网页中使用提交表单(Form)来解决
表单收集用户的聊天语句,提交至Web服务器,然后由Web服务器中的AIML调用respond接口处理这些语句,最后将机器人的回复(即处理结果)发送至访问者的浏览器并输出。
导入flask_wtf扩展的FlaskForm模块,
实现在Flask Web应用程序中使用表单;
导入Flask的render_template模块,
实现网页模板的使用,使代码更加精简。
知识点2.6.4:调试发布
程序在编写过程中会出现错误,需要进行调试、修正错误。
错误一般包括两类:
相对简单的语法错误,在程序执行时Python会检查出相应的错误并给出修改建议;
相对复杂的逻辑错误,需要编程人员仔细研究和分析。
调试结束后,在确保应用能正确运行的情况下,才能将其发布至服务器,供用户使用。
1.调试模式
Flask Web框架的调试模式功能:在开发配置或程序代码中设置debug=True打开调试功能。
注意不要在实际的网站应用环境,即生产环境中使用调试模式,否则将会是一个巨大的安全漏洞。那么在实际生产环境中如果程序出现问题,该如何记录以备开发人员检查呢?
开发人员往往会利用_____________________________进行报错,以及用_________进行记录等调试方法对程序进行查错及排错。
电子邮件来发送程序运行的错误信息
日志文件
2.应用发布
在开发环境中通过如下命令就可以启动Web应用,以供他人访问使用:Python 应用程序.py runserver
但这是Flask Web框架自带的开发Web服务器,它仅供开发者调试使用,本身不够强健、安全和高效,同时也没有顾及实际应用中随着用户数量增加而产生的性能问题,因此不适合作为实际生产环境使用。
在实际生产环境中常见的可靠的Web服务器有很多,如IIS、 Apache、Nginx、Tomcat及WebLogic等,只需将自己编写的Web应用程序以WSGI应用或CGI形式发布至相应的Web服务器即可。
例3 小明使用Flask模块制作了某信息系统的用户登录验证子系统,其各个路由、视图说明以及实现程序如下所示,请回答相关问题。
from flask import Flask, render_template, redirect
app=Flask(_ _name_ _)
@app.route(" / ")
def index():
return render_template(" index.html ")
①____________
def login():
#查询代码略
if len(cur.fetchall()) >0: #找到用户的相关信息
return render_template(" manage.html " , username=usr)
else:
return redirect('/')
@app.route(" /user/ ")
def user(name):
return " Hello, " +name+ " ! "
if __name_ _== " __main__ " :
app.run(②________)
路由地址 视图说明
/ 系统首页
/user/ 显示欢迎信息以及用户对应的信息
/system?name=xiaoming&password=secretinf 传递登录信息完成验证后显示系统管理页面
(1)程序第①空是传递登录信息,进行登录验证并显示系统管理页面的路由与
视图函数,那么该处填写的语句是____________(单选,选填字母)。
A.@app.route(" /system " ,methods=[" GET "])
B.@app.route(" /login " ,methods=[" GET "])
C.@app.route(" /user " ,methods=[" POST "])
D.@app.route(" /login " ,methods=[" POST " , " GET "])
(2)若该Web服务器的地址是192.168.0.1,运行端口是8080,程序试运行时需打开调试功能,那么第②空应该填写的语句是__________(单选,选填字母)。
A.host= " 192.168.0.1 " ,port= " 8080 " ,debug=True
B.host= " http:∥192.168.0.1 " , port= " 8080 " ,debug=True
C.host= " http:∥192.168.0.1:8080 " ,debug=True
D.host= " 192.168.0.1:8080 " ,port= " 8080”
(3)该程序运行后,在浏览器输入网址http:/192.168.0.1:8080/user/xiaoming,网页显示内容为:________________
A
A
Hello, xiaoming!
例3变式训练 某校园饭卡查询系统,其实现的部分代码如下所示:
from flask import Flask
app=Flask(__name__)
@app.route(" /sy ")
def welcome():
#实现过程的代码略
return "欢迎登录该系统! "
@app.route(" /fw ")
def hy():
xm=request.args.get(" name ")
return "欢迎”+xm+”同学访问该系统! "
if __name__== ”__main__”:
app.run(host=”192.168.0.102 ”,port=5050)
某同学访问后,网页显示:“欢迎小李同学访问该系统! ”,则该同学访问的网址为( )
A.http:∥192.168.0.102:5050/sy
B.http:∥192.168.0.102:5050/sy?name=小李
C.http:∥192.168.0.102:5050/fw
D.http:∥192.168.0.102:5050/fw?name=小李
D
例4 小明家最近申请了宽带,想搭建一个家庭网络系统,家里配
备了1台计算机及多台笔记本和移动终端。其搭建的家庭网络示意
图如下图所示,请回答下列问题:
(1)小明家的网络系统中包含了常见的硬件设备,其中有计算机硬件、
移动终端硬件和通信网络等。其中属于移动终端设备的有__(填序号)
(2)从图中可以看出,小明家的外网接入是有线的光纤,他的台式电
脑是通过______(选填:无
线/有线)方式接入网,而他家的
移动终端设备采用______(
选填:无线/有线)方式接入网,
其中移动终端是通过____________(
选填:无线路由器/交换机)设备来实现的。
①②③
有线
无线
无线路由器
课堂小结
机器人对话能力的实现:AIML模块
网页上的输入与输出:表单
调试发布:调试模式、应用发布