【问题标题】:How to Consume a Restful Service in .NET? [closed]如何在 .NET 中使用 Restful 服务? [关闭]
【发布时间】:2012-02-11 14:37:33
【问题描述】:

使用 .Net 框架使用 RESTful 服务有哪些选择? WCF(使用 WebChannelFactory)什么时候比 HttpClient 更可取?

【问题讨论】:

    标签: c# .net rest


    【解决方案1】:

    微软最新的 HTTP 库在这里https://www.nuget.org/packages/Microsoft.Net.Http,我有一篇博文展示了如何使用它here

    您永远不会希望针对 RESTful 服务使用 WebChannelFactory。 WebChannelFactory 生成的耦合打败了 REST 的观点。

    【讨论】:

    【解决方案2】:

    查看restsharp。我没有使用它,但正在研究它以使用我们自己的 REST 服务。

    【讨论】:

    • 效果如何? restsharp 是一个不错的选择吗?它看起来超级方便且易于使用。
    • 是的,我真的很喜欢用它。
    【解决方案3】:

    hammock 项目让使用 RESTful 服务变得非常容易,您可以使用它轻松创建所需的 http 请求:

    https://github.com/danielcrenna/hammock

    【讨论】:

      【解决方案4】:

      我认为 WCF 在您需要它提供的抽象时更可取。

      WCF 提供了对正在使用的特定消息传递和通信协议的抽象。即使只考虑 RESTful 场景,您也可以更轻松地适应不同的消息格式(XML、JSON、HTML)。

      WCF 还提供配置机制、扩展点和检测。

      【讨论】:

      • 对于现在阅读本文的任何人:WCF 基本上已经死了。如果您想研究它,知道它与 REST 完全不同,并且只有在您确实知道自己需要它时才应该使用它。
      • @TheMonarch 您似乎认为 WCF 与一组特定的协议相关联。从您的评论来看,您很可能将 WCF 与 XML 和 SOAP 等各种 SOA 技术联系起来。 WCF 实际上是一个为不同协议而设计的通信框架。确实,大多数开箱即用的扩展都与 SOA 相关(WCF 发布时的结果),但是可以为 REST(HTTP / JSON)、协议缓冲区、gRPC、甚至是自定义协议。
      【解决方案5】:

      在 .NET 中使用 REST 服务有几种不同的方式:

      我写了一个blog post 来演示前三个选项。

      关于通过 WCF 或 HttpClient 进行消费,我认为阅读此 SO question 以了解 REST 服务的潜力是有意义的。当您通过 WCF 使用 REST 服务时,您无法使用所有这些功能。

      【讨论】:

        【解决方案6】:

        我今天刚刚在这里发布了一个 REST 客户端。您可以下载 Git 存储库以查看示例。 https://bitbucket.org/MelbourneDeveloper/restclient-.net

        • 开源。 (麻省理工学院许可)
        • 标记语言不可知。 (支持 JSON、SOAP 和其他标记语言)
        • 在 REST 中使用强类型。
        • 支持 Android、iOS、Windows 10、Windows 10 Phone、Silverlight、.NET、.NET Core。
        • 非常简单。
        • 异步友好(使用 async、await 关键字)。

        WCF(使用 WebChannelFactory)何时更可取 HttpClient?

        这是一个非常重要的问题。 WCF 是一个非常大的技术集合,允许您与许多不同的协议、身份验证方法等进行通信。它非常可配置,但 REST 很简单,几乎所有可用技术都支持它。如果您编写一个 REST 服务,那么几乎任何应用程序都可能使用它。实际上,问题在于您的目标受众是谁。

        【讨论】:

          【解决方案7】:

          这是在asp.net c#中调用或使用rest webservice的一种技术

          var client  = new RestClient("url"); 
          var request = new RestRequest(Method.POST);
          
          request.AddHeader("content-type", "application/json");
          request.AddParameter("application/x-www-form-urlencoded",
              "type=password& user_id=test@gmail.com",ParameterType.RequestBody);
          
          IRestResponse response = client.Execute(request);
          

          【讨论】:

            猜你喜欢
            • 2010-09-15
            • 1970-01-01
            • 2013-09-18
            • 1970-01-01
            • 2016-06-23
            • 2015-07-13
            • 1970-01-01
            • 2013-12-20
            • 1970-01-01
            相关资源
            最近更新 更多