微软NET战略的一个比较重要的部分就是webservice利用webservice我们可以创建真正有效的分布式应用程序
下面我们对webservice做一些说明
假设A是客户端B是webservice服务端用户通过http协议向服务器发送soap请求webservice返回客户端XML格式的数据
现在我们看一看创建一个webservice的大致过程
服务端的webservice是必须要建的中间的soapxml我们不用去关心在客户端这边比较重要的是如何从webservice取得对象?答案是用的是proxy对象客户端由代理对象(proxy)负责与webservice的通信所以在客户端使用webservice完全和使用一个本地对象是一样的
我们现在以一个简单的实例来说明
打开新建工程( web服务)在位置中键//localhost/webserver其中webserver就是工程的名字确定后出现一个Serviceasmxcx双击出现代码窗口
using System
using SystemCollections
using SystemComponentModel
using SystemData
using SystemDiagnostics
using SystemWeb
using SystemWebServices
namespace webserver
{
/// <summary>
/// Service 的摘要说明
/// </summary>
()
public class Service SystemWebServicesWebService
{
public Service()
{
//CODEGEN该调用是 ASPNET Web 服务设计器所必需的
InitializeComponent()
}
#region Component Designer generated code
//Web 服务设计器所必需的
private IContainer components = null
/// <summary>
/// 设计器支持所需的方法 不要使用代码编辑器修改
/// 此方法的内容
/// </summary>
private void InitializeComponent()
{
}
/// <summary>
/// 清理所有正在使用的资源
/// </summary>
protected override void Dispose( bool disposing )
{
if(disposing && components != null)
{
componentsDispose()
}
baseDispose(disposing)
}
#endregion
// WEB 服务示例
// HelloWorld() 示例服务返回字符串 Hello World
// 若要生成请取消注释下列行然后保存并生成项目
// 若要测试此 Web 服务请按 F 键
// [WebMethod]
// public string HelloWorld()
// {
// return Hello World
// }
}
}
下面在()处加入
[WebService(Namespace=//localhost/webserver/)]
这是因为soap是基于http协议上的客户端无法知道webservice位于那个服务器上在实际应用中比如上放置这个webservice则Namespace改为
下面我们给这个webservice添加一个方法
// [WebMethod]
// public string HelloWorld()
// {
// return Hello World
// }
微软帮我们写好了一个接着添加一个方法方法名称叫show
[WebMethod]
public string show(string yourname)
{
return +欢迎+yourname
}
现在就可以运行了按F点击show输入你的名字然后点击invote
看到了吧
<?xml version= encoding=utf ?>
<string xmlns=>>欢迎yyg</string>
成功了打开bin目录已经将proxy做好了webserverdll
现在我们在不同的环境下测试
打开新建windows应用程序工程命名为Client增加按钮文本框
现在要用到代理了右键单击右边的reference(引用)选择添加引用选择浏览找到webserver目录下的bin目录下的webserverdll
再加入一个systemwebwebservices的引用在列表中有
在formcs里加入
using SystemWebServices
using webserver
然后在
private SystemWindowsFormsButton button
private SystemWindowsFormsTextBox textBox
后面插入
private webserverservice Client
建立一个service的实例双击按钮代码如下
private void button_Click(object sender SystemEventArgs e)
{
Client =new Service()
string name
name=Clientshow(龙卷风NET)
textBoxText=name
}
按F运行工程点击按钮文本框中显示
欢迎龙卷风NET
AspNET web窗口的测试
方法与上面的一模一样添加引用建立service的实例
在此不在细说
在VB中测试
这个就要相对来说复杂一些
首先在vb中建立一个标准EXE的工程添加引用Microsoft Soap Type library注意如果没有安装Microsoft Soap Toolkit是没有这个类型库的
可以在中下载
添加一个text
Private Sub Form_Load()
TextText = add()
End Sub
Public Function Add() As String
Dim objSoapClient As New SoapClient
objSoapClientClientProperty(ServerHTTPRequest) = True
Call objSoapClientmssoapinit(?WSDL Service ServiceSoap)
这句也可以
objSoapClientmssoapinit(?WSDL)
Add = objSoapClientShow(龙卷风NET)
End Function
调试成功需要注意的
运行服务端webservice的程序出现下面时
支持下列操作有关正式定义请查看服务说明
点击服务说明会得到完整的wsdl文件
?WSDL
我们就要使用这个文件其中包含了我们定义的方法等等
Mssoapinit(bstrWSDLFile as string[bStrServiceName as string ][bStrport as string ] [bstrWSMLDile as string])的用法
其中第二个第三个参数在wsdl文件中可以找到也可以省略