基于.NET的在线订票Web Services应用的设计

来源 :电子世界 | 被引量 : 0次 | 上传用户:notfeet
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  【摘要】本文将通过一个在线订票服务来充分说明Web Services的设计实现过程,以及在Web应用程序中如何使用Web Services。以便大家能对Web Services的设计实现和使用过程有更深刻的理解。
  【关键词】Web服务;.NET框架;XML;SOAP;在线订票
  该Web Services是一个在线订票服务,实现的功能主要包括:车次查找、车票预订和查询最新的消息。开发工具采用的是.NET平台下的Visual Studio.NET,编程语言使用C#,后台数据库采用的是SQL Server 2003。
  一、Web Services的总体设计
  该在线订票Web Services包括以下三个方法:
  1)SearchTrain——根据参数查找车次,这些参数包括诸如出发日期、到达日期和出发地点等。
  2)AddBooking——预订所选车次的车票。
  3)GetInformation——获得最新的消息。
  以上三个方法都需要与数据库联系,从数据库表中提取相应的数据,以XML的格式、SOAP消息的方式返回给调用该服务的应用程序。
  二、Web Services数据库设计
  该Web Services数据库采用SQL Server 2003。数据库名称为TrainService,数据库中包含有关车次信息、车票有效期、订票信息等的详细资料。
  这个数据库中使用三个存储过程,分别是SearchTrain、AddBooking和GetInformation。
  1)SearchTrain存储过程实现的功能是查找与参数相匹配的车次。这些参数包括:出发地点、到达地点、出发日期、开车时间和旅行类型。该存储过程的完整源代码如下:
  CREATE PROCEDURE dbo.Searchtrain
  @sStartingForm varchar(50),
  @sDestination varchar(50),
  @sArrivalDate detetime,
  @sDdepartureDate datetime,
  @iTravelClassID int
  AS
  Begin
  set nocount on
  select T.*,TC.travel_class_id form
  Trains T inner join travel_class_cpacity TCSC
  on TCSC.Train_id=T.Train_id
  inner join travel_class TC
  on TC.travel_class_id=TCSC.travel_class_id
  where T.staring_form=@sStartingForm
  and T.destination=@sdestination
  and T.arrival_date=@dArrivalDate
  and T.departure_date=@dDepartureDate
  and TC.travel_class_id=@iTravelClassID
  and TCSC.number_seats>0
  end
  GO
  2)Addbooking存储过程在Bookings表中插入一条记录,实现订票功能。该存储过程的完整源代码如下:
  CREATE PROCEDURE dbo.AddBooking
  @iTrainID int,
  @iPassengerID int,
  @iTravelClassID int,
  @iBookingID int output
  AS
  Begin
  set nocount on
  Insert into Bookings
  (Train_id,passenger_id,travel_class_id)
  values
  (@iTrainIDm@ipassengerID,@iTravelclass ID)
  Select @iBookingID=@identity
  end
  GO
  3)GetInformation存储过程实现功能是从数据库中返回消息的详细资料。参数InformationID决定存储过程返回的消息的类型。该存储过程的完整源代码如下:
  CREATE PROCEDURE GetInformationTypeID
  @iInformationTypeID smallint
  AS
  begin
  set nocount on
  select convert(varchar(12),infor_date)
  as infor_date,description
  from Information where
  Information_type_id=@iInformation TypeID
  end
  GO
  三、Web Services的实现
  为了实现该Web Services,开发工具采用.NET平台下的Visual Studio.NET,编程语言使用C#。使用Visual Studio.NET开发工具生成各种配置文件相对比较容易,不用完全从头到尾自己写,只需在已经生成的文件上修改。同时,它还能自动引入默认的名称空间,进行外部引用也容易,大大简化了开发Web Services的过程,提高了开发效率。通过访问创建的数据库,该Web Services通过三个方法执行以下操作:   1)根据出发日期、到达日期和出发地点等参数查找车次。
  2)预订所选车次的车票。
  3)获取最新的旅行消息。
  针对要创建的在线订票Web服务Online-WebService,需要引入以下两个命名空间:
  using System.Date.SqlClient;
  using System.Configuration;
  System.Date.SqlClient名称空间允许程序中访问数据访问类,以便能够访问创建的SQL Server数据库TrainService。using System.Configuration名称空间允许使用ConfigurationSettings类访问存储在Web Services的Web.config文件中的连接字符串,这样当数据库所在的服务器地址改变的时候,通过修改Web.config文件中的连接字符串可以顺利、正确的访问数据库。
  (1)Search Train方法的实现
  这个方法用于查找与给定的参数值相匹配的车次。首先,需要使用WebMethod属性来指出这个方法是一个科调用的Web方法,这样ASP.NET在运行时才可以提供所有能够使这个方法在Internet上调用的信息管道。在这个属性中Description参数用于描述该Web方法。因为在该Web方法中不需要保存会话状态,所以将EnableSession设置为false,这样可以清除会话状态所需的系统开销,并可以大大提高应用程序的性能。
  [WebMethod(EnableSession=false,Description=”This method is used to search for Trains and returns the result as a DateSet”)]
  以下语句进行数据库连接、执行SQL语句命令和保存结果所需要的对象:
  SqlConnection sqlConnection;
  SqlDateAdapter sqlDateAdapter;
  sqlConnection=new sqlconnection;
  (ConfigurationSettings.AppSettings[“connectionSting”]);
  在数据库的连接过程中,通过Configur-ationSettings类的AppSettings属性从Wen.config文件获得连接字符串。该连接字符串出现在web.config文件的元素中:
  
    pwd=36;detebase=Trainservice”/>
  

  Web.config文件保存一个ASP.NET应用程序的所有配置信息。该文件是一个XML文件,位于Web应用程序的根目录中,包括身份验证类型、调试设置和会话处理等方面的信息。Web.config文件也为应用程序保存一些具有特殊用途的设置,它使管理员在无需修改应用程序代码或重新启动Web Service的情况下就能够修改配置设置。
  紧接着创建参数对象并设置它们的Value属性,然后通过调用SelectCommand对象的Parameters集合的Add方法,将它们添加到Command对象中:
  SqlParameter paramStarPlace=
  new SqlParameter(“@sStartingForm”, SqlDbType.Varchar,50);
  paramStartPlace.Value=starPlace;
  sqlDataAdapter.SelectCommand.Para meters.Add(paramStartPlace);
  对于所要传递给存储过程的所有参数,都执行以上步骤。这些参数包括有:ParamDest-ination、ParamDepartureDate、Param zArrival和ParamTravelClassID。
  所有参数都添加到Parameters集合之后,利用先前指派的存储过程创建一个新的DataSet对象,并使用sqlDAtaAdapter的Fill方法填充该对象。Fill方法的参数是要被填充的DataSet和作为数据源使用的表的名称:
  Train=new DataSet(); sqlDataAdapter.Fill(Train,”Trains”);
  整个方法执行将返回一个DataSet数据集,它具有强大的功能,该功能允许将复杂的信息和关系存储在一个智能的XML结构中。实际上,DataSet提供一个客户端能够使用的数据库的副本,不过该副本的连接时断开的,从而减少了服务器必须维持的有效数据库连接的次数。
  SearchTrain方法整体被封装在try…catch…finally块中,以捕捉任何可能发生的错误。如果语句执行期间发生错误,则控制权会转到catch程序块,该程序块将错误抛给客户端,以便进行错误处理。Finally程序块调用Close方法关闭同数据库建立的连接。
  (2)AddBooking和GetInformation方法的实现
  AddBooking和GetInformation方法的实现同SearchTrain方法的实现基本上相同,也是将方法整体封装在try…catch…finally块中。
  AddBooking方法的功能是向数据库中添加订票的详细资料,其实现主要是利用TrainService数据库中的AddBooking存储过程。在实现该方法过程中,没有使用sqlData Adapter对象,而是利用SqlCommand对象。该方法的执行结果是将最新创建的订票ID作为输出参数返回。在返回时,利用以下函数将返回值强制转换为整数:
  Int BookingID=Convert.Tolnt32(sqlCo mmand.Parameters[“@iBookingID”].Value);
  GetInformation方法根据Information TypeID参数的值获取有关的最近的新闻和旅行交易信息。如果参数是1,则该方法返回有关旅行交易的信息;如果参数是2,则该方法返回有关旅行新闻。该方法调用GetInformation存储过程实现从数据库中返回消息的详细资料。
  参考文献
  [1]柴晓路.基于Web服务架构与开发互操作技术[M].北京:清华大学出版社.
  [2]强宝华,潘家志等.从关系数据库中生成XML数据源的研究[J].计算机科学,2002,29(5).
  [3]徐享忠,王精业等.基于XML的数据交换格式及其应用[J].计算机工程与设计,2003(05).
  [4]张长昊,夏安邦等.XML技术在信息交互中的应用[J].山东工程学院学报,2002,16(3).
其他文献
【摘要】本文简要介绍了用户在使用数字电视过程中操作不当所造成的故障,并针对每个故障进行了分析,给出了相应的解决办法。  【关键词】数字电视;故障;处理方法  用户对操作不当引起的数字电视收看故障,在日常维修中占到一定的比例,这些故障很常见也易于解决,一般可以通过电话指导用户来完成,这样既能够提高工作效率,又可以缩短用户的故障修复时间。现列举一些由于操作不当引起的故障案例如下:  1.案例一  1.