仓酷云

标题: ASP.NET网站制作之WCF Web API 轻松完成 REST仓酷云 [打印本页]

作者: 简单生活    时间: 2015-1-18 11:20
标题: ASP.NET网站制作之WCF Web API 轻松完成 REST仓酷云
呵呵,那你就关注微软的招聘信息以及别人的招聘经验啊,还有也不一定去做技术的,你如果真的想去就多了解了解。(其实我的意思是说想到微软做技术是很不容易的。先体验一下,假如没有WCFWebAPI,间接用WCF完成REST有多贫苦:
1.创立WCF服务(ServiceContract)。
2.创立.svc文件指向该WCF服务。
3.在web.config中增加<service>/<endpoint>设置,并将binding设置为webHttpBinding,示例设置以下:
  1. <services><servicename="CNBlogs.OpenAPI.Service.NewsRestService"><endpointbinding="webHttpBinding"contract="CNBlogs.OpenAPI.Service.INewsRestService"behaviorConfiguration="RESTFul"/></service></services>
复制代码
4.在web.config中增加<endpointBehaviors>/<behavior>设置,并在个中增加<webHttp/>,在第3步的设置中增加该behaviorConfiguration(好比下面代码中的behaviorConfiguration="RESTFul"),示例设置以下:
  1. <endpointBehaviors><behaviorname="RESTFul"><webHttp/></behavior></endpointBehaviors>
复制代码
5.在OperationContract办法上增添WebInvoke属性,示例代码以下:
  1. [OperationContract][WebInvoke(Method="GET",UriTemplate="News/Recent/{itemcount}",ResponseFormat=WebMessageFormat.Xml)]IQueryable<NewsItem>GetRecentNews(intitemcount);
复制代码
下面的5步已够贫苦了。入手下手觉得到此就能够出工了,哪知不运转不晓得,一运转吓一跳:
  1. OperationGetRecentNewsincontractINewsRestServicehasapathvariablenameditemcountwhichdoesnothavetypestring.VariablesforUriTemplatepathsegmentsmusthavetypestring.
复制代码
参数居然不克不及用int范例,必需要用string。只能看WCF心叹,不能不进进第6步。
6.将int改成string
  1. IQueryable<NewsItem>GetRecentNews(stringitemcount);
复制代码
这是纯WCF完成REST的扮演节目,节目称号叫“WCF完成REST六步走”,扮演得分6分。
接上去,我们看看WCFWebAPI的扮演
(假如不晓得WCFWebAPI是何方崇高,请看演员先容http://wcf.codeplex.com/wikipage?title=WCF%20HTTP)
1.在供应REST服务的办法上增添[WebGet(UriTemplate="")]属性,示例代码以下:
  1. [ServiceContract]publicclassNewsRestService{[WebGet(UriTemplate="{itemcount}")]publicIQueryable<NewsItem>GetRecentNews(intitemcount){returnnewsList.AsQueryable();}}
复制代码
2.在Global.asax的Application_Start中增加路由,示例代码以下:
  1. protectedvoidApplication_Start(objectsender,EventArgse){varconfig=newHttpConfiguration();RouteTable.Routes.Add(newServiceRoute("news/recent",newHttpServiceHostFactory{Configuration=config},typeof(NewsRestService)));}
复制代码
注:必要经由过程NuGet增加对WebApi.All的援用。news/recent就是REST会见网址。
出工!只需两步就完成REST,WCFWebAPI的扮演得分2分。
2:6,WCFWebAPI年夜获全胜!(分数少的怎样反而得胜?这是代码天下,不是实际天下,程序员说了算,谁的代码少,谁就得胜)

小结
WCFWebAPI是“First-classprogrammingmodelforHTTPinWCF”,而HTTP是Web天下的通行证,WebAPI可让我们更轻松地畅游于Web编程天下。
完成REST只是WCFWebAPI小试牛刀,我们还能够不必修正任何服务端代码,只改动客户端哀求的体例,就能够前往不现范例的数据。
好比:
1)将HTTPHeader中的Accept改成“application/json”,前往的就是JSON数据。
2)经由过程Url参数倡议OData查询(好比“?$top=4&$orderby=Title”),服务器收到哀求后,会对前往了局举行LINQ查询(因而示例代码中的前往值范例是IQueryable<NewsItem>)。

相干内容
英文:
WCFWebAPIOverview
GettingStarted:BuildingasimpleWebAPI
WCFWebAPIs,HTTPyourway
中文:
WCFWebAPI第一印象
WCFWebApi
进门:构建复杂的WebAPI
进门:增加一个撑持猎取单一资本和撑持POST,PUT和DELETE办法
net网页编程的设计机制:首先产生一个中间码,第二部编译为本地(机器)码。这个机制有很大的缺点。
作者: 老尸    时间: 2015-1-20 20:50
是指转换后的Servlet程序代码的行数。这给调试代码带来一定困难。所以,在排除错误时,可以采取分段排除的方法(在可能出错的代码前后输出一些字符串,用字符串是否被输出来确定代码段从哪里开始出错)。
作者: 若相依    时间: 2015-1-29 23:44
关于ASP.NET功能上,ASP.NET比微软以前的ASP(96年出现)有更强大的library,更好的稳定性。ASP.NET可以使用.NETFramework中所有组件(也就是说.NET能实现的,ASP.NET一样能实现)。
作者: 第二个灵魂    时间: 2015-1-31 22:47
有一丝可惜的是,这个系列太强了,Java阵营的朋友根本就是哑口无言...争论之火瞬间被浇灭,这不是我想这么早就看到的,但是值了。
作者: 变相怪杰    时间: 2015-2-6 10:29
业务逻辑代码都不必做任何改动;继承性和多态性使得代码的可重用性大大提高,你可以通过继承已有的对象最大限度保护你以前的投资。并且C#和C++、Java一样提供了完善的调试/纠错体系。
作者: 冷月葬花魂    时间: 2015-2-7 05:59
大哥拜托,Java在95年就出来了,微软垄断个妹啊,服务器市场微软完全是后后来者,当年都是Unix的市场,现在被WindowsServer和Linux抢下大片,包括数据库也一样。
作者: 蒙在股里    时间: 2015-2-20 16:11
弱类型造成潜在的出错可能:尽管弱数据类型的编程语言使用起来回方便一些,但相对于它所造成的出错几率是远远得不偿失的。
作者: 金色的骷髅    时间: 2015-3-6 18:29
由于JSP/Servlet都是基于Java的,所以它们也有Java语言的最大优点——平台无关性,也就是所谓的“一次编写,随处运行(WORA–WriteOnce,RunAnywhere)”。除了这个优点,JSP/Servlet的效率以及安全性也是相当惊人的。
作者: 谁可相欹    时间: 2015-3-7 22:29
微软又推出ASP.NET。这不是ASP的简单升级,而是全新一代的动态网页实现系统,用于一台WEB服务器建立强大的应用程序。是微软发展的新体系结构.NET的一部分,是ASP和.NET技术的结合。
作者: 只想知道    时间: 2015-3-15 14:48
在调试JSP代码时,如果程序出错,JSP服务器会返回出错信息,并在浏览器中显示。这时,由于JSP是先被转换成Servlet后再运行的,所以,浏览器中所显示的代码出错的行数并不是JSP源代码的行数。
作者: 精灵巫婆    时间: 2015-3-22 01:24
asp.net空间的支持有:ASP.NET1.1/虚拟目录/MicrosoftFrontPage2000扩展/CDONTS,同时他的网站上也提供了Asp.net的使用详解和程序源代码,相信对使用ASP.NET编程的程序员来说会非常有用哦!




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2