web service 教程 webService接口是什么
大家好,感谢邀请,今天来为大家分享一下web service 教程的问题,以及和webService接口是什么的一些困惑,大家要是还不太明白的话,也没有关系,因为接下来将为大家分享,希望可以帮助到大家,解决大家的问题,下面就开始吧!
webService接口是什么
Web是使应用程序可以与平台和编程语言无关的方式进行相互通信的一项技术。Web服务是一个软件接口,它描述了一组可以在网络上通过标准化的 XML消息传递访问的操作。
它使用基于 XML语言的协议来描述要执行的操作或者要与另一个 Web服务交换的数据。一组以这种方式交互的 Web服务在面向服务的体系结构(Service-Oriented Architecture,SOA)中定义了特殊的 Web服务应用程序。
简单的说WebService是一个SOA(面向服务的编程)的架构,它是不依赖于语言,不依赖于平台,可以实现不同的语言(通过xml描述)间的相互调用,通过Internet进行基于Http协议的网络应用间的交互。
通过SOAP在Web上提供的软件服务,使用WSDL文件进行说明,并通过UDDI进行注册。
扩展资料Web Service技术,能使得运行在不同机器上的不同应用无须借助附加的、专门的第三方软件或硬件,就可相互交换数据或集成。
依据Web Service规范实施的应用之间,无论它们所使用的语言、平台或内部协议是什么,都可以相互交换数据。Web Service是自描述、自包含的可用网络模块,可以执行具体的业务功能。
web广泛用到的技术:
TCP/IP:通用网络协议,被各种设备使用
HTML(标准通用标记语言下的一个应用):通用用户界面,可以使用HTML标签显示数据
NET:不同应用程序间共享数据与数据交换
Java:写一次可以在任何系统运行的通用编程语言,因为java具有跨平台特性
XML(标准通用标记语言下的一个子集):通用数据表达语言,在web上传送结构化数据的容易方法
参考资料来源:百度百科—Web Service
求高人解惑,webservice到底是什么
简单答一下:
1.web service本身不能做太多事,各种功能都是你自己编程实现的,但是你的程序只能自己用,自己看,别人根本不知道你的程序是什么样的。而web service就是规定了一种方式,告诉你将你的程序如何的部署到服务器上,然后大家通过一种协商好的地址能找到你的程序的说明,说明的格式也是大家都协商好的,所以可以读懂……然后你就可以根据那个地址来调用这个程序的方法了。
你看,web service本身貌似没干什么,它就是让你可以发布自己的程序和调用别人发布的程序。
2.协议基本就是上面提到的那些大家协商好的东西了,什么形式?什么格式?什么样式?之类的,可以说协议被库支持,其实顺序应该是先有了这个协议,然后这个库遵从这个协议来解析,就说支持这个协议。
3.其实webservice传的数据可以是任意啊,规定用各种格式只是考虑到webservice是牵扯到多方的,不规定的话就好像两个人用不同语言交流,完全互相都不懂,那么就没意义了。xml是最通用的,你也可以说是和库绑定的,但是因为它简单通用,基本各种环境都支持解析xml
怎么做webservice接口
以下是操作步骤:
1、编写服务代码
服务代码提供了两个函数,分别为sayHello和sayHelloToPerson,在HelloService.java类中
2、发布WebService
要将上边写的HelloService类发布为WebService,需要先搭建Web应用。下面是在Tomcat下使用Axis创建WebService服务的例子。
3、在Tomcat下创建Web应用
在该例子中,在Tomcat下创建了一个context path为test_webservice的WEB应用。
(1)在Tomcat的webapps下创建如下文件系统
test_webservice
WEB-INF
lib
Classes
(2)在WEB-INF文件夹下创建web.xml文件,在web.xml中主要是配置axis。
4、复制axis相关的jar文件
将axis的相关jar文件复制到WEB-INF\lib文件夹下。这些文件包括:
activation.jar
axis.jar
axis-ant.jar
axis-schema.jar
commons-discovery-0.2.jar
commons-logging-1.0.4.jar
jaxrpc.jar
log4j-1.2.8.jar
mailapi.jar
saaj.jar
wsdl4j-1.5.1.jar
xmlsec-1.3.0.jar
5、测试发布的WEB应用
启动Tomcat服务,打开IE浏览器,访问http:host:port/test_webservice/services,
如果看到如下界面就说明AXIS部署成功了。
6、发布WebService
发布WebService需要使用现有的AdminService来实现,这里我写了一个批处理文件来发布WebService,以后如果需要发布其他文件,只需要修改相应的参数就可以了。
(1)创建deploy.wsdd文件。
(2)创建发布WebService服务的批处理文件deploywebservice.bat。
其中E:\workspace\Libwebservice是存放axis对应的jar文件的文件夹,现在将所有的jar文件都加入到此文件夹中。
-l后的参数是本地要发布WebService的AdminService对应的访问地址。
最后deploy.wsdd是对应的配置文件名称。
(3)将deploy.wsdd文件和deploywebservice.bat文件复制到同一个文件夹下,执行deploywebservice.bat批处理文件,就可以将deploy.wsdd中描述的Java类发布为WebService。
最简单的webservice如何写
在开始下面这个例子之前,你的系统需要:
1、WIN2000+ IIS;
2、VS.Net;
3、SQL Server(我这里用的是SQL数据库);
这个Web Service的例子用的是MS大吹的C#写的,如果你喜欢VB,那么用VB也是一样的哦,只不过语法上一些小的差别而已,道理都是一样的,不过即然MS都鼓吹C#,如果你能够用C#写还是用这为好哦。
下面是写的步骤:
一、打开VS。NET的集成开发环境,FILE菜单上选择New,新建一个C#的ASP.NET Web Service工程,工程名为WebServiceDemo(完整的是http://localhost/WebServiceDemo)。这是VS就在你的Web系统目录下生成了相应的文件,我的服务目录是默认的c:\Inetpub\wwwroot,生成的文件就在c:\Inetpub\wwwroot\webserviceDemo下,就不多说了。
二、打开与生成工程对应的C#源文件,这里是Service1.asmx.cs,VS.Net集成环境已经为你生成了相应的代码如下:
//=============================================================================
//文件: Service1.asmx.cs
//描述:架构一个Web Service来对数据库进行互访
//
//
//============================================================================
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Web;
using System.Web.Services;
using System.Data.SqlClient;
//系统生成了与工程名相同的命名空间
namespace WebServiceDemo
{
///<summary>
/// Summary description for Service1.
///</summary>
//所有的WEB服务都是派生于System.Web.Services.WebService的。
public class Service1: System.Web.Services.WebService
{
public Service1()
{
//CODEGEN: This call is required by the ASP.NET Web Services Designer
InitializeComponent();
}
}
}
里面我添加了文件说明和相应的注释,接下来就是在里面编写相应的服务代码了。这里我想先把对数据库的操作封装在同一命名空间的单独的一个类里,下面编写WEB方法时只用接调用这个类中的相应方法就可以了。下面是我写的这个类的代码:
//-------------------------------------------------------------------------
//构建一个新类,用于对数据的访问
//-------------------------------------------------------------------------
public class DataAccess
{
//连接字符串成员变量
private string m_szConn="";
private SqlConnection m_sqlConn;
private SqlDataAdapter m_sqlDa;
//构造函数
public DataAccess(string szConnectionString)
{
m_szConn= szConnectionString;
}
//返回一个记录集
public DataSet GetDataset(string szCommandText)
{
DataSet sqlDs;
try
{
m_sqlConn= new SqlConnection(m_szConn);
m_sqlConn.Open();
m_sqlDa= new SqlDataAdapter(szCommandText,m_sqlConn);
sqlDs= new DataSet();
m_sqlDa.Fill(sqlDs);
m_sqlConn.Close();
return sqlDs;
}
catch
{
return null;
}
}
//重载上述方法
public DataSet GetDataset(string szCommandText, string szTableName)
{
DataSet sqlDs;
try
{
m_sqlConn= new SqlConnection(m_szConn);
m_sqlConn.Open();
m_sqlDa= new SqlDataAdapter(szCommandText,m_sqlConn);
sqlDs= new DataSet();
m_sqlDa.Fill(sqlDs,szTableName);
m_sqlConn.Close();
return sqlDs;
}
catch
{
return null;
}
}
}
这些就不多说了,与创建一般的C#类是一样的。类中有三个函数,其中一个为构造函数,调用时传入连接字符串。另外两个函数都是一样的作用,返回用户需要的记录集,只不是调用时传的参数不一样,实质都是一样的。
下面就是在Service1类中添加真正用于WEB调用的代码了,这部分才是给WEB应用程序调用的东西。在编写这个类的代码之前,应该先申请一个服务命令空间,设置相应的属性,这一句可万万不能少哦,呵呵~,它告诉了WEB服务存放的路径等相关的信息。如下:
//声明一个服务空间
[WebService(
Namespace="http://localhost/WebServiceDemo/",//其实这个才是最重要的啦~,其它的都可以不要哦
Name="Web Service Demo",
Description="Web Service Demo"
)]
下面是Service1的代码:
public class Service1: System.Web.Services.WebService
{
public Service1()
{
//CODEGEN: This call is required by the ASP.NET Web Services Designer
InitializeComponent();
}
#region Component Designer generated code
//Required by the Web Services Designer
private IContainer components= null;
///<summary>
/// Required method for Designer support- do not modify
/// the contents of this method with the code editor.
///</summary>
private void InitializeComponent()
{
}
///<summary>
/// Clean up any resources being used.
///</summary>
protected override void Dispose( bool disposing)
{
if(disposing&& components!= null)
{
components.Dispose();
}
base.Dispose(disposing);
}
#endregion
//连接字符串常量
const string szConn="server=(local)\\taoyi;uid=sa;pwd=;"
+"initial catalog=mydata;data source=taoyi";
[WebMethod]
public String About()
{
return"这是一个C#编写的Web Service演示程序!";
}
//返回其中一个WebServiceDemo表
[WebMethod]
public DataSet GetServiceDemoTable()
{
DataSet sqlDs= new DataSet();
DataAccess dataAcc= new DataAccess(szConn);
string szSql="Select* From WebServiceDemo";
sqlDs= dataAcc.GetDataset(szSql,"Demo");
return sqlDs;
}
//返回由用户指定的查询
[WebMethod]
public DataSet GetByUser(string szCommandText)
{
DataSet sqlDs= new DataSet();
DataAccess dataAcc= new DataAccess(szConn);
sqlDs= dataAcc.GetDataset(szCommandText);
return sqlDs;
}
}
是不是很简单哦,就只这么点,呵呵~,不过也可以说明问题的了。这个类中声明了三个WEB方法,有没有发觉呢?每个方法的前面都加了[WebMethod],表示该方法为WEB方法。呵呵,如果你想要你写的函数可以让WEB应用程序调用的话,这个可不能少的啦~,不然WEB应用程序就无法调用的。
到此一个WEB服务就完成了,点击运行看看,如果没什么错的话,就会出现如下的WEB页面服务
Service1
The following operations are supported. For a formal definition, please review the Service Description.
* GetByUser
* GetServiceDemoTable
* About
.....(下面还有很多)
其中代星号的就是先前在函数前加了[WebMethod]的函数。在出现在页面中你可以单击相应的函数,然后就会跳到调用页面,你可以在相应的文本框中(如果函数有参数的话)输入相应的参数,点而调用按钮,那么就可以看到函数返回的结果了(前提是函数调用无错的话),不过全是XML格式的文本。比如我的GetServiceDemoTable函数调用的结果如下:
<?xml version="1.0" encoding="utf-8"?>
-<DataSet xmlns="http://tempuri.org/">
-<xs:schema id="NewDataSet" xmlns="" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
-<xs:element name="NewDataSet" msdata:IsDataSet="true" msdata:Locale="zh-CN">
-<xs:complexType>
-<xs:choice maxOccurs="unbounded">
-<xs:element name="Demo">
-<xs:complexType>
-<xs:sequence>
<xs:element name="ID" type="xs:int" minOccurs="0"/>
<xs:element name="szUser" type="xs:string" minOccurs="0"/>
<xs:element name="szSex" type="xs:string" minOccurs="0"/>
<xs:element name="szAddr" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:schema>
-<diffgr:diffgram xmlns:msdata="urn:schemas-microsoft-com:xml-msdata" xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1">
-<NewDataSet xmlns="">
-<Demo diffgr:id="Demo1" msdata:rowOrder="0">
<ID>1</ID>
<szUser>taoyi</szUser>
<szSex>男</szSex>
<szAddr>四川泸州</szAddr>
</Demo>
-<Demo diffgr:id="Demo2" msdata:rowOrder="1">
<ID>2</ID>
<szUser>xiner</szUser>
<szSex>女</szSex>
<szAddr>四川宜宾</szAddr>
</Demo>
</NewDataSet>
</diffgr:diffgram>
</DataSet>
到此为至,Web Service程序就已经算是完成了。
下面要做的是写一个WEB应用程序来测试我写的这个Web Service了,看看能不能达到想要的结果。建立Web应用程序的步骤如下:
一、新建一个ASP.Net Web Application工程,与创建Web Service的第一步一样,只是工程类型不一样罢了。我这里工程名为WebServiceDemoTest,完整的为http://localhost/WebServiceDemoTest,系统就在相应的目录(c:\Inetpub\wwwroot\WebserviceDemoTest)下生成了所需文件。
二、在设计视图下打开WebForm1.aspx文件,在里面放置一个panel容器,为了达到测试的目的,我们需要三个服务端按钮和一个服务端文本框,分别调用我们在Web Service中写的三个函数,另外,为了展示调用方法所得达的数据,还需要一个服务端标签控件和一个DataGrid控件。页面的布置就随便你了,想怎么放置就怎么放置,只要能达到演示的目的就行。
三、引用先前写的Web Service程序,菜单步骤如下project->add web reference...,然后输入我们Web Service的路径,这里是http://localhost/WebServiceDemo/Service1.asmx,点击添加就OK了。这时你将在类视图中看到localhost命名空间了。
四、编写测试代码。
为了便于后面少写些代码,如(xxxx.xxxx.xx xx= new xxxx.xxx.xx()这种),那么首先你得引用localhost命名空间的service1类,以后直接写xxxx xx= new xxxx()就可以了。
下面是几个按钮的代码:
//测试GetServiceDemoTable()
private void Button2_Click(object sender, System.EventArgs e)
{
DataSet ds= new DataSet();
Service1 oService= new localhost.Service1();
//返回记录集
ds= oService.GetServiceDemoTable();
if(ds!= null)
{
//显示记录集的记录
DataGrid1.DataSource= ds.Tables["Demo"];
DataGrid1.DataBind();
}
else
{
this.Response.Write("加载数据错误!");
}
}
//测试GetByUser()
private void Button1_Click(object sender, System.EventArgs e)
{
DataSet ds= new DataSet();
Service1 oService= new localhost.Service1();
String szCommand= TextBox1.Text;
ds= oService.GetByUser(szCommand);
if(ds!= null)
{
DataGrid1.DataSource= ds;
DataGrid1.DataBind();
}
else
Response.Write("错误!有可能是SQL命令有问题!");
}
//测试About()
private void Button3_Click(object sender, System.EventArgs e)
{
Service1 oService= new localhost.Service1();
Label1.Text= oService.About();
}
OK,最后就是运行了,如果一切OK,点击第一个按钮得到的将是在一个包函用户执行的SQL命令的表结果。第二个按钮得到的就是上面运行Web Service时的GetServiceDemoTable得到的XML描述,即
ID szUser szSex szAddr
1 taoyi男四川泸州
2 xiner女四川宜宾
点击第三个按钮,则在Label1中显示"这是一个C#编写的Web Service演示程序!”的字符串
关于web service 教程,webService接口是什么的介绍到此结束,希望对大家有所帮助。