首页 > 技术文章 > Web Service学习(二)

gbnw 2015-12-01 22:01 原文

 

下面用 Web Service 开发一个简单的酒店预约系统,实现如下基本功能:

1、预约功能:该系统使用户能够预定一周内(从预约的 当天开始算起,7 天之内)的房间,也可以连续预定几 天的。首先,用户选择入住日期和房间号(为了简单, 酒店分三层,每层 10 个房间,101-110 , 201-210 , 301-310),若不在一周之内,返回“不在预定日期内” 提示框,提示用户重新输入/选择入住日期,若在一 周之内,判断你预约的房间是否有人预约过,如果有 人预约过,则提示“该房间已经被预约”,如果没有 人预约过,提示用户输入姓名和手机号码,若姓名不 为空且手机号码为 11 位有效号码并且该号码没有预 约过,则提示“**客户,恭喜您预约成功”,服务器 将姓名和手机号码存储起来作为预约信息,否则,提 醒用户“姓名为空或手机号码无效,请您重新输入”。

2、取消预约功能:提示用户输入姓名和手机号码,若 姓名正确且为 11 位有效号码并且此号码预约过,则 返回“取消预约成功”,并在服务器端将此姓名和号码 的预约信息删除,否则,返回“无效姓名或无效号码”,提示用户再次输入姓名和手机号码。

一、  开发环境的搭建过程以及遇到的主要问题

1)     开发环境的搭建过程

visual studio是目前最流行的Windows平台应用程序的集成开发环境。最新版本为 Visual Studio 2015 版本,基于.NET Framework 4.5.2 。下载地址为:https://www.visualstudio.com/downloads/download-visual-studio-vs.

下载完之后按照步骤按照即可。

IIS是由微软公司提供的基于运行Microsoft Windows的互联网基本服务,最新版本为IIS7.0。默认情况下,在按照windows操作系统时没有自动安装IIS,需要手动安装。Windows 10的安装过程为:

打开控制面板,选择程序,然后再选择启用或关闭windows 功能,弹出一个对话框,然后勾选Internet Information Services,如果1-1所示。

 

图 1-1 安装IIS

点击确定后就会弹出如图1-2正在更改应用的对话框,稍等一二分钟就成功了。

 

图1-2 正在更改应用

 

2)     遇到的主要问题

visual studio 2015+IIS7.0环境的搭建没有那么复杂。我在IIS安装的过程中,点击启用或关闭windows 功能的选项后,弹出的对话框没有内容。导致无法安装IIS。经过查询发现是因为Windows Modules Installer服务没有启动所导致的,如图1-3所示,启动了Windows Modules Installer服务之后内容就出来了。

 

图1-3 Windows Modules Installer服务停止

二、 服务端实现步骤和服务的部署过程

1)     服务端实现步骤

打开visual studio 2015,选择文件->新建->项目,然后如图2-1所示,选择ASP.NET Web应用程序,点击确定。

 

图2-1 新建项目

然后进入如图2-2的界面,选择Empty,点击确定按钮。

 

图2-2 新建ASP.NET项目

然后右键点击工程,选择添加->web服务,如图2-3所示。

 

图2-3 添加Web服务

然后就得到了一个Web 服务的页面,如图2-4所示。本次作业所需要的服务端代码都是在这个Web 服务页面所完成的。

 

图2-4 Web 服务初始页面

 

 

下图2-5为本次所完成之后的代码,在该页面我首先是创建了一个房间信息的类Room,包括房间号码,是否被预订,用户名和手机号等信息,然后通过Init这个方法对房间的信息进行初始化,初始化后房间的是否被预订设为否,用户名和手机号都为空。

 

 

图2-5 Web 服务页面代码

然后我创建了一个预订房间的方法BookRoom,这个方法需要被客户端所调用,把用户名、手机号和房间号传递过来。首先找到房间号,然后检查房间是否被预订,如果房间被预订则返回一个false,提示房间已经被预订;如果房间没有被预订,则把用户名和手机号保存到该房间下,同时把是否被预订设置为true,然后返回给客户端true,表示房间预订成功。

最后还需要创建一个取消预订房间的类CancelRoom,这个类需要客户端把用户名和手机号传递过来。然后这个方法会查找是否有保存的手机号,如果没有查找到,则返回false给客户端,提示用户的信息填写错误;如果查找到了手机号,则会把房间下的用户名和手机号都置为空,同时是否被预订设置为false,最后返回true给客户端,提示用户取消预订房间成功。

2)     服务的部署过程

服务端的功能实现了之后需要对其进行部署发布之后才能被客户端所调用。

首先右键点击项目,然后选择发布,弹出如图2-6发布Web的界面。

 

图2-6 发布Web页面

这里我选择的自定义一个配置文件,然后点击下一步,弹出如图2-6的界面。在该界面,发布方法和目标位置选择如图2-7中红圈内所示。

 

图2-7发布Web服务2

设置完之后就可以点击发布按钮进行Web 服务的发布了。发布成功会有如图2-8的提示。

 

图2-8 Web 服务发布成功

此时在我的目标位置中会出现如图2-9的几个文件。

 

图2-9 目标位置文件

接下来需要打开IIS,然后右键点击网站->新建网站,弹出如图2-10的对话框。

 

图 2-10 添加网站

然后在物理地址里填写上一部的物理地址,点击确定后Web服务就部署成功了,客户端可以直接对Web 服务进行调用了。

三、 客户端调用的构建过程

客户端也是通过visual studio 2015来构建的,我是用WPF写了一个应用程序,之所以选择WPF,是因为它操作起来简单方便,开发界面的效率非常的高。如图3-1所示。

 

图3-1 客户端项目

 

客户端的代码主要是在MainWindow.xaml.cs中完成的。完成的代码如图3-2所示。

 

图3-2 客户端代码

客户端代码调用Web 服务需要对Web服务进行引用。方法为右键项目,选择添加->服务引用。如图3-3所示。

 

图3-3 添加引用

然后弹出添加服务引用的对话框,在地址里面填写服务地址:http://localhost:42127/WebService.asmx,然后点击转到,系统就会在该地址中找到你的Web服务。如图3-4所示。这里需要注意的是你的Web服务此时需要开启,不然就会找不到Web服务的。

 

图3-4 添加服务引用

接下来需要选择左下角的高级,然后再选择弹出的界面左下角的添加Web引用,弹出如图3-5所示的对话框。此时在URL里输入你的Web 服务地址,然后点击转到按钮,界面会出现你的Web服务的详细信息。

图3-5 添加Web引用

最后点击添加引用按钮,在解决方案里就会多出了Web服务的文件夹,如图3-6所示。此时客户端就可以对Web服务进行调用了。

 

3-6  客户端生成的Web服务

 

四、 运行结果截图和文字说明

主界面如图4-1所示,用户在这个界面里可以对酒店的房间进行预订和取消。由于只是一个例子,所以界面没有进行美化。

 

图 4-1 主界面

当用户没有输入用户名或手机号或者手机号输入的格式不正确,选择要预订的房间后,系统就会弹出如图4-2“姓名为空或手机号码无效,请重新输入”的提示。

 

 

图 4-2 用户信息填写错误的弹出提示

当用户的用户名和手机号都填写完整后,但是如果入住或退房的日期没有填写或者大于一周的话,选择房间后,系统会弹出“请重新选择入住或退房日期”的提示。如图4-3所示。

 

 

图4-3 入住日期填写错误时的弹出提示

如果用户的信息都填写正确的话,选择了需要预订的房间号后,系统就会弹出预订成功的提示信息,如图4-4所示。

图4-4 客户预约成功提示界面

但是如果用户预订的房间已经被预订的话,那么系统就会弹出如图4-5的提示:

 

图4-5 房间已经被预约的提示界面

在用户取消预约房间的过程中,如果用户的用户名或手机号填写不完整,则弹出如图4-6的提示。

 

图4-6 取消预约时客户信息填写错误的提示信息

如果用户信息都填写正确,那么系统就会弹出如图4-7 取消预约成功的提示信息。

 

图4-7 取消预约成功的提示界面

如果用户所填写的手机号没有预约过房间的话,则弹出如图4-8 取消预约失败的提示消息。

 

图4-8 取消预约失败的提示信息

 

五、 总结

在完成的过程中,我对Web Service环境的配置和开发步骤有了更深的了解,认识到Web Service 是一个平台独立的,低耦合的,自包含的、基于可编程的web的应用程序。通过Web Service可以使得运行在不同机器上的不同应用无须借助附加的、专门的第三方软件或硬件,就可相互交换数据或集成。

同时也让我了解到要完成一个系统的设计,查找资料也是至关重要的,在他人的基础上,再根据自己所学进行修改与调试,最后设计出自己想要的系统,这过程艰辛,但却能让人获得很大的收获。

推荐阅读