关于初识XML Web Service并想疾速上手的人,能够愿望疾速相识它的建立和挪用要领。本文将用一个小例子来报告如何用Visual Studio 2008来建立Web Service以及如何来挪用它。例子中的Web Service将依据客户顺序的要求来返回一幅图象。
1. 建立Web Service项目
翻开VS2008,挑选File/New/Project菜单项,在翻开的New Project对话框中,顺次挑选Visual C# -> Web -> ASP.NET Web Service Application,然后输入项目称号(Name),寄存位置(Position)和解决方案称号(Solution Name),点击“OK”生成项目。此例中我们用AnnotationWebService作为项目和解决方案的称号(见图1)。
图 1:New Project对话框
2. 增添一个Web Service
在VS2008的Solution Explorer中点击AnnotationWebService项,挑选Project/Add new item菜单项,在翻开的Add New Item对话框中,顺次挑选Web/Web Service,然后输入Web Service的称号(Name),点击“Add”来增添一个Web Service。此例中我们用ImageService作为Web Service的称号(见图2)。
图 2:Add New Item对话框
以后,我们在Solution Explorer中会看到如许的项目目次(见图3)。(注重:体系在建立项目时会缺省地增添一个Web Service,名字为Service1,能够点击其右键菜单中的Delete项将其删除。)
图 3:Solution Explorer
3. 为 Web Service编码
右键点击ImageService.asmx,挑选View Markup,能够翻开此文件,我们能够看到以下一行:
<%@ WebService Language="C#" CodeBehind="ImageService.asmx.cs" Class="AnnotationWebService.ImageService" %>
它指导ImageService的代码在ImageService.asmx.cs文件中。我们右键点击ImageService.asmx,挑选View Code,翻开ImageService.asmx.cs文件,增添我们的效劳代码,此例中,我们编写一个依据给定的文件名读取图象并返回给客户端的要领GetImage(见下面代码)。
using System.IO; using System.Web; using System.Web.Services; using System.Web.Services.Protocols; namespace AnnotationWebService { /// <summary> /// Summary description for ImageService /// </summary> [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] [System.ComponentModel.ToolboxItem(false)] // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. // [System.Web.Script.Services.ScriptService] public class ImageService : System.Web.Services.WebService { [WebMethod(Description="Request an image by name")] public byte[] GetImage(string imageFileName) { byte[] imageArray = GetBinaryFile(imageFileName); if (imageArray.Length < 2) { throw new SoapException("Could not open image on server.", SoapException.ServerFaultCode); } else { return imageArray; } } private byte[] GetBinaryFile(string fileName) { string fullPathFileName = HttpContext.Current.Request.PhysicalApplicationPath + fileName; if (File.Exists(fullPathFileName)) { try { FileStream fileStream = File.OpenRead(fullPathFileName); return ConvertStreamToByteBuffer(fileStream); } catch { return new byte[0]; } } else { return new byte[0]; } } public byte[] ConvertStreamToByteBuffer(Stream imageStream) { int imageByte; MemoryStream tempStream = new MemoryStream(); while ((imageByte = imageStream.ReadByte()) != -1) { tempStream.WriteByte((byte)imageByte); } return tempStream.ToArray(); } } }
4. 在IIS中增添虚拟目次(Virtual Directory)
翻开IIS控制台顺序,右键点击Default Web Site,挑选增添New/Virtual Directory菜单项,在翻开的Virtual Directory Caption Wizard对话框中输入虚拟目次别号(Alias),此例中我们输入AnnotationWebService,点击“Next”,再挑选ImageService.asmx地点的目次,再点击“Next”直到“Finish”。(注:以上形貌是基于XP SP3环境。)
5. 为Web Service建立代办(Proxy)
在VS2008中,翻开一个Windows应用顺序解决方案(.sln),此例中我们翻开一个叫做AnnotationApp的解决方案。在要挪用Web Service的项目上(比云云例中我们挑选用DataLib)点击右键,挑选Add Web Reference菜单项(假如从未增加过Web Reference,能够会看不到Add Web Reference菜单项,我们能够先挑选Add Service Reference菜单项,在弹出的Add Service Reference对话框中点击“Advanced”,再在弹出的Service Reference Settings对话框里点击“Add Web Reference”),在弹出的Add Web Reference对话框中,输入我们要挪用的Web Service的URL,此例中我们输入:
http://localhost/AnnotationWebService/ImageService.asmx
然后点击“Go”,ImageService就会显现鄙人面的Web Page里,在Web reference name编辑框输入Web援用的名字,为了防止再用ImageService这个名字,这里我们输入ImageWebService(见图4),然后点击“Add Reference”来增加Web援用。
图 4:Add Web Reference对话框
这会在Solution Explorer中增添一个Web Reference(见图5)。
图 5:Web Reference被增加
增加的援用是Image Service的代办代码,个中包含一个与ImageService同名的类,派生于System.Web.Services.Protocols.SoapHttpClientProtocol。如许在客户代码中就能够像挪用本身的Assembly里的要领一样挪用ImageService的GetImage要领。
6. 客户顺序挪用Web Service
在客户顺序中须要调取图象的处所增添以下代码(注:代码中的Image类不是.Net Framework类库中的Image类,是客户顺序中的一个类):
ImageService imageService = new ImageService(); Bitmap bitmap; try { byte[] image = imageService.GetImage("half-bred panthers.jpg"); MemoryStream memoryStream = new MemoryStream(image); bitmap = new Bitmap(memoryStream); _image = new Image(_viewportTransformer, bitmap); } catch (WebException e) { // Exception handling }
然后,能够将图象显现出来。
7.运转客户顺序来测试Web Service挪用
编译运转客户顺序,Web Service被胜利挪用并返回所挪用的图象(见图6)。
图 6:运转效果
以上就是细致引见XML Web Service图文代码实例的细致内容,更多请关注ki4网别的相干文章!