Web Service (一) :Hello World

  评教系统阶段验收,数据上的一个最大的问题,数据不同步。原因就是评教的基本数据完全是从基础数据库中copy过来的,copy的原因是提高数据查询的效率(相比每次查询基础的视图),但是却造成了一个数据两个库,而所有的数据都是以基础为准的,基础的修改了,我们copy过来的还不能修改,只能重新copy

  如何解决效率和数据不同步的问题,组长提出的Web Service,而且八期在做的教务系统也在使用Web Service,能不能解决我们的问题,是不是最好的方法,不太确定,因为之前也只听说过,也好像在某个视频学习中见到过,但是没有用过,那就先从认识开始吧!


一.WebService是什么


  WebService是什么,它是一种可以接收从内网外网上的其它系统中传递过来的请求,轻量级的独立的通讯技术。是通过SOAP在Web上提供的软件服务,使用WSDL文件进行说明,并通过UDDI进行注册。

从这段话中,我们可以知道是两个系统(多个也可能)之间进行数据交换的技术,更确切说的是为信息的相互通信和共享提供的接口。

  三个新名词,SOAPWSDLUDDI

  SOAP,一种协议,基于XMLHTTP这些标准,(全称:Simple Object Access Protocal,简单对象访问协议),协议大家都不陌生吧。

  WSDL,基于XML的语言,(全称:Web Services DescriptionLanguage,网络服务描述语言),XML格式的语言,下面的例子有说明。

  UDDI,一种目录服务,使用它对Web services 进行注册和搜索。

  这几个不是这篇博客的重点,想要更多的了解,移驾:SOAP WSDL UDDI


. 实现Web Service

  对Web Service有了一些认识,最想知道的就是怎么去实现它,好吧,下面就用编程世界中无人不知无人不晓的Hello world为例吧。

1. 创建Web Service

  首先,VS2012中新建一个解决方法,并添加新项:Web服务。

       Web Service (一) :Hello World

  下面是在默认代码基础上添加了一个Test方法的代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;

namespace WebService
{
    /// <summary>
    /// WebService1 的摘要说明
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    // 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消注释以下行。 
    // [System.Web.Script.Services.ScriptService]
    
   public class WebService1 : System.Web.Services.WebService
    {

        [WebMethod]
        public string HelloWorld()
        {
            return "Hello World";
        }
        [WebMethod(Description = "参数")]
        public string Test(string parameter)
        {
            return parameter;
        } 
    }
}


运行:可以看到两个方法,HelloWorld和新添加的Test方法,以及其它的信息。(这个页面可以看作是上面代码的可视化。地址:http://localhost:8091/WebService1.asmx,后面会用到)

Web Service (一) :Hello World


Web Service提供以下三个属性。

   Namespace:此属性的值包含 XML Web Service的默认命名空间。XML命名空间提供了一种在XML文档中创建名称的方法,该名称可由统一资源标识符(URI)标识。如果不指定命名空间,则使用默认命名空间http://tempuri.org/

   Name:此属性的值包含XML Web Service的名称。在默认情况下,该值是实现XML Web Service的类的名称。

   Description:此属性的值包含描述性消息,此消息将在XML Web Service的说明文件(例如服务说明和服务帮助页)生成后显示给XML Web Service的潜在用户。

 

点开两个方法:(此页面可以看作是方法的可视化,包括了方法名,参数,以及说明)

HelloWorld()方法:

  Web Service (一) :Hello World 调用:Web Service (一) :Hello World

  Test()方法:这里的参数值我们随便写,看看它的调用输出:

  Web Service (一) :Hello World调用:Web Service (一) :Hello World



  从上面的输出结果,我们可以看到,输出结果是XML文档的格式


  到这Web Service创建,运行,其实并不复杂,它也就是一个接口,创建好后,去调用就可以了。下面就来新建一个解决方案来实现调用。


2. 调用Web Service


新建另一个新解决方案(Asp.NET)

(1).添加服务引用

  地址是第一个解决方案Web Service运行后的地址,也可以是网站发布后的Web Service访问地址。

   Web Service (一) :Hello World


(2).添加一个Web 窗体,如下:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WStest.WebForm1" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
</head>
<body>
    <form id="form1" runat="server">  
    <div>  
        <asp:TextBox ID="txtName" runat="server"></asp:TextBox> 
        <asp:Button ID="btnTest" runat="server" Text="Test" />  
    </div>  
    </form>   
</body>
</html>

(3).后台实现:

btnTest的方法

        protected void btnTest_Click(object sender, EventArgs e)
        {
            string name = txtName.Text;
            //ServiceReference1添加Web Service引用的命名空间(上图所示)
            ServiceReference1.WebServiceSoapClient web = new ServiceReference1.WebServiceSoapClient();
            Response.Write((web.HelloWorld()).ToString());
            Response.Write((web.Test(name)).ToString());
        }

(4).运行程序

  Web Service (一) :Hello World

     如图所示,Web Service调用成功。


三. 总结

  WebService的简单认识和实例,仅仅是WebService的开始,WebService的实际的应用还需要根据实际的项目需求,下次把WebService运用到三层结构中,根据实际项目需求再来学习,一步步深入,循序渐进。

 


更详细的用处请看:什么时候使用WebService






Web Service (一) :Hello World,布布扣,bubuko.com

Web Service (一) :Hello World

上一篇:DB2 存储过程语法(翻译)


下一篇:web版电子表格