最近由于项目需要,笔者一直忙于java平台与.net客户端的接口设计,使用比较多的是java中的webservice框架技术 XFire 、Axis等,然后基于.net服务端的webservice使用知识是面试Asp.net程序员几乎必考的一方面。因此下面了解一下webservice。
Web Service主要是为了使原来各孤立的站点之间的信息能够相互通信、共享而提出的一种接口。 Web Service所使用的是Internet上统一、开放的标准,如HTTP、XML、SOAP(简单对象访问协议)、WSDL等,所以Web Service可以在任何支持这些标准的环境(Windows,Linux)中使用。注:SOAP协议(Simple Object Access Protocal,简单对象访问协议),它是一个用于分散和分布式环境下网络信息交换的基于XML的通讯协议。在此协议下,软件组件或应用程序能够通过标准的HTTP协议进行通讯。它的设计目标就是简单性和扩展性,这有助于大量异构程序和平台之间的互操作性,从而使存在的应用程序能够被广泛的用户访问。
WebService主要解决的跨平或异构程序系统台方面数据交互、信息传递的需求,在项目过程会经常遇到这类的需求。
笔者在VS2008中创建webservice时相当简单,右击项目——》添加新项——》web服务(webservice2为该服务的名称),你就可以看到生成了webservice2.asmx文件
using System;
using System.Collections;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Xml.Linq;
/// <summary>
///WebService2 的摘要说明
/// </summary>
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
//若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。
// [System.Web.Script.Services.ScriptService]
public class WebService2 : System.Web.Services.WebService {
public WebService2 () {
//如果使用设计的组件,请取消注释以下行
//InitializeComponent();
}
[WebMethod]
public string HelloWorld() {
return "Hello World";
}
}
从上面的自动生成的代码分析:[WebService(Namespace = "http://tempuri.org/")]可以根据自己需要更改命名空间,同时看到 class WebService2中 [WebMethod] 可以按需求定义,这里HelloWorld()是默认生成,可以删掉自己重新写,同时可以定义一些属性之类,编写好之后Ctrl+F5进行发布,注意生成后显示了页面,地址栏中的http://localhost:3521/WebSite2/WebService2.asmx就别人引用你的服务地址,如果不是本机调用修改localhost为你发布服务机器的IP地址。
调用方法: 在.net端调用右击你需要调用的项目---》添加Web引用--》粘贴上刚才发布的地址(注意不是本机调用要修改地址中的localhost为该机的IP)---》前往即可找到默认命名为localhost
这里在新建页面调用webservice
public partial class Default2 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs e)
{
//实例化服务对象
localhost.WebService2 lw = new localhost.WebService2();
//调用该服务对象的方法
lw.HelloWorld();
}
}
十分简单的操作,我们可以根据需求定义不同的具体服务的方法,来满足不同的业务应用。具体的Webservice方法实例,笔者将在以后结合java的webservice使用一起给出实例。