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项

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

  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这段代码删除,修改后如下

  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文件中写如下代码

  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值,尽量使用字符串来替

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

webservice 发布与使用的更多相关文章

  1. axis2 webservice 发布、调用与项目集成

    发布 1.在apache官网下载axis2包,下载Binary Distribution和War Distribution两个zip. 2.将war放入tomcat webapps下部署.并输入 ht ...

  2. WebService发布到IIS

    发布WebService 第一步:选择项目右键发布 第二步:选择文件系统.目标位置(即,发布后文件保存位置) 单击发布 将WebService发布至IIS 第一步:打开IIS 右键添加网站--填写网站 ...

  3. 基于PI的Webservice发布实例

    [转自http://blog.csdn.net/yin_chuan_lang/article/details/6706816] 最近的项目中,接口较多,而Webservice技术是主要实现方式之一.下 ...

  4. 面向接口的webservice发布方式

    import javax.jws.WebService; /**面向接口的webservice发布方式 */ @WebService public interface JobService { pub ...

  5. WebService发布服务例子

    import javax.jws.WebMethod; import javax.jws.WebService; @WebService public interface WebServiceI { ...

  6. eclipse安装Axis2插件和简单的webservice发布

    2019独角兽企业重金招聘Python工程师标准>>> Axis2与CXF是现在很主流的WebService开发框架(java6也已经支持了),项目上还都是基本上用前两种做开发,今天 ...

  7. java调用C# webService发布的接口

    java调用C# webService发布的接口 java调用C# webService方式有很多种我这里只介绍一种 首先需要引入axis的jar包 axis的maven坐标如下 <depend ...

  8. 使用VS2010创建WebService 发布、测试

    http://blog.sina.com.cn/s/blog_45eaa01a0102vopl.html 1 打开VS2010,菜单    文件->新建->项目 2 选择[ASP.net ...

  9. webservice发布服务:CXF及客户端调用

    2.CXF:(与spring整合) CXF相对来说操作没有AXIS繁琐 1.导入spring的jar包和cxf的jar包 2.在spring的核心配置文件中配置发布的接口类 <?xml vers ...

  10. webService发布和调用--Axis2

    一.工具 1.下载 Axis2以及eclipse的Axis2插件.http://axis.apache.org/axis2/java/core/download.cgi 2.axis2-1.7.1-w ...

随机推荐

  1. 1024程序员节献礼,火山引擎ByteHouse带来三重产品福利

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流.   随着信息技术飞速发展,互联网.Web3.物联网.人工智能相继出现. 在这近三十年的高速发展中,"程序 ...

  2. OpenSSL 升级、回滚

    ImportError: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the 'ssl' module is compiled with ...

  3. No Feign Client for loadBalancing defined. Did you forget to include spring-cloud-starter-loadbalanc

    No Feign Client for loadBalancing defined. Did you forget to include spring-cloud-starter-loadbalanc ...

  4. byte[] 数组,创建的时候赋初始值

    C# //创建一个长度为10的byte数组,并且其中每个byte的值为0x08. byte[] myByteArray = Enumerable.Repeat((byte)0x08, 10).ToAr ...

  5. 微软的一些公开课,Python、机器学习、SQL、AI,全部免费

    大家好,我是老章,刷X看到一位博主Alif Hossain@alifcoder总结了微软的一些公开课,全部免费,蛮不错的.感兴趣可以学一波,还能领徽章. 1. 机器学习简介 本课程是学习机器学习基础知 ...

  6. 五、java操作redis

    系列导航 一.redis单例安装(linux) 二.redis主从环境搭建 三.redis集群搭建 四.redis增加密码验证 五.java操作redis --demo主方法 package com. ...

  7. 二、Mycat安装

    系列导航 一.Mycat实战---为什么要用mycat 二.Mycat安装 三.mycat实验数据 四.mycat垂直分库 五.mycat水平分库 六.mycat全局自增 七.mycat-ER分片 万 ...

  8. webpack-小滴课堂学习笔记

    webpack简介 1.webpack是什么 简介:webpack其实就是一个JavaScript应用程序的静态模块打包器. 2.webpack有什么作用 模块化打包:webpack会将项目的资源文件 ...

  9. nextTick使用

  10. freeswitch APR库内存池

    概述 freeswitch的核心源代码是基于apr库开发的,在不同的系统上有很好的移植性. apr库中的大部分API都需要依赖于内存池,使用内存池简化内存管理,提高内存分配效率,减少内存操作中出错的概 ...