从C#或ASP.Net开始REST Web服务的位置
我正在考虑开始编写一些REST Web服务作为提供数据的方法。 我想当我的REST Web服务可用时,我的一些Web应用程序和控制台应用程序将能够使用REST Web服务作为数据服务来获取,添加,更新和删除数据到数据库。 除此之外,我想添加身份validationfunction来识别任何请求。
我的问题是我应该从哪里开始? 我看到了Microsoft ADO.Net数据服务 。 不确定这是一个好的开始吗? 有没有可用的例子?
查看WCF MSDN站点中的REST和入门工具包 。 这里也有好文章。
您可能还想查看servicestack.net一个开源,跨平台,高性能的Web服务框架,它允许您使用代码优先,强类型的DTO开发Web服务,该DTO将自动(无任何配置)立即可用在各种不同的端点上开箱即用(即XML,JSON,JSV,SOAP 1.1 / 1.2)。
REST,RPC和SOAP开箱即用
此外,您可以通过您选择的任何ReST-fulurl提供相同的Web服务,其中您的REST客户端可以指定首选的序列化格式,即
- 使用HTTP Accept:标头
- 将首选格式附加到查询字符串,例如?format = xml
除了REST之外什么都看不见! 有关如何使用仅1页jQuery和1页C#开发完整REST-ful Ajax CRUD应用程序的Web服务示例。
一个好的起点是Hello World示例 ,了解如何轻松地将ServiceStack Web服务添加到任何现有的ASP.NET Web应用程序。
性能
为了提高性能,ServiceStack构建了一个出色的Ajax服务器,因为它捆绑了最快的JSON Serializer for .NET (比其他JSON Serializer快3倍)。
查看这个实时Ajax应用程序的味道(在Linux / Nginx / MONO上托管的现场演示)。
简单的罗斯文示例
ServiceStack还可以轻松创建强类型无摩擦Web服务,只需使用以下代码即可返回客户POCO列表:
public class CustomersService : RestServiceBase { public IDbConnectionFactory DbFactory { get; set; } public override object OnGet(Customers request) { return new CustomersResponse { Customers = DbFactory.Exec(dbCmd => dbCmd.Select()) }; }
没有其他配置,您现在可以调用上面的Web服务REST完全返回所有:
- XML
- JSON
- CSV
- HTML
- JSV
- 肥皂
访问客户端上的Web服务
您可以使用您首选的通用ServiceClient(即Json,Xml等),使用与您的Web服务定义相同的DTO(即不需要代码生成)来调用上述Web服务。 这允许您使用强类型API调用您的Web服务,只需1行代码:
C#同步示例
IServiceClient client = new JsonServiceClient("http://host/service"); var customers = client.Send(new Customers());
由于您的Web服务也是REST服务,因此它可以与JavaScript ajax客户端无缝协作,例如:
使用jQuery
$.getJSON("http://host/service", function(r) { alert(r.Customers.length); });
ASP.NET Web API现在是用于创建RESTful服务的Microsoft框架。
如果您是.net世界中的REST新手,那么请从OpenRasta开始。 如果您努力工作,其他Microsoft解决方案可以执行REST,但它们将引导您走向最有可能通过HTTP结束POD(普通旧数据)的路径。 这不是REST的全部意义所在。 如果这就是你想要的那么,那也很酷,但它不是REST。
- 如果你要去WCF,JP提到的WCF REST入门套件是一个很好的起点。
- Omar Al Zabir 提供了一个很好的例子 ,使用ASP.NET MVC提供XML和JSON流畅的RESTful服务
- 您也可以使用您建议的ADO.NET数据服务路线。 这些服务构建在WCF堆栈之上。
我从来没有偶然发现任何关于如何在这些选项之间进行选择的非常好的指导。 在ASP.NET MVC中,您承担了大部分管道负担,但也具有最大控制权。 直接RESTful WCF是幸福的中间立场,尽管WCF倾向于想要让事情顺利进行。 ADO.NET数据服务非常神奇,因为完全购买生成这些服务的特定方法并失去更多灵活性的缺点。
您可以阅读有关.NET RESTful服务主题的一些好书。 O’Reilly和Microsoft Press最近都发布了关于这个主题的书籍。 也许我能为您提供的最重要的建议是使用和理解几个开放的RESTful服务(例如Twitter,Amazon,Flickr),以了解创建服务时的设计决策。 用户配置,身份validation机制和支持的内容类型(例如JSON,XML,RSS / ATOM)是您可以在行动中观察到的一些决策,以帮助您创建服务API。