我们正在考虑从使用WCF转换为应用程序中的服务层到REST。
到目前为止,我们假设这样做的方法是使用WCF REST Starter Kit。但是,这仍然在预览2中,自2009年3月以来一直没有更新。
这个项目在水中死了吗?
如果是这样,我们有什么替代方法来创建基于.NET的REST服务? (有些是suggesting using ASP.NET MVC,我们已经将其用于我们的UI图层)
看起来像now, the WCF REST Starter Kit is indeed dead。 ASP.NET Web API是推荐的替代方案。
答案 0 :(得分:15)
在花了大量时间玩不同的.net休息框架之后,我得出了一个结论。 使用asp.net mvc是迄今为止处理restful服务最简单,最透明的方式。配置的混乱程度要低得多。
Asp.net MVC
就其本质而言,asp.net mvc符合其他服务方法。 asp.net mvc不是采用复杂的肥皂驱动框架并将其“适应”其他协议,而是将Web编程范式包含在其核心内容中。它更加透明并且易于调试。使用asp.net路由框架,iis请求连接到控制器类。返回任何类型的内容都是轻而易举的事。由于约定优于配置理念,获取设置变得更加容易。它只是有效。 '努夫说。
以下是我试图让wcf与休息一起工作时所玩的项目列表。我花了几天时间学习不同的方法。最后,我喜欢每件事情,但没有什么可以满足我们的所有需求。 Mvc获胜。
WCF Rest Contrib - wcfrestcontrib.codeplex.com
这个项目有一些非常有用的功能,如零配置,错误处理(用于返回正确的Web响应代码)和Web身份验证。
它要求您更改创建wcf服务的服务工厂类。这意味着它无法与需要您使用其工厂的其他库一起使用。
WCF Rest Starter Kit - code.msdn.microsoft.com/wcfrestlabs /
这实际上只是一个“学习工具”和实验室,以展示如何在wcf中实现休息。看起来它不再被更新了。我认为asp.net mvc和wcf 4.0已经消除了它的销量。它确实有一些很好的类,最终被纳入wcf 4.0(帮助功能)。
WCF Rest AutoDocs - autodocs.codeplex.com
基于属性和新的端点行为适配器类生成非常酷,易于使用的文档。
我用这个击中了一个大陷阱。当我把它添加到WCF突然帖子不再工作。我一直没有找到端点错误。我最终放弃并停止使用该库。与其他图书馆不兼容。
WCF文档 - wcfdoc.codeplex.com
为soap和rest服务生成文档。您可以根据公司的品牌创建自己的xslts并生成外观酷炫的文档。我目前正在将其整合到我们的构建过程中。
答案 1 :(得分:10)
自.Net Framework 3.5发布以来,WCF为REST风格的服务提供支持,您可以开始在WCF上构建REST服务今天。
WCF REST入门套件旨在让团队从社区获取有关WCF中REST的新功能创意的反馈。我们正积极致力于在.Net Framework中整合开发人员最喜欢的入门套件功能 - 例如,您可以使用最近发布的.Net 4 Beta 1版本中的帮助页面功能。当我们获得有关入门套件功能的反馈时,我们会考虑将它们包含在框架中,您可以在生产中使用它。
关于入门套件“死在水中”的评论,我可以向你保证,这恰恰相反。我们的目标是在新版本的入门套件上进行为期4个月的开发周期,正如我们在starter kit homepage上所述。我们拥有专门用于支持入门套件和处理未来版本的资源。
答案 2 :(得分:3)
这取决于您的场景,但您会发现WCF REST会妨碍您启用某些场景。
入门套件开始修复其中一些问题,其他问题将在下一版本中修复,但如果您想要链接创建,内容类型协商和自定义媒体类型,您将花费大量时间让它发挥作用。
还有其他框架以更直接的方式解决了同样的问题,我建议你看看OpenRasta和Snooze,甚至是MVC。
答案 3 :(得分:3)
我们使用WCF实现RESTFUL api,我们可以使用XML,JSON和ProtoBuf发布和接收数据。与GET相同。
然而,一旦我们查看ASP.NET MVC,我们就转储了WCF,并且现在正在使用MVC以更透明的代码执行相同的操作。谷歌上有一些关于如何做到这一点的好文章。 我们的主要需求是为客户提供序列化请求和接收XML,JSON或Protobuf响应的选项。
我想说WCF对我们来说已经死了。 MVC万岁
答案 4 :(得分:2)
另一种可能性是此功能将成为.NET 4.0和Visual Studio 2010的一部分。我建议您下载测试版并查找。
答案 5 :(得分:2)
我认为它无处可去。从预览1到预览2花了4个月的时间,从那时起仅用了3个月。远非官方,但this article将其命名为Framework 4 - Beta 1的一个亮点。它上面还有一个PDC session。太多组织正在使用REST来提供服务,以便在WCF中不受支持。
答案 6 :(得分:1)
到目前为止,我们假设这样做的方法是使用WCF REST入门套件。但是,这仍然在预览2中,自2009年3月以来一直没有更新。
您可以使用WCF构建REST应用程序,而无需使用入门套件。 .NET 3.5中提供的WCF包括良好的REST功能和工具。它包括URI模板映射,WebGet属性等。
入门套件是示例代码,附加实用程序类,视频和其他附加内容,有助于说明如何在WCF中执行REST。您不需要入门工具包在WCF中执行REST。
您无需等待入门工具包“完成”,以便在WCF中执行 REST。如果你喜欢的东西,如Http Request构建器,那么使用它。它是开源的,你可以在你的项目中使用。如果您不喜欢它,请不要使用它。
答案 7 :(得分:1)
如果您正在寻找一些额外的功能(如内容类型和接受基于标头的序列化,每个操作身份验证等),请查看WCF REST Contrib项目:
http://wcfrestcontrib.codeplex.com/
它基于3.5 SP1 WCF REST API,并提供RSK中没有的一些功能。
答案 8 :(得分:1)
我正在使用WCF Rest Contrib,因为我需要支持从第三方开发的iPad应用程序发送给我们的x-www-form-urlencoded格式。另外,我需要支持自定义用户名验证,这同样不支持开箱即用的WCF 4 REST服务。
不幸的是,缺点是我失去了自动生成帮助页面的能力,这在WCF Rest Contrib库中似乎不受支持。
失去帮助页面已证明是真正的PITA,但在上述要求无法协商的情况下,我看不到任何其他选择。
我希望,随着使用REST的移动设备的爆炸性增长,微软将更加认真地在WCF中实施工业强度版本。就目前而言,我在WCF 4中有点失望......我希望能有更接近WCF Rest Contrib的东西。
(顺便说一句,服务实现库ALSO支持经典非移动客户端的SOAP WS部署,这可以更简单地实现,其中WSDL合同可用于生成代理)。
答案 9 :(得分:1)
我们正在构建一个应用程序来使用我们现有的服务。我们还需要实现RESTful服务,但我们的主要目标是重用/集中我们现有的WCF服务,实现可重用性。
然后我们尝试了Web API,发现它很直接。它还为我们的架构提供了一个我们也可以控制的附加层。
我们最初有性能问题,但到目前为止,这些都很少。
因此,如果您不介意在WCF服务上添加其他图层,请将其作为Web API图层存在,否则HttpClient作为选项同样可靠。