2018年新入职时,接触过好几 WCF,也知道 Web 瑟维斯的存在,如今正巧在做2个 Web Service 相关的东西,借此机会,学习一下 Web
Service。

概念初识

第二就要打听哪些是 Web Service,Web Service能用来做什么样?具体新闻可参见:Web Service
入门

时下 Web Service 并不曾强烈的概念,推荐维基百科

Web 瑟维斯 是一种面向服务的架构技术,通过正式的 Web
协议提供劳务,保障差别平台(分化语言)间的应用服务能够互操作

  • 提供劳动接口
  • 数据交流

作为面向服务架构的一种达成形式,以一种平台非亲非故的法门在差别体系之间实行相互,

(XML) Web Service,既不是框架、也不是技术,严厉来说是行业专业,通过
Internet 基于 SOAP 协议 在 Web 上提供软件服务,使用 WSDL
文件实行认证,并因而 UDDI 进行注册以供用户查找使用。Web Service是结构分布式、模块化应用程序和面向服务应用集成的技能,利用互联网举办利用集成的消除方案。Web
Service 使用开放的 XML
文档来描述、公布、配置、开发分布式互操作的应用程序。

SOAP + WSDL + UDDI 是八个 Web Service 必不可少的部分,解释如下:

  • SOAP:Simple Object Access Protocol,简易对象访问协议,3个遵照XML 的可扩充音讯信封格式,Web Service 的通讯协议
  • WSDL:Web Services Description Language,Web Service 使用表明,
    贰个 XML
    格式文书档案,用以描述服务端口访问格局和利用协议的底细,指点怎么样调用 Web
    瑟维斯
  • UDDI:Universal Description, Discovery, and
    Integration,1个用来发表和寻找 Web
    服务的情商,应用程序可借因此协议在规划或运维时找到对象 Web 瑟维斯

劳动提供方定义由 WSDL 描述的接口,并行使 SOAP
音讯与服务使用方举行新闻交互。

SOAP协议 = HTTP协议 + XML数据格式

Web Service 选择 HTTP 协议传输数据,接纳 XML
格式封装数据,SOAP协议基于HTTP协议。

优点

  • 阳台独立、低耦合、自包罗,基于可编制程序的Web应用程序
  • 支撑分布式陈设
  • 单向通讯的章程(单工)、请求响应的措施(半双工)
  • 应用程序之间只可以以基于HTTP无状态的方式展开通讯,寄宿于web服务器

基本功运用

对 Web Service 的运用,包涵如下三种办法

[1].
远端进程调用:守旧方法,智跑PC,提供2个分布式函数或措施接口供用户调用

[2]. 面向服务架构:SOA,连接服务 + 调用服务提供的法子

[3]. REST式服务:表明性状态转移,类似于HTTP协议,通过 Web
Service 或 WCF 向外提供 REST 的 Service(restful 接口)

有关利用 JSON 和 XML 的难点

JSON 和 XML 两者都是 Web Service的财富表示方法,用于发送请求和重返结果。

  • JSON:轻量级的数据沟通格式,卓绝的可读性和兼容性、编写连忙
  • XML:扩充标记语言,至极适合 Web 传输

四头的利害

  • 可读性、可扩大性等同
  • 数码大小:JSON 要优于 XML,可是差异相当的小
  • 脾气测试:JSON 的分析速度差不离是 XML 解析的10倍
  • 运用限制:XML 如今被产业界广泛选择,而 JavaScript 语言对 JSON 援救要比
    XML 优越

对于 Web Service 和 Rest Service,可参见:关于Web Service和Rest
Service理解

[1]. 提供劳动

简短起见,新建二个劳动
SqhWebService,提供1个两数相加的措施,基本步骤如下

(1)新建项目 ASP.NET 空 Web
应用程序,命名为 SqhWebService,然后添加 Web 服务,命名为 SqhWeb瑟维斯.asmx,结果为

 图片 1

(2)在劳动文件 SqhWebService.asmx
中,添加两数相加的章程

namespace SqhWebService
{
    /// <summary>
    /// SqhWebService 的摘要说明
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    // 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。
    // [System.Web.Script.Services.ScriptService]
    public class SqhWebService : System.Web.Services.WebService
    {
        [WebMethod]
        public int AddTwoInteger(int a, int b) {
            return a + b;
        }
    }
}

(3)右键 SqhWebService.asmx,点击
在浏览器中查看,服务运维成功

 图片 2

与此同时,记录下服务的 UQashqaiL
地址:http://localhost:20378/SqhWebService.asmx,备用。

[2]. 调用服务

对于服务调用,此处提供 2 种方法:

(1)直接点击上海体育场面中的
AddTwoInteger
方法,即可调用服务措施实行测试

 图片 3

接下来,a = 1, b = 2, 点击调用,会得到如下结果

<?xml version="1.0" encoding="UTF-8"?>
<int xmlns="http://tempuri.org/">3</int>

从此,解析该 xml 音信即可。

(2)新建叁个 ASP.NET 程序依旧控制台程序,关键是 添加服务引用

 图片 4

在弹出的界面中,添加正好记下来的 URAV4L
地址,点击前往确认即可,下方的命名空间能够为 SqhServiceReference 

图片 5

下图给出引用添加后,项目方案能源的结构图

图片 6

上面直接交给主程序中的调用代码

namespace TestWebService
{
    public class Program
    {
        public static void Main(string[] args)
        {
            SqhServiceReference.SqhWebServiceSoapClient client =
                new SqhServiceReference.SqhWebServiceSoapClient();

            int result = client.AddTwoInteger(1, 2);
        }
    }
}

题材消除

[1].
如何达成浏览器对WebService的长途调用?

上述成立的在浏览器调用的web服务仅供本地电脑调试使用,要求配置
web.config 才能落到实处远程调用调节和测试

<system.web>  
    <webServices>  
      <protocols>  
        <add name="HttpGet"/>  
        <add name="HttpPost"/>  
      </protocols>  
    </webServices>    
<system.web>

如不配置,远程调用会并发:测试窗体只好用于来自地点电脑的请求解决的题材。

[2].
不恐怕加载协定为“ServiceReference1.xxxxxx”的终结点配置部分,因为找到了该协定的多少个终结点配置。请按名称提醒首要选拔的终结点配置部分。

原因:在 web.config 文件中一再引用了“添加表面引用”

化解方法:删除多余的 basicHttpBinding 绑定节点和 endpoint
终点节点,保持唯一性

类型安插文件 web.config 应该是之类方式:

图片 7

 

相关文章

网站地图xml地图