A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 朱陈伟 黑马帝   /  2011-11-17 00:08  /  2587 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

【考点】
创建Web Service的基本代码。
【出现频率】
★★★☆☆
【解答】
在VS 2008中添加新的WEB服务代码模板到WebSvRm项目,并命名为MyWebSv.asmx。这个代码文件实际已经具备了Web Service的基本代码结构,这里编写一个能将小写字母转换为大写字母的Web Service应用。首先编写MyWebSv.asmx.cs如代码13.1所示。

代码13.1  转换大写字母的Web Service:MyWebSv.asmx.cs

using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Xml.Linq;

namespace WebSvRm
{
     //默认命名空间的指定
     [WebService(Namespace = "http://tempuri.org/")]
     [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
     public class MyWebSv : System.Web.Services.WebService
     {
         //声明WebMethod特性,该方法才可以被访问
         [WebMethod]
         public string ConvertWord(string word)
         {
             return word.ToUpperInvariant();
         }
     }
}
然后在WebSvRm项目中添加WEB引用,地址为“http://localhost/MyWebSv.asmx”,这时项目目录下将生成Web References目录,这个目录包含有localhost子目录。然后在WebSvRm项目的默认首页,即Default.aspx中调用Web Service以输出结果,首先编写Default.aspx如代码13.2所示。

代码13.2  调用Web Service的页面:Default.aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebSvRm._Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
     <title>调用Web Service</title>
</head>
<body>
     <form id="form1" runat="server">
     <div>
        请输入需要转换大写字母的初始字母或单词:<asp:TextBox runat="server" ID="input"></asp:TextBox>
        <asp:Button runat="server" ID="btn" Text="开始转换" onclick="btn_Click" />
        <hr />
        调用Web Service所返回的结果:<aspabel runat="server" ID="output"></aspabel>
     </div>
     </form>
</body>
</html>
最后编写Default.aspx.cs如代码13.3所示。

代码13.3  调用Web Service的逻辑代码:Default.aspx.cs

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;

namespace WebSvRm
{
     public partial class _Default : System.Web.UI.Page
     {
         protected void btn_Click(object sender, EventArgs e)
         {
             //获取用户输入值
             string txt1 = this.input.Text;
             //创建MyWebSv对象,引用为WebSv1
             localhost.MyWebSv WebSv1 = new localhost.MyWebSv();
             //调用WebSv1方法,并传递txt1变量,返回值赋值给txt2
             string txt2 = WebSv1.ConvertWord(txt1);
             //将txt2赋值给output控件的“Text”属性值
             this.output.Text = txt2;
         }
     }
}
打开IE浏览器,在浏览器地址栏输入“http://localhost/SendHtml.aspx”,并输入“microsoft .net framework”到TextBox控件中,然后单击“开始转换”按钮,页面运行效果如图13.2所示。

图13.2  Web Service调用实例
【分析】
本题考查面试者利用VS 2008等开发环境创建Web Service应用的基本方法,因为是基本方法,所以不涉及太多概念。实际上,用该方法创建Web Service应用最为简便,其中很多工作已经被VS 2008等开发环境封装,对于很多编程者,这些细节部分是透明的。解答中所创建的Web Service方法非常简单,在调用Web Service方法时,直接添加WEB引用即可。打开添加WEB引用时自动创建的localhost目录,如图13.3所示。

图13.3  添加WEB引用后生成的文件
可见,VS 2008的确做了很多工作,自动创建了4个文件,其中MyWebSv.disco文件用于Web Service的静态发现服务,即使用DISCO定位。不过最常用的Web Service发现服务是使用UDDI发现,即向UDDI服务器注册所创建的Web Service,这样整个Internet上的其他用户可以调用该Web Service的功能了。其中的MyWebSv.wsdl是该Web Service的服务描述,以方便调用方了解Web Service的功能等信息。Reference.cs是客户端的代理类,可用于客户端程序以所属平台的方式直接调用Web Service提供的方法等。Reference.map是一个XML文件,映射了所序列化的文件,即*.disco文件和*.wsdl文件。在实际的项目开发中,Web Service的这些细节工作一般由编程者手动编写,这样更适用于不同项目的需求。

评分

参与人数 1技术分 +1 收起 理由
陈涛 + 1

查看全部评分

2 个回复

倒序浏览
像这种类型的题是比较容易中标的哦,建议找工作的朋友们还是多看看好哦。。。。
回复 使用道具 举报
天使的头像魔鬼的手法!偶爱楼主!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马