Asp .Net Web API及相关技术介绍课件.pptx

上传人:牧羊曲112 文档编号:1456134 上传时间:2022-11-27 格式:PPTX 页数:85 大小:1.67MB
返回 下载 相关 举报
Asp .Net Web API及相关技术介绍课件.pptx_第1页
第1页 / 共85页
Asp .Net Web API及相关技术介绍课件.pptx_第2页
第2页 / 共85页
Asp .Net Web API及相关技术介绍课件.pptx_第3页
第3页 / 共85页
Asp .Net Web API及相关技术介绍课件.pptx_第4页
第4页 / 共85页
Asp .Net Web API及相关技术介绍课件.pptx_第5页
第5页 / 共85页
点击查看更多>>
资源描述

《Asp .Net Web API及相关技术介绍课件.pptx》由会员分享,可在线阅读,更多相关《Asp .Net Web API及相关技术介绍课件.pptx(85页珍藏版)》请在三一办公上搜索。

1、Asp.Net WebAPI 及相关技术介绍,2022/11/27,第1页,这个PPT涉及到的技术,本文讲的其实是Web服务技术发展史,共87多页,WebAPI在讲到第37页的时候才会出现,因为这个技术不是凭空产生的,它有着自己的演变进化的历史。我们要先弄清它从哪里来的?然后再说它能做什么事。这个PPT涉及到的技术名词有: XML-RPC,SOAP,REST, SOA Asp.Net WebForm,WebService, WCF Asp.Net WebAPI, Asp.Net MVC,JSON Asp.Net Routing, MVVM,DOM HttpModule, HttpHandler

2、, Ajax Jquery JS,Knockout JS,2022/11/27,第2页,内容提纲,三种Web服务主流架构的历史演变与示例。(XML-RPC,SOAP,REST)2. REST兴起与Asp.Net WebAPI介绍。3. Asp.Net WebAPI与相关技术比较及SOA 。4. 与WebAPI配合的前端JS开发框架介绍(Knockout与jQuery)。,2022/11/27,第3页,Asp.Net WebAPI 是什么?,Asp.Net WebAPI 是一种Web服务,是服务器端的技术,要想说清它,就要先把Web服务三种主流架构XML-RPC,SOAP,REST交代一下!,2

3、022/11/27,第4页,三种主流Web服务架构 - XML-RPC,RPC是Remote Procedure Call的缩写,中文是远程过程调用,是一种在本地的机器上调用远端机器上的一个过程(方法)的技术,这个过程也被大家称为“分布式计算”,是为了提高各个分立机器的“互操作性”而发明出来的技术。一个RPC系统,必然包括2个部分: 1.RPC Client,用来向RPC Server调用方法, 并接收方法的返回数据; 2.RPC Server,用于响应RPC Client的请求,执行方法,并回送方法执行结果。 顾名思义,XML-RPC就是应用了XML技术的RPC,它是一种使用Http协议做为

4、传输协议的远程过程调用(Remote Procedure Call,RPC)机制,使用Xml文本的方式传输命令和数据。后来在新的功能不断被引入下,这个标准慢慢演变成为今日的SOAP。在RPC中,调用双方传递的数据常用二进制,而在XML-RPC中数据将是XML格式的。那么为什么用XML而不用二进制呢?我想一方面是为了兼容更多的语言,因为这个世界上除了C/C+等编译语言,还有很多其他语言,另一方面是为了隔离操作系统的差异,比如说Little Endian和Big Endian的差异等。基于种种原因,XML-RPC选择了XML这种中间语言作为其信息的格式,然后由各个语言负责将其转变成各自native

5、(本土)的数据类型。,2022/11/27,第5页,一个XML-RPC 的例子,2022/11/27,第6页,以下为一个 XML-RPC 请求的范例: examples.getStateName 40 相对于上述请求,以下为一个寻常回应的范例: South Dakota ,三种主流Web服务架构 - SOAP,SOAP:简单对象访问协议(Simple Object Access Protocol)是一种标准化的通讯规范,主要用于Web服务(Web Service)中。例如:一个 SOAP 消息可以发送到一个具有 Web Service 功能的 Web 站点,后台有数据库,消息的参数中标明这是一

6、个查询消息,此站点将返回一个 XML 格式的信息,其中包含了查询结果,由于数据是用一种标准化的可分析的结构来传递的,所以可以直接被第三方站点所利用。SOAP具体技术实现: WebService, WCF,2022/11/27,第7页,为什么需要SOAP?,大型企业中信息系统大多数为多平台、多系统的复杂系统。这就要求今天的企业解决方案具有广泛的兼容能力,可以支持不同的系统平台、数据格式和多种连接方式。对于部署各种平台上的各式各样的程序开发来说,能在程序之间进行因特网通信是很重要的。以前应用程序通过使用远程过程调用(RPC)在诸如 DCOM 与 CORBA 等对象之间进行通信,但是 RPC 会产生

7、兼容性以及安全问题;防火墙和代理服务器通常会阻止此类流量。而通过 HTTP 在应用程序间通信是更好的方法,因为 HTTP 得到了所有的因特网浏览器及服务器的支持。SOAP 就是被创造出来完成这个任务的。SOAP 提供了一种标准的方法,使得运行在不同的操作系统并使用不同的技术和编程语言的应用程序可以互相进行通信。,2022/11/27,第8页,什么是SOAP?,SOAP(Simple Object Access Protocol )简单对象访问协议是是一种简单的基于 XML 的协议,它使应用程序通过 HTTP 来交换信息。更简单地说:SOAP 是用于访问网络服务的协议。SOAP=RPC+HTTP

8、+XMLSOAP的两个主要设计目标是简单性和可扩展性。一条 SOAP 消息就是一个普通的 XML 文档,包含下列元素: 1. 必需的 Envelope 元素,可把此 XML 文档标识为一条 SOAP 消息。 2.可选的 Header 元素,包含头部信息。 3.必需的 Body 元素,包含所有的调用和响应信息。 4.可选的 Fault 元素,提供有关在处理此消息所发生错误的信息。,2022/11/27,第9页,SOAP 消息的基本结构, . . . . . . ,2022/11/27,第10页,Soap的请求例子,POST /InStock HTTP/1.1 Host: www.example.

9、org Content-Type: application/soap+xml; charset=utf-8 Content-Length: nnn IBM ,2022/11/27,第11页,Soap的响应例子,HTTP/1.1 200 OK Content-Type: application/soap+xml; charset=utf-8 Content-Length: nnn 34.5 ,2022/11/27,第12页,三种主流Web服务架构 - REST,表述状态转移: REST (Representational State Transfer),采用Web 服务使用标准的 HTTP 方法

10、 (GET/PUT/POST/DELETE) 来抽象所有 Web 系统的服务能力,它是一种软件架构风格,一种针对网络应用的开发方式,可以降低开发的复杂性。REST从资源的角度来观察整个网络,分布在各处的资源由URI确定,而客户端的应用通过URI来获取资源的表征。REST具体技术实现: Asp.Net WebAPI,2022/11/27,第13页,三种主流架构的关系,三者目的相同:都是为了实现RPC中的消息交换,为了更方便在网络中传输,而且由于HTTP的无状态性,都使得HTTP为这三者的常用的传输协议。发展史:从之前的各个专有系统之间不能数据交换,到专有的XML-RPC, 后来XML-RPC慢慢

11、的被通用的SOAP开发方式所取代,为了进一步简化,就出现了REST,可以使用操作更简单的JSON替代较复杂的XML。发展趋势:目前在三种主流的Web服务实现方案中,因为REST模式的Web服务与复杂的SOAP和XML-RPC对比来讲明显的更加简洁,越来越多的Web服务开始采用REST风格设计和实现。,2022/11/27,第14页,首先回顾一下传统的Web服务,Web service也叫XML Web Service, 它通过标准化接口(WSDL)提供,使用标准化语言(XML)进行描述,并可基于标准化传输方式(HTTP和JMS)、采用标准化 协议(SOAP)进行调用,并使用XML SCHEMA

12、方式对数据进行描述,它有什么好处呢?第一,Web Service是跨平台的,应用程序经常需要从运行在IBM主机上的程序中获取数据,然后把数据发送到主机或UNIX应用程序中去。即使在同一个平台上, 不同软件厂商生产的各种软件也常常需要集成起来。通过WebService,应用程序可以用标准的方法把功能和数据“暴露”出来,供其它应用程序使用。第二,Web Service是无语言限制的,你可以使用.NET,JAVA,PHP,VB.等多种语言开发并进行相互调用。第三, 使用SOAP时数据是以ASCII文本的方式传输,调用很方便,数据容易通过防火墙而实现无缝连接。,2022/11/27,第15页,Web服

13、务特点总结,优点(适用的场景) 1、跨防火墙的通信 2、跨平台,跨语言应用程序集成 3、软件和数据重用 缺点(不适用的场景) 1、 单机应用程序 2、 局域网的一些应用程序,2022/11/27,第16页,一个Web服务的例子,using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.Services;namespace WebServiceSoap public class Service1 : System.Web.Services.WebService

14、 WebMethod public string HelloWorld() return Hello World; ,2022/11/27,第17页,用JS调用Web Service的例子,/这是我们创建的Web服务的地址var URL = “http:/localhost/YBWS/WebService.asmx”;/在这处拼接Http请求内容var data;data = ;data = data + ;data = data + ;data = data + ;data = data + ;data = data + ;/创建异步对象var xmlhttp = new ActiveXOb

15、ject(Microsoft.XMLHTTP);xmlhttp.Open(POST, URL, false);xmlhttp.SetRequestHeader(Content-Type, application/soap+xml);xmlhttp.Send(data);,2022/11/27,第18页,对Web服务的Http请求,POST http:/22.11.143.88:9003/Service1.asmx HTTP/1.1Host: 22.11.143.88:9003Content-Type: application/soap+xml; charset=utf-8Content-Len

16、gth: 314 ,2022/11/27,第19页,对Web服务的Http响应,HTTP/1.1 200 OKCache-Control: private, max-age=0Content-Type: application/soap+xml; charset=utf-8Server: Microsoft-IIS/8.5X-AspNet-Version: 2.0.50727X-Powered-By: ASP.NETDate: Mon, 08 Dec 2014 02:15:12 GMTContent-Length: 361 Hello World ,2022/11/27,第20页,说完Web服

17、务,就轮到WCF了,Windows Communication Foundation( WCF),是微软通用的服务架构平台,其目的在于创建一个通用的Web Service平台,可以在各种不同的协议(TCP, UDP, HTTP)下使用,仅仅通过EndPoint的配置而不需要修改代码实现就能适应不同的工作环境,从而降低了分布式系统开发者的学习曲线,并统一开发标准。它的好处呢?第一,开发的统一性。WCF是对于ASMX, Remoting,Enterprise Service,WSE,MSMQ,TCP开发等技术的整合。WCF是由托管代码编写,无论你是使用TCP通讯,Rmoting通讯还是Web Se

18、rvice ,我们都可以使用统一的模式进行开发,利用WCF来创建面向服务的应用程序。第二,WCF能够实现多方互操作。它是使用 SOAP通信机制,这就保证了系统之间的互操作性,即使是运行不同开发语言,也可以跨进程、跨机器甚至于跨平台的通信。例如:使用J2EE的服务器(如WebSphere,WebLogic),应用程序可以在Windows操作系统进行调用,也可以运行在其他的 操作系统,如Sun Solaris,HP Unix,Linux等等。第三,提供高效的安全与可信赖度,它可以使用不同的安全认证将WS-Security,WS-Trust和WS-SecureConversation等添加到SOAP

19、消息中。,2022/11/27,第21页,WCF的另一个好处,WCF要求客户端保持一致的编程方式,不用考虑服务的位置。不管服务部署在本机上还是别的机器上,WCF不允许客户端直接与服务交互,即使它调用的是本地机器内存中的服务,WCF仍然使用远程编程模型的实例化方式,并使用代理。因而对于本地和远程方式而言,WCF都只需要维持相同的编程模型。这就使得开发者不会因为服务位置的改变影响客户端,同时还大大地简化了应用程序的编程模型。,2022/11/27,第22页,WCF具体实例-服务接口,using System;using System.Collections.Generic;using System

20、.Linq;using System.Runtime.Serialization;using System.ServiceModel;using System.ServiceModel.Web;using System.Text;namespace TerminalService ServiceContract public interface ITerminalService / / 获取当前日夜模式标志及夜间节点wf,queue的服务器地址 / / OperationContract NightServerAddress GetDayNightFlagAndNightServer(); ,

21、2022/11/27,第23页,WCF具体实例-数据合约,using System;namespace TerminalService DataContract public class NightServerAddress string dayNightFlag = “D; string wfValue = String.Empty; string queueValue = String.Empty; DataMember public string DayNightFlag get return dayNightFlag; set dayNightFlag = value; DataMem

22、ber public string wf get return wfValue; set wfValue = value; DataMember public string queue get return queueValue; set queueValue = value; ,2022/11/27,第24页,WCF具体实例-服务具体代码,using System;using System.Collections.Generic;using System.Linq;using System.Runtime.Serialization;using System.ServiceModel;usi

23、ng System.ServiceModel.Web;using System.Text;using System.Data.SqlClient;using System.Configuration;using System.Data;namespace TerminalService public class TerminalService : ITerminalService public NightServerAddress GetDayNightFlagAndNightServer() NightServerAddress obj = new NightServerAddress();

24、 obj.DayNightFlag = D; obj.wf=http:/22.11.143.88:8008; obj.queue=http:/22.11.143.88:8009; return NightServerAddress; ,2022/11/27,第25页,WCF具体实例-C#客户端调用方法,using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebControls;namespace WebAp

25、p public partial class _Default : System.Web.UI.Page protected void Page_Load(object sender, EventArgs e) ServiceReference1.Service1Client client = new ServiceReference1.Service1Client(); ServiceReference1.NightServerAddress result = client.GetDayNightFlagAndNightServer(); ,2022/11/27,第26页,WCF具体实例-H

26、ttp请求,POST http:/22.11.143.88:9999/TerminalService.svc HTTP/1.1Content-Type: text/xml; charset=utf-8SOAPAction: http:/tempuri.org/ITerminalService/GetDayNightFlagHost: 22.11.143.88:9999Content-Length: nnnExpect: 100-continueConnection: Keep-Alive http:/tempuri.org/IService1/GetDayNightFlagAndNightSe

27、rver ,2022/11/27,第27页,WCF具体实例-Http响应,HTTP/1.1 200 OKContent-Type: text/xml; charset=utf-8Server: Microsoft-IIS/8.5X-Powered-By: ASP.NETDate: Mon, 08 Dec 2014 04:03:41 GMTContent-Length: nnn D http:/22.11.143.88:8008 http:/22.11.143.88:8009 ,2022/11/27,第28页,Web服务和WCF的反思,回味一下Web服务和WCF就可以发现,他们虽然使用了HTTP

28、协议,但是其实建立在 SOAP 上,以至于我们提到 Web 服务就会想到 SOAP,也就是说,他们并没有直接建立在 HTTP上,仅仅使用HTTP作为一种夹带其他的应用协议穿越防火墙的方法,可以说,他们没有充分挖掘并利用HTTP协议。2000年时,有个家伙思考了一下, HTTP协议(HyperText Transfer Protocol,超文本传输协议),它并不是被设计为一种传输协议,它是一种转移协议非常不幸,HTTP传入我国时,即被翻译为“超文本传输协议”,因为Transfer也有“传输”的含意,但其本意是转移。在HTTP协议中,消息通过在那些资源的表述上的转移和操作,来对资源执行一些动作,从

29、而反映出Web架构的语义,因此使用这个非常简单的接口来获得广泛的功能是完全有可能的。,2022/11/27,第29页,REST崛起,表述化状态转移 (Representational State Transfer,简称REST )是Roy Thomas Fielding博士在2000年他的论文中提出来的一种软件架构风格。REST软件架构风格迅速成为当今世界上最成功的互联网的超媒体分布式系统。它让人们真正理解我们的网络协议HTTP本来面貌。它正在成为网络服务的主流技术。REST软件架构是一个抽象的概念,是一种为了实现这一互联网的超媒体分布式系统的行动指南。利用任何的技术都可以实现这种理念。而实现

30、这一软件架构最著名的就是HTTP协议。通常我们把REST也写作为REST/HTTP,在实际中往往把REST理解为基于HTTP的REST软件架构。尽管网络服务目前是以SOAP技术为主,但是REST将是是网络服务的另一选择,并且是真正意义上的网络服务。基于SOAP的Web Service实现技术和相关代码,虽然较为成熟,且安全性较好,但是使用门槛较高,而且在大并发情况下可能会有性能问题。目前在三种主流的Web服务实现方案中,因为REST模式与复杂的SOAP和XML-RPC相比更加简洁,越来越多的Web服务开始采用REST风格设计和实现。,2022/11/27,第30页,REST基本概念及释义,RE

31、ST两个基本概念是: 1.资源(Resource):将信息抽象为资源,任何能够命名的信息(包括数据和功能)都能作为一个资源,一张图片,一个其他资源的集合等。在REST中,资源又叫做状态,因为它跟随时间的变化。2.表述(Representation): REST通过URI来获得资源的表述并对资源执行动作,并在组件间传递该表述。什么是表述化状态转移?在REST中,资源就是状态,互联网就是一个巨大的状态机:每个网页是其一个状态;Url是状态的表述;REST应用通过点击超链接,从一个状态迁移到下一个状态的状态转移过程,就叫转移。例如:Bing搜索结果的分页列表,url如下:第一页:http:/ 第二页

32、:http:/ 在Bing中,把搜索结果的每一页视为资源(状态),并通过url来表示(这就是表述),同一搜索关键字的不同分页通过start参数来进行区分。当你从第一页点击第二页的链接时,只是从一个状态跳到了下一个状态而已(这就是转移);,2022/11/27,第31页,REST风格架构的主要约束条件,1.客户-服务器:分离关注点,将用户接口(如用户界面)和数据存储分离,如果接口不变,组件可独立进化。2.无状态:从客户端道服务器的每个请求必须包含理解该请求所必需的所有信息,不能利用任何存储在服务器上的上下文。提高了系统的可扩展性,其优点有三:可见性,监视系统不必为了确定一个请求的性质而去查看请求

33、之外的多个请求;可靠性,减轻了从局部故障恢复的任务量,可以快速定位;可伸缩性,不必在多个请求之 间保存状态,允许服务器快速释放资源,并且服务器不必跨请求管理资源。缺点是,由于不能将状态保存在服务器上的共享上下文中,增加了请求中发送的重复数 据,降低网络性能,因此有了约束三。3.缓存:请求响应中的数据显示或隐式的标记为可缓存的或不可缓存的。缓存可以为以后相同的请求重用这个响应的数据。但是缓存管理不好,会降低可靠性,导致缓存中陈旧的数据与直接访问服务器得到的数据差别很大。4.统一接口:组件之间要有统一的接口,是REST风格架构区别其他风格架构的核心特征。REST由四个接口约束定义:资源的识别,We

34、b-Based系统中资源由URI表示,数据库存储系统中资源可以是XML,JSON等;通过表述对资源执行的动作:表述中包含操作该资源的信息,如增删改查,映射到HTTP协议的GET,POST,PUT,DELETE方法;自描述的消息:消息中包含如何处理该消息的信息,如由哪个WebAPI/Sevlet处理,响应中包含可不可以被缓存等信息;作为应用状态引擎的超媒体。,2022/11/27,第32页,REST基本设计原则,原则一: 使用HTTP的方法进行资源访问使用HTTP POST方法去创建资源,使用GET方法去读取资源,使用PUT 方法去更新资源,使用DELETE方法去删除资源。原则二: 使用无状态/

35、无会话的服务设计很长时间以来,人们采用有状态的服务设计从而在客户端与服务端的多次交互中维护一定的上下文。然而,有状态的设计使得程序很难随着工作负载的增加而进行伸缩。比如某个服务实例拥有10000个会话的状态,则通常很难通过增加服务实例来分担其工作负载:工作负载被锁定了! 反之,如果程序被设计成一个无状态的,则可以自由增加服务实例,并且在这些实例之间平衡负载,从而使得服务具有较好的伸缩性,这在大规模分布式系统中尤其重要!原则三: 用目录结构风格的URL设计来表示资源用清晰的URL路径表示资源可以使客户端更容易理解和操作资源。URL可以被看作是一种自我解释的接口,不需要太多解释就可以让人明白该UR

36、L指向的是什么资源以及如何获得相关的资源。http:/ 使用XML或JSON来传输数据服务和请求的消息数据中包含了对于资源的属性的描述,服务应该采取结构良好并且易于阅读的方式来描述资源。XML、JSON都是结构良好的语言,并适于阅读。JSON比XML更加简洁。,2022/11/27,第33页,什么是JSON?,JSON:JavaScript 对象表示法(JavaScript Object Notation) ,是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是存储和交换文本信息的语法,用途类似 XML,但JSON 比 XML 更小、更快,更易解析。这些特性使JSON成为理想的数据交换

37、语言。易于人阅读和编写,同时也易于机器解析和生成。JSON它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集,也就是JavaScript 原生格式,这意味着在 JavaScript 中处理 JSON 数据不需要任何特殊的 API 或工具包。在JS和Ajax这种特定的领域,未来的发展是XML让位于JSON。JSON例子: var obj= name:Bill Gates, street:Fifth Avenue New York 666, age:56 ; document.getElementById(jname)

38、.innerHTML=obj.name ,2022/11/27,第34页,REST安全性,REST/HTTP网络服务直接暴露在客户端面前,如何确保服务的安全?1.REST/HTTP网络服务的信息包可以被防火墙理解和控制。你可以按照操作和链接进行过滤信息包,如你可以规定从外部来的只能读取(GET操作)自己服务器的资源。这样对于系统管理员而言使得软件管理更为简单。2.REST的安全性还可以利用传输安全协议SSL/TLS、 HTTP基本认证和摘要式认证。HTTP基本认证优点是逻辑简单明了、设置简单。缺点显而易见,即使是BASE64后也是可见的明文,很容易被破解、非法利用。还有就是HTTP是无状态的,

39、同一客户端每次都需要验证。对Http认证的不安全的缺点来说,可以启用HTTPS(SSL/TLS)认证作为补充。摘要认证(digest authentication)优点是摘要验证很好地解决了使用基本验证所担心的安全性问题。但是永远没有绝对的安全,当用户使用字典进行穷举破解时,还是会存在一些被破解的隐患。3.还可以利用像基于信息的Web Services Security作为安全认证的补充方案。 4.除此之外,还可以利用第三方开源的OpenID和Oauth类库作为安全认证方案的选择。,2022/11/27,第35页,真主降临,Asp.Net WebAPI发布,在Visual Studio 201

40、2及.NET 4.5中,作为ASP.NET MVC 4的一部分,微软正式推出新的网络服务框架ASP.NET Web API。ASP.NET Web API 是一种框架,用于轻松构建可以访问多种客户端(包括浏览器和移动设备)的 HTTP 服务。 ASP.NET Web API 是一种用于在 .NET Framework 上构建 RESTful 应用程序的理想平台。这套Web API基于ASP.NET,又借用了很多ASP.NET MVC的概念,很容易被ASP.NET的开发者适应和熟悉。ASP.NET Web API 一开始就是围绕HTTP协议及其消息语义构建起来的。与WCF REST相比,它不是对

41、现有框架的增强,而是一个全新的平台。,2022/11/27,第36页,Asp.Net WebAPI与WCF的关系,WCF最初为基于SOAP的服务而设计,后来自 3.5之后才添加了迎合REST的功能,虽然WCF也支持REST了,但实现起来比较麻烦,但是这种在重量级通信平台上实现的轻量级 消息通信给我们一种牛刀杀鸡之感。后来微软新开发了WebAPI,一开始是归在WCF框架旗下的,名为WCF Web API,后来微软停止开发WCF Web API,取代它的是ASP.NET Web API,到ASP.NET MVC 4推出时就划归Asp.Net旗下了。Announcement: WCF Web API

42、 is now ASP.NET Web API! ASP.NET Web API released with ASP.NET MVC 4 Beta.,2022/11/27,第37页,WCF,ASP.NET Web API 技术选型,如果想让服务支持特殊场景,如单向消息传递、消息队列、双向通信等等,最好选择WCF。如果想让服务优先使用快速传输通道,如TCP、Named Pipes,甚至UDP(在WCF 4.5中),然后在所有其他传输都不可用的时候支持HTTP,那么最好选择WCF,并且把SOAP和WebHttp两种绑定都用上。如果服务是建立在HTTP之上的面向资源的服务,需要发挥HTTP的全部功能

43、,如传送图像、文档、HTML页面等多种类型的内容,在响应中用URI去实现某个任务,那么新的Web API是最好的选择。如果服务是多目标环境的,既可作为面向资源的服务走HTTP通道,又可作为RPC风格的SOAP服务走TCP通道那就再议吧!,2022/11/27,第38页,Asp.Net WebAPI和Asp.Net MVC关系,1.新的Asp.Net WebAPI项目和典型的MVC项目一样,包含主要的Models、Controllers 、 Views等文件夹和Global.asax文件。2.Models中的Model主要用于保存Service和Client交互的对象,这些对象默认情况下会被转换

44、为Json格式的数据迚行传输。3.Controllers中的Controller是最重要的,它用于提供数据服务。 4.Views对于WebAPI来说没有太大的用途。因为Asp.Net WebAPI适用于那些需要使用数据服务,而非HTML标签的场景。5.和普通的MVC一样,Global.asax用于配置路由规则。6.App_Start目录,用来声明路由规则。,2022/11/27,第39页,Asp.Net 4.5 Web API介绍,Asp.Net 4.5 Web API基于REST风格,搭建在HTTP协议之上的,本质上是一种HTTP服务前身为WCF WEB API,现在集成进ASP.NET,

45、正式更名为ASP.NET WEB API直接借鉴了ASP.NET MVC的设计,所以两者有非常类似的编程模式调用方式:因为Web API完全是基于Web的,所以针对它的调用本质上就是一个简单的HTTP请求和响应过程. 例如: 前端程序利用jQuery以Ajax的方式调用Web API.,2022/11/27,第40页,Asp.Net WebAPI使用步骤-创建工程,2022/11/27,第41页,Asp.Net WebAPI使用步骤-创建工程,2022/11/27,第42页,Asp.Net WebAPI使用步骤-创建工程,2022/11/27,第43页,Asp.Net WebAPI和MVC路由

46、的区别,2022/11/27,第44页,MVC的路由规则:WebAPI的路由规则:WebAPI的路由比MVC少了一层Action,为什么?因为Action 的选择 是根据 HTTP 方法 (GET,PUT, POST, DELETE)完成的。,Asp.Net WebAPI使用步骤-详细步骤,只要新增一个Controller,继承ApiController基类,就是WebAPI了。和普通MVC的Controller返回View不同,WebAPI直接返回”数据”,因为它的定位就是一个简单的数据服务,至于展现,全都丢给前端来完成。在前端Htm中,只要使用JS框架提交数据给WebAPI,并解析WebA

47、PI返回的数据即可。整个应用=前端的 HTML/JavaScripts+后端的 WebAPI,2022/11/27,第45页,Asp.Net WebAPI使用步骤-Controler,2022/11/27,第46页,如何调用WebAPI?,因为 Web API 完全是基于 Web 的,所以针对它的调用本质上就是一个简单的 HTTP 请 和响应过程,可以通过手工地发送请求接收响应的方式来进行 WebAPI 的调用,也可以通 过 Ajax 的方式调用 WebAPI。在WinForm程序中可以采用发送HttpClient或HttpWebRequest请求接收响应的方式来进行对WebAPI 的调用。在

48、Web应用中可以采用基于 jQuery 的 Ajax 调用,直接通过 Ajax 与 Web API 进行交互。,2022/11/27,第47页,Asp.Net WebAPI使用步骤-写代码,using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Data;using System.Net;using System.Net.Http;using System.Web.Http;using Newtonsoft.Json;using System.Xml;using

49、System.Xml.Linq;using System.Text;namespace BOC.LzdService.Controllers public class LzdServiceController : ApiController public LzdServerAddress Get() LzdServerAddress returnObject = new LzdServerAddress(); returnObject.address1 = ; returnObject.address2 = ; return returnObject; ,2022/11/27,第48页,Web

50、API 的Http请求,GET http:/22.11.143.89:88/api/LzdService HTTP/1.1Accept: text/html, application/xhtml+xml, */*Accept-Language: zh-Hans-CN,zh-Hans;q=0.5User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like GeckoAccept-Encoding: gzip, deflateHost: 22.11.143.89:88DNT: 1Connection: Keep

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号