由于开发需要用到接口, 想到了web service

以前了解过web service 但是没有实际写过, 今天就工作需要写一篇示例, 谨以为后学之人提供一点了解途径.

首先 说明的是我用的开发环境是 VS2010 等下会上传源码(源码是以我本地环境配的 需要修改才能跑的通).

先来扯一段概念, 废话纯粹是复制的各位大大们可以略过

1.1、Web Service基本概念

Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求,轻量级的独立的通讯技术。是:通过SOAP在Web上提供的软件服务,使用WSDL文件进行说明,并通过UDDI进行注册。

XML:(Extensible Markup Language)扩展型可标记语言。面向短期的临时数据处理、面向万维网络,是Soap的基础。

Soap:(Simple Object Access Protocol)简单对象存取协议。是XML Web Service 的通信协议。当用户通过UDDI找到你的WSDL描述文档后,他通过可以SOAP调用你建立的Web服务中的一个或多个操作。SOAP是XML文档形式的调用方法的规范,它可以支持不同的底层接口,像HTTP(S)或者SMTP。

WSDL:(Web Services Description Language) WSDL 文件是一个 XML 文档,用于说明一组 SOAP 消息以及如何交换这些消息。大多数情况下由软件自动生成和使用。

UDDI (Universal Description, Discovery, and Integration) 是一个主要针对Web服务供应商和使用者的新项目。在用户能够调用Web服务之前,必须确定这个服务内包含哪些商务方法,找到被调用的接口定义,还要在服务端来编制软件,UDDI是一种根据描述文档来引导系统查找相应服务的机制。UDDI利用SOAP消息机制(标准的XML/HTTP)来发布,编辑,浏览以及查找注册信息。它采用XML格式来封装各种不同类型的数据,并且发送到注册中心或者由注册中心来返回需要的数据。

1.2、XML Web Service的特点

Web Service的主要目标是跨平台的可互操作性。为了实现这一目标,Web Service 完全基于XML(可扩展标记语言)、XSD(XML Schema)等独立于平台、独立于软件供应商的标准,是创建可互操作的、分布式应用程序的新平台。因此使用Web Service有许多优点:

1、跨防火墙的通信

如果应用程序有成千上万的用户,而且分布在世界各地,那么客户端和服务器之间的通信将是一个棘手的问题。因为客户端和服务器之间通常会有防火墙或者代理服务器。传统的做法是,选择用浏览器作为客户端,写下一大堆ASP页面,把应用程序的中间层暴露给最终用户。这样做的结果是开发难度大,程序很难维护。 要是客户端代码不再如此依赖于HTML表单,客户端的编程就简单多了。如果中间层组件换成Web Service的话,就可以从用户界面直接调用中间层组件,从而省掉建立ASP页面的那一步。要调用Web Service,可以直接使用Microsoft SOAP Toolkit或.net这样的SOAP客户端,也可以使用自己开发的SOAP客户端,然后把它和应用程序连接起来。不仅缩短了开发周期,还减少了代码复杂度,并能够增强应用程序的可维护性。同时,应用程序也不再需要在每次调用中间层组件时,都跳转到相应的“结果页”。

2、应用程序集成

企业级的应用程序开发者都知道,企业里经常都要把用不同语言写成的、在不同平台上运行的各种程序集成起来,而这种集成将花费很大的开发力量。应用程序经常需要从运行的一台主机上的程序中获取数据;或者把数据发送到主机或其它平台应用程序中去。即使在同一个平台上,不同软件厂商生产的各种软件也常常需要集成起来。通过Web Service,应用程序可以用标准的方法把功能和数据“暴露”出来,供其它应用程序使用。

XML Web services 提供了在松耦合环境中使用标准协议(HTTP、XML、SOAP 和 WSDL)交换消息的能力。消息可以是结构化的、带类型的,也可以是松散定义的。

3、B2B的集成

B2B 指的是Business to Business,as in businesses doing business with other businesses,商家(泛指企业)对商家的电子商务,即企业与企业之间通过互联网进行产品、服务及信息的交换。通俗的说法是指进行电子商务交易的供需双方都是商家(或企业、公司),她们使用了Internet的技术或各种商务网络平台,完成商务交易的过程。

Web Service是B2B集成成功的关键。通过Web Service,公司可以只需把关键的商务应用“暴露”给指定的供应商和客户,就可以了,Web Service运行在Internet上,在世界任何地方都可轻易实现,其运行成本就相对较低。Web Service只是B2B集成的一个关键部分,还需要许多其它的部分才能实现集成。 用Web Service来实现B2B集成的最大好处在于可以轻易实现互操作性。只要把商务逻辑“暴露”出来,成为Web Service,就可以让任何指定的合作伙伴调用这些商务逻辑,而不管他们的系统在什么平台上运行,使用什么开发语言。这样就大大减少了花在B2B集成上的时间和成本。

废话完毕, 进入示例阶段

本示例有3个项目, 分别为3个网站

1.web service服务

2.web service服务2

3.web service

1. web service的创建

1.1 你首先必须有项目了, 就示例而言我建了一个网站”web service服务”.

右击项目文件==> 添加新项

1.2 添加web服务, 名字为: Service

1.3 在web服务中添加一个示例方法 Addition() 求和运算.

public class Service : System.Web.Services.WebService {public Service () {//如果使用设计的组件,请取消注释以下行 //InitializeComponent(); }[WebMethod]public string HelloWorld() {return "Hello World";}[WebMethod(Description = " 求和的方法 ")]public double Addition(double i, double j){return (i + j);}
}

ok, 至此一个服务创建好了. 为了充当接口使用我们还必须实现动态的调用各个服务器的方法.

重复新建操作 新建项目网站”web service服务2”.

唯一不同的是:  其方法Addition() 为求和再乘以2运算. 从以判断调用了两个服务

public class Service : System.Web.Services.WebService {public Service () {//如果使用设计的组件,请取消注释以下行 //InitializeComponent(); }[WebMethod]public string HelloWorld() {return "Hello World";}[WebMethod(Description = " 求和的方法 ")]public double Addition(double i, double j){return (i + j)*2;}
}

2. 调用web服务

2.1 新建一个空网站, 名字: Web Service

2.2 添加web引用

运行 web service服务 网站将其下的 Service.asmx 页面地址复制到下面url框中然后点击 小箭头

我的机子地址是. 如果你想要跑成功源码这个地址必须改.

http://localhost:5913/Web%20Service%E6%9C%8D%E5%8A%A1/Service.asmx

看多了这么多东西

2.3 编写调用方法

新建页面default.aspx

添加两个按钮分别对应

1.web service服务

2.web service服务2

两个服务的调用.

页面代码为:

<form id="form1" runat="server">
<div><asp:Button ID="Button1" runat="server" Text="第一个服务" OnClick="Button1_Click" />
</div>
<div><asp:Label ID="Label1" runat="server" Text="加法运算:"></asp:Label></div>
<div><asp:Button ID="Button2" runat="server" Text="第二个服务" OnClick="Button2_Click" />
</div>
<div><asp:Label ID="Label2" runat="server" Text="先加后乘2:"></asp:Label></div>
</form>

添加两个按钮事件代码:

protected void Button1_Click(object sender, EventArgs e)
{localhost.Service ws = new localhost.Service();double db = ws.Addition(1, 3);Label1.Text += db.ToString();
}protected void Button2_Click(object sender, EventArgs e)
{localhost.Service ws = new localhost.Service();ws.Url = "http://localhost:6039/Web%20Service%E6%9C%8D%E5%8A%A12/Service.asmx";double db = ws.Addition(1, 3);Label2.Text += db.ToString();
}

第一个方法 是调用默认的服务 就是第一个”web service服务”的服务 传入值为 1,3 返回结果应该为: 1+3=4

第二个方法 是调用”web service服务2”的服务 传入值为 1,3 返回结果应该为: (1+3)*2=8

运行页面计算结果:

说明完全正确. 达到预期目标.

3. 关于安全

web服务就这样肯定是不安全的

至于安全处理方法有很多, 这里暂时不做细讲(因为我项目中用不到, 哈哈!)

我用到的方法提供给大家

限制IP

Ip获取方法

    [WebMethod]public string GetIp(){string ip = "";if (Context.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != null){ip = Context.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];}else{ip = Context.Request.ServerVariables["REMOTE_ADDR"];}return ip;}

再加上, 传参的时候传一个权限判断字符串 over了.

就此完结. 大家有好的安全机制欢迎发邮件分享与我我一起探讨, 邮件”henw@163.com”.

源码下载: Web_Service.zip

如果你想要跑成功源码服务引用地址必须改. 这个问题别再说了.

转载于:https://www.cnblogs.com/henw/archive/2012/02/10/2345467.html

web service(web服务)总结相关推荐

  1. Web Service 安全性解决方案(SOAP篇)

    拼吾爱程序人生 » 软件编程 » Visual Studio.NET » Web Service » Web Service 安全性解决方案(SOAP篇) Web Service 安全性解决方案(SO ...

  2. java web service_怎样新建一个Java的Web Service

    展开全部 1.web  service分客户端和服务端. 2.新建服务端:在这里我教你用MyEclipse自带的工具62616964757a686964616fe4b893e5b19e31333337 ...

  3. JAVA开发Web Service几种框架介绍

    在讲Web Service开发服务时,需要介绍一个目前开发Web Service的几个框架,分别为Axis,axis2,Xfire,CXF以及JWS(也就是前面所述的JAX-WS,这是Java6发布所 ...

  4. Web Service学习笔记

    Web Service概述 Web Service的定义 W3C组织对其的定义例如以下,它是一个软件系统,为了支持跨网络的机器间相互操作交互而设计.Web Service服务通常被定义为一组模块化的A ...

  5. Web Service属性介绍

    Web Service属性介绍 每个 Web Service都需要唯一的命名空间,它可使客户端应用程序区分出可能使用相同方法名称的 Web Service.在 Visual Studio.NET中创建 ...

  6. 构建安全的Xml Web Service系列之初探使用Soap头

    Xml Web Service 从诞生那天就说自己都么都么好,还津津乐道的说internet也会因此而进入一个新纪元,可5年多来,Xml Web Service并没有像当初宣扬的那样火起来,尽管在一些 ...

  7. python接口测试实战_Python接口测试实战5(下) - RESTful、Web Service及Mock Server

    课程目录 更多学习资料请加添加作者微信:superz-han获取 本节内容 REST及RESTful API Web Service XML解析 Mock Server REST及RESTful AP ...

  8. Java调用.Net的web service的几种方式

    最近做项目,涉及到web-service调用,现学了一个星期,现简单的做一个小结.下面实现的是对传喜物流系统( http://vip.cxcod.com/PodApi/GetPodStr.asmx?w ...

  9. 利用SoapUI 测试web service的方法介绍

    http://boyun.sh.cn/blog/?p=1076 1. 简介 SoapUI是用java开发的测试web service的工具. 2. 安装 2.1. 下载地址 http://www.so ...

最新文章

  1. 量子领域、人工智能都是佼佼者,中国科技实力详解
  2. mysql explain用法和结果的含义
  3. 炸锅了!Google称2029年人类开始实现永生不死!疾病,衰老,痛苦将彻底消失!?
  4. Gauss高斯消元——模板
  5. filterwriter_Java FilterWriter flush()方法与示例
  6. 获取当前 服务 路径 .net
  7. 用于UML前端展示的jsuml2插件
  8. NetSuite 在中国 - 一个全程信息化管理平台
  9. python用嵌套if结构开发一个输入(input)快递价格的计算器
  10. R语言(pROC)绘图
  11. 【怎么用系列】我将收藏的微信公众号文章全部清空了——个人“去微信化”活动
  12. CSS 哀悼日 网页全灰效果
  13. 最新时下最火的盲盒商城源码/视频搭建教程
  14. 小白如何上手几款微信小程序UI组件库
  15. 尚学堂j2ee视频教程
  16. 新唐NUC980使用记录:在用户应用中使用GPIO
  17. 【工业4.0】工业4.0时代的大生产体系架构
  18. 色谱法——科研生必用的分析方法!
  19. 『 高达 购物车案例 』jQuery + Java Script 全功能实现【超详细 代码分析】
  20. python迭代器问题

热门文章

  1. 【Web安全】关于SQL注入简介以及使用SqlMap获取管理员密码的探索
  2. java方法定义 与调用_Java方法的定义及调用
  3. 网站内容优化时需注意哪些事项?
  4. 网站推广的三大基本方式
  5. 浅谈手机网站优化的需要注意哪些事项?
  6. 动网 php v1.0 漏洞,动网(DVBBS)PHP论坛preview.php代码执行漏洞
  7. mfc 静态框接收tab焦点_目标检测中焦点损失的入门指南
  8. python变量需要声明吗_python中可以声明变量类型吗
  9. mysql foreign key 设置_mysql foreign key(外键) 说明与实例
  10. 开发日记-20190914 关键词 汇编语言王爽版 第七章第八章