.net WebService(一) 无传入参数WebService
来源:互联网 发布:js 新窗口打开链接 编辑:程序博客网 时间:2024/06/04 00:45
这里只讲操作过程,及操作过程中的说明,纯理论的东西不讲,但需注意一点:WebService是为面向服务编程所提供的技术,服务器在一定范围内公开对外“接口”,客户端不论是是asp.net还是java等都可调用这个“接口”以进行数据交互(注意:当服务端代码更改后,客户端一定要“更新服务引用”)
方式一:同步WebService
方式二:异步调用
方式三:开启新线程执行异步操作
同步WebService
服务端
新建空项目WebServiceDemo
图01
删除原有WebServiceDemo建立WService项目
图02
在Wservice项目中新建WSDemo.asmx文件
图03
到此,服务端操作完毕
客户端
在WebServiceDemo上右击新建Wclient项目,并新建Index.aspx页
图04
按F5让网站运行起来,此时,在电脑“任务栏”中应该有两个ASP.NET Development Server,注意区分哪个是服务端的,哪个是客户端的
停止调试,在Wclient项目中添加“服务引用”,注意不是“引用”
图05、06
在Index.aspx.cs中输入以下代码
protected void Page_Load(object sender, EventArgs e) { //释放托管资源,所以加 using //ServiceReference1在新得到的Service References 下 //WSDemoSoapClient是服务端的WSDemo.asmx在客户端的接口,和类一样,要先创建实例 using (ServiceReference1.WSDemoSoapClient wsc = new WSDemoSoapClient()) { string result = wsc.HelloWorld();//HelloWorld为wsc实例下的方法,返回的是字符串"Hello World" Response.Write(result);//得到值后输出到页面 } }将Wclient和Index.aspx分设启动项和启动页,运行网站,此时就能从客户端得到服务端提供的方法的返回值”Hello World”
图07
此时,客户端操作完毕,服务端、客户端均操作完毕
异步调用
接着上面的操作在ServiceReference1(Service References下面)上右击---->配置服务引用---->使”异步操作”处于选中状态,并确定
图08、09
在前台Index.aspx头部中加下Async="true",如:
<%@ Page Language="C#" Async="true" AutoEventWireup="true" CodeBehind="Index.aspx.cs" Inherits="Wclient.Index" %>在Index.aspx.cs中输入以下代码
public partial class Index : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { //释放托管资源,所以加 using //ServiceReference1在新得到的Service References 下 //WSDemoSoapClient是服务端的WSDemo.asmx在客户端的接口,和类一样,要先创建实例 using (ServiceReference1.WSDemoSoapClient wsc = new WSDemoSoapClient()) { //由于是异步执行,不知道什么时候执行完毕,因此采用事件驱动机制 wsc.HelloWorldCompleted += new EventHandler<HelloWorldCompletedEventArgs>(wsc_HelloWorldCompleted); //当事件驱动机制启动并完成后,就立即执行 wsc.HelloWorldAsync(); } } //事件中执行的方法 void wsc_HelloWorldCompleted(object sender, HelloWorldCompletedEventArgs e) { string result = e.Result; Response.Write(result); }}此时,异步操作的客户端操作完毕
在WSDemo.asmx.cs中输入以下代码
public class WSDemo : System.Web.Services.WebService { [WebMethod] public string HelloWorld() { System.Threading.Thread.Sleep(3000);//停3000ms(即3m),好让异步看出效果 return "Hello World"; } }此时,异步操作的服务端操作完毕,服务端、客户端均操作完毕,运行即可看到过三秒后客户端页面显示出服务端提供方法的返回值”Hello World”
开启新线程执行异步操作
接着上面的操作完成内容,删除Index.aspx.cs中的一部分代码,使之恢复到新建立时模样public partial class Index : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } }之后添加using System.ComponentModel;命名空间并输入以下代码
public partial class Index : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { BackgroundWorker backgroundWorker = new BackgroundWorker(); //指名开启一个线程后要执行的方法 backgroundWorker.DoWork += new DoWorkEventHandler(backgroundWorker_DoWork); //当后台操作完成之后要执行的方法 backgroundWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(backgroundWorker_RunWorkerCompleted); //正式执行 backgroundWorker.RunWorkerAsync(); } //当后台操作完成之后要执行的方法 void backgroundWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { Response.Write(e.Result);//得到服务端返回的值后,输出到客户端页面,注意此时还没有输出 } //开启一个线程后要执行的方法 void backgroundWorker_DoWork(object sender, DoWorkEventArgs e) { //在开启线程后执行的方法中建立服务端和客户端的链接 using (ServiceReference1.WSDemoSoapClient wsd = new WSDemoSoapClient()) { e.Result = wsd.HelloWorld();//调用服务端的方法,并将返回值赋给 e.Result } } }此时,开启线程并异步操作的客户端操作完毕,服务端不变,服务端、客户端均操作完毕,运行即可看到过三秒后客户端页面显示出服务端提供方法的返回值”Hello World”
在这一章中,服务端方式返回的是字符串,在实际的项目中,可更据需要返回任意类型,数据集等
再下一章中,将介绍客户端向服务端传入参数的数据交互方式
- .net WebService(一) 无传入参数WebService
- .net WebService(二) 客户端向服务端传入参数的数据交互方式
- webservice中DateTime类型参数的传入问题
- .net像webservice中传入int,double为null时
- webservice 参数
- WebService (一) WebService概念
- 初学者VS2005 .Net WebService使用(一)- 创建WebService 三步曲
- .Net 2.0 WebService传递参数的问题
- .NET WebService
- .net WebService
- .net webservice
- WebService(一)
- WebService<一>
- webService【一】
- WebService在NET中的应用(一)
- Java调用.net开发的webservice(一)
- WebService介绍(一):创建WebService
- [WebService]WebService初级教程(一)
- Delphi封装类到DLL
- 获取Foxmail7.1(build 2.036)本地保存密码的方法(20130816 Update)(ZZ)
- Android开发者指南-运动传感器Motion Sensor[原创译文]
- 计算1000以内所有偶数和.
- Android-01-渐变动画效果,展示启动屏,取消标题,取消状态栏,也即全屏
- .net WebService(一) 无传入参数WebService
- 【PB】事件的触发时机及先后顺序
- Maven:介绍
- 如何提高ASP.NET页面载入速度的方法
- 【PB】如何发布独立的POWERBUILDER应用
- golang中的type转换
- 判断是不是回文数
- CERC 2004 / UVa 1335 Beijing Guards (二分&贪心&想法题)
- Delphi 封装窗体封装DLL