WebService 的创建,部署和使用

来源:互联网 发布:淘宝站内站外推广 编辑:程序博客网 时间:2024/05/02 11:26

   WebService,即Web服务,能使得运行在不同机器上的不同应用无须借助,专门的第三方软件或硬件,就可相互交换数据或集成.

   第一次选择WebService,是为了替代数据库远程连接.我们都知道当SQL允许远程时,则要打开某一端口.但这一点在我们已经部署好的服务器上,却是不被允许的,于是就选择WebService来代替了.当然现在我们也可以选择WCF来完成.不过这不是我们今天的主题.

   WebService返回的数据为XML,这是我们都很熟悉的一种数据方式,大大方便了我们的工作当然,WebService给我们带来的好处远不止这些.我不想讲得更多.相信当你能够熟练运用WebService后,你会发现这是一把锋利的宝刃.

   对于初次接触WebServcie的人来说,长篇理论,不如一个实例来得更实际些,我们更看重的是到底如何能够创建一个WebService并且将其部署,和使用.

   下面我将逐步的完成一个加减乘除功能的WebServic.

   开发环境:VS2012

   IIS环境:WINSERVER2008R2 IIS7.5

   第一步:打开VS2012,新建空项目,注意选择.NET Framework的版本.这里我选择的是.NET Framework 4

    

  新建好项目后,在项目中添加一个WebService项

打开这个文件,我们可以看到,代码如下

[csharp] view plaincopyprint?
  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Linq;  
  4. using System.Web;  
  5. using System.Web.Services;  
  6.   
  7. namespace CalculateService  
  8. {  
  9.     /// <summary>  
  10.     /// WebService1 的摘要说明  
  11.     /// </summary>  
  12.       
  13.   
  14.     [WebService(Namespace = "http://tempuri.org/")]  
  15.     [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]  
  16.     [System.ComponentModel.ToolboxItem(false)]  
  17.     // 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消注释以下行。   
  18.     // [System.Web.Script.Services.ScriptService]  
  19.     public class CalCulService : System.Web.Services.WebService  
  20.     {  
  21.   
  22.         [WebMethod]  
  23.         public string HelloWorld()  
  24.         {  
  25.             return "Hello World";  
  26.         }  
  27.     }  
  28. }  


将HellowWorld这段代码删除,修改后如下

[csharp] view plaincopyprint?
  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Linq;  
  4. using System.Web;  
  5. using System.Web.Services;  
  6.   
  7. namespace CalculateService  
  8. {  
  9.     /// <summary>  
  10.     /// CalCulService 的摘要说明  
  11.     /// </summary>  
  12.     [WebService(Namespace = "http://login.wxjy.info")]  
  13.     [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]  
  14.     [System.ComponentModel.ToolboxItem(false)]  
  15.     // 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消注释以下行。   
  16.     // [System.Web.Script.Services.ScriptService]  
  17.     public class CalCulService : System.Web.Services.WebService  
  18.     {        
  19.         [WebMethod]  
  20.         public int Sum(int a, int b)  
  21.         {  
  22.             return a + b;  
  23.         }  
  24.   
  25.         [WebMethod]  
  26.         public int Sub(int a, int b)  
  27.         {  
  28.             return a - b;  
  29.         }  
  30.   
  31.         [WebMethod]  
  32.         public double Mult(double a, double b)  
  33.         {  
  34.             return a * b;  
  35.         }  
  36.   
  37.         [WebMethod]  
  38.         public double Div(double a, double b)  
  39.         {  
  40.             return a / b;  
  41.         }  
  42.     }  
  43. }  


此时,我们已经完成这个WebService的代码部分.接下来我们要将这个WebService打包发布

在项目上点击右键,点击菜单中的发布

 此时出现如下页面

点击下拉菜单选择新建配置文件

 

完成以上步骤后,我们可以在设置文件生成的文件夹内看到生成的以下文件

 

现在我们要将生成的文件拷贝到已经部署好的IIS服务器上:在服务器上新建文件夹,将文件拷贝至文件夹内,并且为文件夹设置匿名权限.

现在我们在IIS中添加网站

 

需要注意的是:我们的这个WebService是基于.NET 4开发的.如果你的IIS默认使用的是.NET 2.0,那么发布后将会出现异常,而无法访问.

查看一下应用程序池的右边的应用程序池默认设置

 

提供两种解决方案:第一种,在上面的表格中,将应用程序池默认改为4.0即可.当然这是指你的IIS中没有需要2.0的应用程序和网站.

如果你的IIS中还有其它的需要.NET 2.0的应用程序,这时候你可以选择第二个办法

首先添加一个应用程序池

然后添加网站,将网站的应用程序池改为新建的应用程序池

 

当然,我们也可以将这个项目的.NET版本改为3.5,然后重新打包发布.那么就不需要添加对4.0的支持了.

添加完毕,启动网站,此时可以关闭与服务器的连接了.

在本地的浏览器中输入地址

http://xxx.xxx.com/calculservice.asmx

此时我们可以看到以下的界面

此时我们已经完成了这个WebService的创建和部署.接下来,我们要在本地使用它

打开VS2012,新建项目,项目名为TestCalCul

 

在项目中添加新建项

在项目中引用项上点击右键,选择添加服务引用,显示界面如下:

 

点击左下角的高级,出现界面如下

 

 

点击添加Web引用,出现界面如下

在URL中输入我们发布的WebService的URL地址,系统会自动搜索到服务.并且为Web引用设置一个引用名.此引用名将是我们在项目中引用这个服务的命名空间

 

点击添加引用,引用完成.

接下来,我们在WebForm1的cs文件中写如下代码


 

[csharp] view plaincopyprint?
  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Linq;  
  4. using System.Web;  
  5. using System.Web.UI;  
  6. using System.Web.UI.WebControls;  
  7.   
  8. //不要忘记为WebService添加using引用  
  9. using TestCalCul.MyWebService;  
  10.   
  11. namespace TestCalCul  
  12. {  
  13.     public partial class WebForm1 : System.Web.UI.Page  
  14.     {  
  15.         protected void Page_Load(object sender, EventArgs e)  
  16.         {  
  17.             CalCulService cal = new CalCulService();  
  18.             double a = 29755;  
  19.             double b = 112.58;  
  20.             Response.Write(cal.Mult(a, b).ToString());  
  21.         }  
  22.     }  
  23. }  


接下来,在浏览器中运行该项目.可以看到如下结果

 

此时我们已经完成了这个WebService的使用过程

 

其实,这个实例在开发中,没有任何意义.

但是通过这个实例,我们可以看出WebService的复用性,简单性是非常好的.

在VS的环境下,我们可以轻易完成一个WebService的开发过程.

而WebService返回给我们的XML数据方式,也可以充分的和JavaScript等任何一种可以处理XML的语言相结合来

完成我们的需求.

在这里要注意,当WebService连接数据库时,我们要适当的给WebService进行加密.

加密的方式很多,你可以通过在IIS服务器上禁止匿名访问来实现,也可以给WebService的验证增加验证内容,最

简单的就是加上用户名和密码.

还要注意,不要用有含义的方法名称,比如Login或者PayOrder等,回传数据不要使用bool值,尽量使用字符串来替

代,最好在字符串中加上干扰码等.

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 2岁多宝宝不愿意说话怎么办 6岁儿童咬字不清怎么办 两岁宝宝爱看电视怎么办 两岁宝宝喜欢看电视怎么办 三岁宝宝说话不清晰怎么办 儿子快四岁了说话不清楚怎么办 儿子快三岁了说话不清楚怎么办 2岁宝宝受刺激了怎么办 一岁的宝宝口臭怎么办 古话说小孩牙齿掉了怎么办 宝宝三岁胆子小怎么办 小宝宝就是不愿意学说话怎么办 2岁宝宝体重偏重怎么办 三岁宝宝体重偏重怎么办 3岁宝宝说话晚怎么办 孩子吃饭总说话吃饭慢怎么办 我的孩子不聪明怎么办 小孩个子长不高怎么办 晚修自己老喜欢讲话怎么办 宝2岁宝脾气大怎么办 宝宝比同龄孩子发育晚怎么办 早教机构业绩不好怎么办 孩子上早教课哭怎么办 两岁宝宝哭闹不止怎么办 7个月宝宝怕生疏怎么办 5个月宝宝怕洗澡怎么办 4个月宝宝认人怎么办 2岁宝宝语言迟缓怎么办 宝宝老是哭闹不睡觉怎么办 7岁儿童说话晚怎么办 一岁多的婴儿说话晚该怎么办 宝宝甲低300多怎么办 两岁半宝宝还不怎么会讲话怎么办 宝宝两岁半了还不讲话怎么办 两岁宝宝怕生人怎么办 四岁宝宝不说话怎么办 1岁宝宝牙齿黄斑怎么办 儿子俩周半了就是不说话怎么办 两岁宝宝牙齿上有黑渍怎么办 两岁宝宝牙齿发黑怎么办 求帮助宝宝刷牙不会漱口怎么办