当前位置: 首页 > news >正文

最新章节 第四百六十二章 花两亿做的网站大连网络建站公司分析

最新章节 第四百六十二章 花两亿做的网站,大连网络建站公司分析,wordpress主题 使用教程,ui网页设计是什么WEB API系列#xff1a; 很多人都很迷惑#xff0c;既然有了WCF为什么还要有WEB API#xff1f;WEB API会不会取代WCF#xff1f; 就我的看法#xff0c;WCF提供的是一种RPC实现的集合#xff0c;WCF的设计更多地考虑了SOA的场景#xff0c;以及各种RPC的问题。很多人也…WEB API系列            很多人都很迷惑既然有了WCF为什么还要有WEB APIWEB API会不会取代WCF        就我的看法WCF提供的是一种RPC实现的集合WCF的设计更多地考虑了SOA的场景以及各种RPC的问题。很多人也会说RestFul API也是一种RPC啊并且WCF中也有关于RestFul 的实现啊。很多资料中RPC和RestFul在风格概念上是有一些区别的其实我觉得这两者的区别比较主观过度纠结这些就学院派了我主要关注了实际使用上的一些问题在WCF中支持的协议很多WS-*系列协议以及一些更简洁的协议其中提供了一些专用通信协议的性能是非常高的并且WCF还提供了服务发现等功能我认为WCF更适合内部系统间的高性能调用社区中也有其他一些RPC方案可以选择例如gRPCAvorthrift都是和WCF定位相同的产品而WEB API是关注于HTTP RestFul风格的产品在此基础上任何语言、任何终端都能非常容易地进行对接并且能利用非常成熟的各种HTTP基础设施和解决方案来进行开发、调试、负载均衡、内容分发。所以WEB API是一种针对HTTP的偏重于快速开发RestFul风格开放式API的开发框架。目前看来他并不能取代WCF他们各有适合的场景不能认为WEB API是WCF的替代产品。        OK现在我们来开发第一组WEB API接口使用VS2012以后的版本都有现成的WEB API创建模板大家跟着创建就好了创建出来后项目中会有MVC、WEB API的项目WEB API对MVC有依赖不能单独创建而WEB API和MVC都是利用类似的路由机制所以在默认路由中WEB API 使用 /api/{controller}/{id}          作为路由添加了/api/节以区分MVC和web api。        接下来我们添加一个WEB API的Controller取名为PersonController他继承于ApiController在创建这个Controller的时候我们就定义了一种资源Person在PersonController里的所有操作均围绕着Person这个资源来的。接下来我们开始定义一组增删改查操作。        在Web API中默认路由采用了一种约定根据谓词来进行路由而方法名的前缀就是调用该方法对应使用的HTTP谓词。代码示例如下        /// summary/// Person 为资源对Person进行的一组操作/// /summarypublic class PersonController : ApiController{private static ListPerson _personLst new ListPerson();/// summary/// 获取一个Person/// /summary/// param nameidPerson的ID/param/// returnsPerson/returnspublic Person GetPerson(long id){return _personLst.Find(x x.Id id);}/// summary/// 添加一个Person/// /summary/// param namepersonPerson/parampublic void PostAddPerson(Person person){_personLst.Add(person);}/// summary/// 修改一个/// /summary/// param nameidPerson Id/param/// param nameperson新/parampublic void PutModifyPerson(long id, Person person){var p _personLst.Find(x x.Id id);p.Age person.Age;p.Name person.Name;p.Sex person.Sex;}/// summary/// 删除一个Person/// /summary/// param nameidPerson ID/parampublic void DeletePerson(long id){_personLst.RemoveAll(x x.Id id);}}   一个简单的针对资源的CRUD操作的API就好了不用解析输入不用拼接输出就是那么简单让我们来遛一遛   发送请求谓词为POST语义创建PersonPerson描述在Body里head中声明了Body通过Json序列化。 收到响应响应码204属于2XX类型执行成功Body里没有数据   发送请求谓词为GET语义为查询Person资源Id为1的head中声明希望接收使用XML序列化的数据 收到响应响应码为200执行成功Body中有数据数据使用XML序列化   发送请求谓词为PUT语义为修改ID为1的Person资源修改内容在Body中Content-Type标明Body使用Json序列化在Body中我们将Name修改为Test1Changed 收到响应响应码为204执行成功   发送请求谓词为GET语义为查询ID为1的Person资源Accept标明希望接收到Json数据 收到响应可以看到Body为使用Json序列化的内容Name属性已经变更为Test1Changed   发送请求谓词为DELETE语义为删除ID为1的Person资源 收到响应响应码204执行成功   发送请求谓词为GET语义为查询ID为1的Person资源Accept标明希望接收到Json数据 收到响应响应码为200执行成功响应内容为null资源已删除   这就是我用Fiddler来发送、调用的一组RestFul接口大家可以看到整个调用过程使用到了HTTP的语义用到了谓词路由、内容协商。在增、删、改操作中我都是使用void作为返回值根据HTTP Code 判断大家也可以自定义一些返回数据来做出更进一步的操作描述。   在写了这些API后我们需要在程序中调用我以C#为例写一组对这些接口调用的实现。在C#中传统调用HTTP接口一般有两种办法 WebRequest/WebResponse组合的方法调用和WebClient类进行调用。第一种方法抽象程度较低使用较为繁琐而WebClient主要面向了WEB网页场景在模拟Web操作时使用较为方便但用在RestFul场景下却比较麻烦在Web API发布的同时.NET提供了两个程序集System.Net.Http和System.Net.Http.Formatting。这两个程序集中最核心的类是HttpClient。在.NET4.5中带有这两个程序集而.NET4需要到Nuget里下载Microsoft.Net.Http和Microsoft.AspNet.WebApi.Client这两个包才能使用这个类更低的.NET版本就只能表示遗憾了只能用WebRequest/WebResponse或者WebClient来调用这些API了。        在使用中System.Net.Http这个程序集提供了HttpClient类以及相关的HTTP调用而System.Net.Http.Formatting提供了一些针对HttpClient的帮助扩展更好地支持了内容协商、Content创建等功能。下面我就和大家一起写一下这个例子        我们新建一个控制台程序        代码如下 public class Person{public long Id { get; set; }public string Name { get; set; }public int Age { get; set; }public string Sex { get; set; }public override string ToString(){return $Id{Id} Name{Name} Age{Age} Sex{Sex};}}class Program{static void Main(string[] args){var client new HttpClient();client.BaseAddress new Uri(http://localhost:22658/); //基本的API URLclient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(application/json)); //默认希望响应使用Json序列化Run(client);Console.ReadLine();}static async void Run(HttpClient client){var result await AddPerson(client);Console.WriteLine($添加结果{result}); //添加结果truevar person await GetPerson(client);Console.WriteLine($查询结果{person}); //查询结果Id1 Nametest Age10 SexFresult await PutPerson(client);Console.WriteLine($更新结果{result}); //更新结果trueresult await DeletePerson(client);Console.WriteLine($删除结果{result}); //删除结果true}static async Taskbool AddPerson(HttpClient client){return await client.PostAsJsonAsync(api/Person, new Person() { Age 10, Id 1, Name test, Sex F }) //向Person发送POST请求Body使用Json进行序列化.ContinueWith(x x.Result.IsSuccessStatusCode); //返回请求是否执行成功即HTTP Code是否为2XX}static async TaskPerson GetPerson(HttpClient client){return await await client.GetAsync(api/Person/1) //向Person发送GET请求.ContinueWith(x x.Result.Content.ReadAsAsyncPerson( //获取返回Body并根据返回的Content-Type自动匹配格式化器反序列化Bodynew ListMediaTypeFormatter() {new JsonMediaTypeFormatter()/*这是Json的格式化器*/,new XmlMediaTypeFormatter()/*这是XML的格式化器*/}));}static async Taskbool PutPerson(HttpClient client){return await client.PutAsJsonAsync(api/Person/1, new Person() { Age 10, Id 1, Name test1Change, Sex F }) //向Person发送PUT请求Body使用Json进行序列化.ContinueWith(x x.Result.IsSuccessStatusCode); //返回请求是否执行成功即HTTP Code是否为2XX}static async Taskbool DeletePerson(HttpClient client){return await client.DeleteAsync(api/Person/1) //向Person发送DELETE请求.ContinueWith(x x.Result.IsSuccessStatusCode); //返回请求是否执行成功即HTTP Code是否为2XX}} 转载于:https://www.cnblogs.com/fs-4394/p/9981312.html
http://www.pierceye.com/news/871842/

相关文章:

  • 公司网站发布流程简述企业网络建设的步骤
  • 哪些网站可以做问卷第1063章 自己做视频网站
  • 电子商务网站 费用做p2p网站
  • 网站建设 猴王网络厦门app开发网站开发公司电话
  • 做3d图的网站有哪些比wordpress更好的网站程序
  • 仿做网站可以整站下载器吧网络网站建设公司
  • 网站流量用完wordpress page 父页面
  • 旅游地网站制作有没有做网站的高手
  • 有什么网站可以做一起作业什么网站可以兼职做效果图
  • 工程中标查询网站长沙网站制作作
  • 免费网站下载直播软件企业品牌网站建设类型
  • 建立网站并以此为基础从事经营活动的企业称为什么免费销售网站模板
  • 成都市建设质监站网站微信企业网站html5模板
  • 福建工程建设管理中心网站仙桃做企业网站的
  • 孝感做网站的公司建网站是永久的吗
  • 厦门手机建站php网站开发推荐书籍
  • 属于c2c网站的有哪几个方庄网站制作
  • 建设局网站模板iis 网站没有上传权限
  • 建设网站龙华怎么用自己的电脑搭建网站
  • 分析网站的网站福建交科建设有限公司官方网站
  • 深圳南园网站建设网站域名怎么设置方法
  • 网站的内链是什么意思网页布局有哪几种方法
  • 网站优化公司上海山东电力建设河北分公司网站
  • 甘肃省住房和城乡建设部网站首页专门网页制作工具有
  • 网站用vps做dns做网站的叫什么职位
  • 网站开发业务流程图网站商城与网站区别吗
  • 用新浪微博做网站百度找不到 网站
  • 哪个网站做照片书最好seo投放是什么意思
  • 书店网站开发目的和意义深圳网建公司
  • 餐饮网站方案wordpress 微论坛主题