C# WEBSERVICE.docx
- 文档编号:11168061
- 上传时间:2023-05-29
- 格式:DOCX
- 页数:9
- 大小:18.99KB
C# WEBSERVICE.docx
《C# WEBSERVICE.docx》由会员分享,可在线阅读,更多相关《C# WEBSERVICE.docx(9页珍藏版)》请在冰点文库上搜索。
C#WEBSERVICE
使用C#创建webservice及三种调用方式
GB2312
UTF-8
微软.NET战略的一个比较重要的部分就是webservice,利用webservice我们可以创建真正有效的分布式应用程序。
下面,我们对webservice做一些说明。
假设A是客户端,B是webservice服务端,用户通过http协议向服务器发送soap请求,webservice返回客户端XML格式的数据。
现在我们看一看创建一个webservice的大致过程:
服务端的webservice是必须要建的。
中间的soap,xml我们不用去关心,在客户端这边,比较重要的是如何从webservice取得对象?
答案是用的是proxy对象。
客户端由代理对象(proxy)负责与webservice的通信。
所以在客户端使用webservice,完全和使用一个本地对象是一样的。
我们现在以一个简单的实例来说明。
打开,新建工程(web服务),在位置中键入http:
//localhost/webserver,其中webserver就是工程的名字。
确定后,出现一个Service1.asmx.cx,双击,出现代码窗口,
usingSystem;
usingSystem.Collections;
usingSystem.ComponentModel;
usingSystem.Data;
usingSystem.Diagnostics;
usingSystem.Web;
usingSystem.Web.Services;
namespacewebserver
{
///
///Service1的摘要说明。
///
(1)
publicclassService1:
System.Web.Services.WebService
{
publicService1()
{
//CODEGEN:
该调用是ASP.NETWeb服务设计器所必需的
InitializeComponent();
}
#regionComponentDesignergeneratedcode
//Web服务设计器所必需的
privateIContainercomponents=null;
///
///设计器支持所需的方法-不要使用代码编辑器修改
///此方法的内容。
///
privatevoidInitializeComponent()
{
}
///
///清理所有正在使用的资源。
///
protectedoverridevoidDispose(booldisposing)
{
if(disposing&&components!
=null)
{
components.Dispose();
}
base.Dispose(disposing);
}
#endregion
//WEB服务示例
//HelloWorld()示例服务返回字符串HelloWorld
//若要生成,请取消注释下列行,然后保存并生成项目
//若要测试此Web服务,请按F5键
//[WebMethod]
//publicstringHelloWorld()
//{
//return"HelloWorld";
//}
}
}
下面在
(1)处加入
[WebService(Namespace="http:
//localhost/webserver/"
]
这是因为soap是基于http协议上的,客户端无法知道webservice位于那个服务器上。
在实际应用中,比如上放置这个webservice,则Namespace改为
下面我们给这个webservice添加一个方法。
//[WebMethod]
//publicstringHelloWorld()
//{
//return"HelloWorld";
//}
微软帮我们写好了一个,接着添加一个方法。
方法名称叫show.
[WebMethod]
publicstringshow(stringyourname)
{
return“”+”欢迎”+yourname;
}
现在,就可以运行了,按F5,点击show,输入你的名字,然后点击invote
看到了吧。
xmlversion="1.0"encoding="utf-8"?
>
//tempuri.org/">欢迎yyg 成功了。 打开bin目录,V已经将proxy做好了.webserver.dll. 现在我们在不同的环境下测试: 1.打开,新建”windows应用程序”工程,命名为Client,增加按钮,文本框。 现在要用到代理了,右键单击右边的reference(引用),选择”添加引用”,选择浏览,找到webserver目录下的bin目录下的webserver.dll 再加入一个system.web.webservices的引用,在列表中有。 在form1.cs里,加入 usingSystem.Web.Services; usingwebserver; 然后在 privateSystem.Windows.Forms.Buttonbutton1; privateSystem.Windows.Forms.TextBoxtextBox1; 后面,插入 privatewebserver.service1Client 建立一个service1的实例。 双击按钮,代码如下: privatevoidbutton1_Click(objectsender,System.EventArgse) { Client=newService1(); stringname; name=Client.show("龙卷风.NET" ; textBox1.Text=name; } 按F5,运行工程,点击按钮,文本框中显示 欢迎龙卷风.NET 2.Asp.NETweb窗口的测试 方法与上面的一模一样,添加引用,建立service1的实例 在此不在细说。 3.在VB中测试 这个就要相对来说复杂一些 首先在vb中建立一个”标准EXE”的工程。 添加引用: MicrosoftSoapTypelibrary。 注意: 如果没有安装MicrosoftSoapToolkit,是没有这个类型库的。 可以在中下载。 添加一个text PrivateSubForm_Load() Text1.Text=add() EndSub PublicFunctionAdd()AsString DimobjSoapClientAsNewSoapClient objSoapClient.ClientProperty("ServerHTTPRequest" =True CallobjSoapClient.mssoapinit("http: //localhost/webserver/service1.asmx? WSDL","Service1","Service1Soap" 这句也可以 objSoapClient.mssoapinit("http: //localhost/webserver/service1.asmx? WSDL" Add=objSoapClient.Show("龙卷风.NET" EndFunction 调试成功需要注意的: 运行服务端webservice的程序,出现下面时 支持下列操作。 有关正式定义,请查看服务说明。 点击服务说明,会得到完整的wsdl文件 http: //localhost/webserver/Service1.asmx? WSDL 我们就要使用这个文件,其中包含了我们定义的方法等等。 Mssoapinit(bstrWSDLFileasstring,[bStrServiceNameasstring],[bStrportasstring],[bstrWSMLDileasstring])的用法: 其中第二个,第三个参数在wsdl文件中可以找到。 也可以省略。 后续: 还有从COM中生成wsdl文件等等,我会陆续推出的。 一、WebService在cs后台程序中的调用 A、通过命名空间和类名直接调用 示例: WebServicews=newWebService(); strings=ws.HelloWorld(); B、通过添加WEB引用的方式调用,首先添加WEB引用,通过URL指向WEBSERVICE, 指定WEB引用名,假设为KK; 示例: kk.WebServicen=newkk.WebService(); stringss=n.HelloWorld(); 二、WebService在前台页面的JS调用方法 1、首先通过下面的方法把Webservice在前台引用进来 ScriptManagerrunat="server"> ServiceReferencePath="WebService.asmx"InlineScript="True"/> ScriptManager> 2、然后就可以通过JS程序进行调用,示例如下: functiona() { WebService.HelloWorld(onresult); } //这里的onresult是回调函数 functiononresult(result) { alert(result); } functionb() { WebService.add(1,2,onreturn) } functiononreturn(result) { alert(result); } //下面的'context'是上下文,可以通过回到函数通过重载的方式获得; functionc() { WebService.div(1,1,onresultC,onerror,'context'); } functiononresultC(res,c) { alert(res); alert(c); } //onerror是获得异常信息的回调函数,下面给出了获得异常信息的方法 functiononerror(error) { vara=""; a=String.format("获取服务器端异常的具体类型: {0}\t\n获取详细的异常描述信息: {1}\t\n获取造成异常的: {2}\t\n获取服务器端异常的堆栈 跟踪信息: {3}\t\n获取一个布尔值,表示异常是否是由于网络连接超时造成的{4}", error.get_exceptionType(), error.get_message(), error.get_statusCode(), error.get_stackTrace(), error.get_timedOut()) alert(a); } a(); b(); c(); ----自写小例子--- webService---: [WebMethod] publicstringHelloWorld(){ return"HelloWorld,wwg"; } [WebMethod] publicintAddWwg(inta,intb) { returna+b; } exe--- usingCallWebService.localhost; //因为自己没有定义命名空间 namespaceCallWebService { publicpartialclassForm1: Form { publicForm1() { InitializeComponent(); } privatevoidbutton1_Click(objectsender,EventArgse) { ServiceserviceWwg=newService(); inti1=Int32.Parse(txt1.Text.ToString()); inti2=Int32.Parse(txt2.Text.ToString()); intiResult=serviceWwg.AddWwg(i1,i2); lb1.Text=iResult.ToString(); } privatevoidbutton2_Click(objectsender,EventArgse) { CallWebService.localhost.ServiceserviceWwg=newCallWebService.localhost.Service(); stringstrResult=serviceWwg.HelloWorld(); lb1.Text=strResult.ToString(); } } }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C# WEBSERVICE