【问题标题】:What kit (if any and not WebAPI) to use to write RESTful APIs for services that can only run on 3.5 framework?使用什么工具包(如果有,而不是 WebAPI)为只能在 3.5 框架上运行的服务编写 RESTful API?
【发布时间】:2016-04-04 21:11:32
【问题描述】:

我有一个托管在 x64 应用程序池(不允许 32 位)上的 Web 应用程序,它需要调用供应商提供的 3.5 框架 dll。这些限制都不受我的控制。想要将 json 作为我的请求/响应的模型,我需要编写 RESTful api 来将该 dll 提供给我的 Web 应用程序。我意识到 WebAPI 工具包不适用于我,因为它们需要 4.0 框架,我的替代方案是什么?

【问题讨论】:

  • 为什么您认为 Web API 需要在 x64 框架上?为什么你不能自己搜索 ASP.NET REST API 工具?
  • 不应该说 64。再看我的问题。也许你仍然可以回答它。谢谢
  • 好的,现在您将其限制为 .NET 3.5。同样,您为什么不能自己搜索这些工具?在这里询问工具建议是特别离题的。无论如何,REST API 在概念上非常简单。为什么不尝试自己实现?
  • 我现在就在做。一旦我找到了答案,我会在这里发布。谢谢。
  • 看看 WCF REST。

标签: c# wcf rest asp.net-3.5


【解决方案1】:

WCF REST 支持 .NET 4.0 之前的静态 Web 服务。见:A Guide to Designing and Building RESTful Web Services with WCF 3.5

【讨论】:

    【解决方案2】:

    我自己的问题的答案是结合这两个文档

    Implementing the URI Design with UriTemplate

    How to: Create a Basic WCF Web HTTP Service

    第一篇文章很长,没有重点,但第二篇很好。您需要的唯一其他帮助是编辑 .config,您应该使用 VS 提供的 WCF 编辑工具。

    Example using WCF Config editor

    source code

    【讨论】:

      【解决方案3】:

      在 3.5 REST 框架上编写自己的 WCF 的工具:

      WCF REST STARTER KIT

      安装后会看到

      Microsoft.Http.dll 
      Microsoft.Http.Extensions.dll
      Microsoft.ServiceModel.Web.dll 
      

      在目录中: C:\Program Files (x86)\Microsoft WCF REST\WCF REST Starter Kit Preview 2\Assemblies

      MORE ...

      1. 要将 WCF 用作 WCF Rest 服务,您必须启用 webHttpBindings。
      2. 通过 [WebGet] 和 [WebInvoke] 支持 HTTP GET 和 POST 动词 属性。
      3. 要启用其他 HTTP 动词,您必须在 IIS 中进行一些配置 接受对 .svc 文件的特定动词的请求
      4. 使用 WebGet 通过参数传递数据需要配置。
      5. 必须指定 UriTemplate 它支持 XML、JSON 和 ATOM 数据 格式。

      JSON formatter for 3.5

          using System.Runtime.Serialization.Json;  //System.ServiceModel.Web
      
          Me[] sizes = new Me[] { new Me{ radius = 34, height = 66 }, new Me{ radius = 24, height = 68 } }; // Me [DataContract]
          DataContractJsonSerializer szr = new DataContractJsonSerializer( typeof(Me[]) );   
          MemoryStream toJSONBuf= new MemoryStream();
          szr.WriteObject( toJSONBuf, sizes );        
          string strJSON = Encoding.Default.GetString(toJSONBuf.ToArray());
          toJSONBuf.Close(); 
          //Response.Write(Server.HtmlEncode( strJSON ));
          // REVERSE: the same serializer
          toJSONBuf= new MemoryStream(Encoding.Unicode.GetBytes( strJSON ));
          sizes = szr.ReadObject(toJSONBuf) as Me[];
          toJSONBuf.Close(); 
      

      【讨论】:

        猜你喜欢
        • 2012-02-14
        • 1970-01-01
        • 1970-01-01
        • 2021-07-14
        • 1970-01-01
        • 1970-01-01
        • 2023-04-01
        • 2010-09-15
        • 1970-01-01
        相关资源
        最近更新 更多