技术开发 频道

使用Web Service解决多系统登陆问题

【IT168 技术文档】

  微软.NET战略的一个比较重要的部分就是Web Service,利用Web Service我们可以创建真正有效的分布式应用程序。

  下面,我们对Web Service做一些说明。

  假设A是客户端,B是Web Service服务端,用户通过http协议向服务器发送SOAP请求,Web Service返回客户端XML格式的数据。

现在我们看一看创建一个Web Service的大致过程:

  服务端的Web Service是必须要建的。中间的SOAP,XML我们不用去关心,在客户端这边,比较重要的是如何从Web Service取得对象?答案是用的是proxy对象。客户端由代理对象(Proxy)负责与Web Service的通信。所以在客户端使用Web Service,完全和使用一个本地对象是一样的。

我们现在以一个简单的实例来说明。

打开VS.NET,新建工程(ASP.NET Web服务),在位置中键入http://localhost/webserver,其中webserver就是工程的名字。确定后,出现一个Service1.asmx.cx,双击,出现代码窗口:

using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Diagnostics; using System.Web; using System.Web.Services; namespace webserver { /// <summary> /// Service1 的摘要说明。 /// </summary> 1public class Service1 : System.Web.Services.Web Service { public Service1() { //CODEGEN:该调用是 ASP.NET Web 服务设计器所必需的 InitializeComponent(); } Component Designer generated code

//  WEB  服务示例
//  HelloWorld()  示例服务返回字符串  Hello  World
//  若要生成,请取消注释下列行,然后保存并生成项目
//  若要测试此  Web  服务,请按  F5  键

// [WebMethod]
// public  string  HelloWorld()
// {
// return  "Hello  World";
// }
}
}

下面在(1)处加入

[Web Service(Namespace="http://localhost/webserver/")]
这是因为soap是基于http协议上的,客户端无法知道Web Service位于那个服务器上。在实际应用中,比如http://www.name.com上放置这个Web Service,则Namespace改为http://www.name.com/webserver.

下面我们给这个Web Service添加一个方法。
// [WebMethod]
// public  string  HelloWorld()
// {
// return  "Hello  World";
// }
微软帮我们写好了一个,接着添加一个方法。方法名称叫show.
[WebMethod]
public  string  show(string  yourname)
{
return  “http://www.name.com”+”欢迎”+yourname;
}
现在,就可以运行了,按F5,点击show,输入你的名字,然后点击invote
看到了吧。
<?xml  version="1.0"  encoding="utf-8"  ?>  
    <string  xmlns="http://tempuri.org/">http://www.name.com欢迎</string>

成功了。打开bin目录,VS.NET已经将Proxy做好了.webserver.dll。

现在我们在不同的环境下测试:

1. 打开VS.NET,新建”Windows应用程序”工程,命名为Client,增加按钮,文本框。
现在要用到代理了,右键单击右边的reference(引用),选择”添加引用”,选择浏览,找到webserver目录下的bin目录下的webserver.dll
再加入一个system.web.Web Services的引用,在列表中有。
在form1.cs里,加入
using  System.Web.Services;
using  webserver;

然后在

private  System.Windows.Forms.Button  button1;
private  System.Windows.Forms.TextBox  textBox1;

后面,插入

private  webserver.service1  Client

建立一个service1的实例。双击按钮,代码如下:

private  void  button1_Click(object  sender,  System.EventArgs  e)
{
Client  =new  Service1();
string  name;
name=Client.show("Windows.NET");
textBox1.Text=name;
}

按F5,运行工程,点击按钮,文本框中显示
http://www.name.com欢迎Windows.NET


  2.ASP.NET  web窗口的测试

  方法与上面的一模一样,添加引用,建立service1的实例
  在此不在细说。

  3.在VB中测试

  这个就要相对来说复杂一些。

  首先在vb中建立一个”标准EXE”的工程。添加引用:Microsoft  Soap  Type  library。注意:如果没有安装Microsoft  Soap  Toolkit,是没有这个类型库的。

添加一个text
Private  Sub  Form_Load()
        Text1.Text  =  add()
End  Sub

Public  Function  Add()  As  String
Dim  objSoapClient  As  New  SoapClient
        objSoapClient.ClientProperty("ServerHTTPRequest")  =  True
Call  objSoapClient.mssoapinit("http://localhost/webserver/service1.asmx?WSDL",  "Service1",  "Service1Soap")
这句也可以
objSoapClient.mssoapinit("http://localhost/webserver/service1.asmx?WSDL")

        Add  =  objSoapClient.Show("Windows.NET")
End  Function

  调试成功需要注意的:

运行服务端Web Service的程序,出现下面时
支持下列操作。有关正式定义,请查看服务说明。
点击服务说明,会得到完整的wsdl文件
http://localhost/webserver/Service1.asmx?WSDL
我们就要使用这个文件,其中包含了我们定义的方法等等。

  Mssoapinit(bstrWSDLFile  as  string,[bStrServiceName  as  string  ],[bStrport  as  string  ]  ,[bstrWSMLDile  as  string])的用法:

  其中第二个,第三个参数在wsdl文件中可以找到。也可以省略。

0
相关文章