zoukankan      html  css  js  c++  java
  • 微软开源 C++ REST SDK

    微软的代号为Casablanca的C++ REST SDK已经基于Apache许可证开源。它被描述为“微软为了以原生代码支持基于云的客户端/服务器通信所做的努力,采用了现代异步C++ API设计”。该产品使用C++11实现,微软希望提供一种更简单的编写客户端HTTP代码的方法。

    Casablanca支持多个平台,除了Windows 7、Windows 8之外还支持Linux。微软的开发人员Artur Laksberg提到,对WinXP和Vista的支持正在开发之中。该产品的另一个亮点是支持异步操作。微软在公布时提供了一些例子来说明Casablanca的使用,一个是通过HTTP上传文件,一个是JSON对象的创建。

    Windows和Linux上的构建版本都支持以下特性:

    • 能够通过HTTP客户端创建到服务器的连接,并能发送请求和处理响应。
    • 支持URI的构建与使用。
    • 能够构建、解析和序列化JSON值。
    • 可以通过流(Stream)和流缓冲(Stream Buffer)对底层介质进行异步的数据读写。

    Casablanca中有几种不同的流和流缓冲可供使用:基于内存的生产者/消费者、文件、可以配合STL容器使用的基于内存的流、裸指针流和互操作流。互操作流使得“Casablanca能够提供两组类,一组使用异步流到iostream的接口,另一组使用iostream到异步流的接口”。

    Linux HTTP客户端还有些限制,因为它尚不支持HTTPS、代理和认证,但微软介绍说这些特性会包含在未来的版本中。Casablanca的源代码放在了CodePlex上,可以在线查看或通过Git获取,还可以以Zip包形式下载最新的快照版本。

    C++ REST SDK 包含在 Casablanca 项目中。Casablanca 是一个 C++ 本地库,旨在帮助开发者的 C++ 应用程序访问云服务。如果你想编写一个响应式的 C++ 客户端应用程序,或者是一个可扩展的服务端解决方案,可以试试 Casablanca。除了C++ REST SDK 外,Casablanca 项目还包含 Azure SDK for C++。

    C++ REST SDK 中包含了一些工具,可以帮助开发者快速编写现代、异步、可连接 REST 服务的 C++ 应用程序,遵循C++11 标准,目前支持 Windows 7、Windows 8(包括 Windows Store 和桌面应用)和 Linux。

    该 SDK 的主要特性包括:

    • 能够通过 HTTP Client 创建服务器连接,并发送请求、处理响应
    • 支持构造和使用 URI(Uniform Resource Identifiers,统一资源标识符)
    • 构造、解析和序列化 JSON 值
    • 通过 Streams 和 Stream Buffers 从底层介质异步读取/写入字节

    下面的示例演示了如何上传文件到 HTTP 服务器:

    #include <http_client.h>
    #include<filestream.h>
    #include <uri.h> using namespace concurrency::streams;
    using namespace web::http::client;
    using namespace web::http;

    int main ()
    {
      // Open stream to file. file_stream<unsigned char>::open_istream (L"myfile.txt") .then ([](basic_istream<unsigned char> fileStream)
      {
        // Make HTTP request with the file stream as the body. http_client client (L"http://www.myhttpserver.com");
        client.request (methods::PUT, L"myfile", fileStream) .then ([fileStream](http_response response)
        {
          fileStream.close ();
          // Perform actions here to inspect the HTTP response... if(response.status_code () == status_codes::OK)
          {
          }
        });
      });

      return 0;
    }

    下面的示例演示了如何构建并遍历 JSON 值:

    #include <json.h>
    
    int main ()
    {
      // Create a JSON object.   json::value obj;
      obj[L"key1"] = json::value::boolean (false);
      obj[L"key2"] = json::value::number (44);
      obj[L"key3"] = json::value::number (43.6);
      obj[L"key4"] = json::value::string(U("str"));
    
      // Loop over each element in the object. for(auto iter = obj.cbegin (); iter != obj.cend (); ++iter)
      {
        // Make sure to get the value as const reference otherwise you will end up copying
        // the whole JSON value recursively which can be expensive if it is a nested object. const json::value &str = iter->first;
        const json::value &v = iter->second;
    
        // Perform actions here to process each string and value in the JSON object... wprintf (L"String:%s", str.as_string ());
        wprintf (L"Value:%s", v.to_string ());
      }
      return 0;
    }

    详细信息:The C++ REST SDK ("Casablanca")

    使用微软的 C++ REST SDK

    Using the Microsoft C++ REST SDK

    JSON and the Microsoft C++ REST SDK

    C++ REST SDK的基本用法

    欢迎大家扫描下面二维码成为我的客户,为你服务和上云

  • 相关阅读:
    HDU 1863 畅通工程(Kruskal)
    HDU 1879 继续畅通工程(Kruskra)
    HDU 1102 Constructing Roads(Kruskal)
    POJ 3150 Cellular Automaton(矩阵快速幂)
    POJ 3070 Fibonacci(矩阵快速幂)
    ZOJ 1648 Circuit Board(计算几何)
    ZOJ 3498 Javabeans
    ZOJ 3490 String Successor(模拟)
    Java实现 LeetCode 749 隔离病毒(DFS嵌套)
    Java实现 LeetCode 749 隔离病毒(DFS嵌套)
  • 原文地址:https://www.cnblogs.com/shanyou/p/2937680.html
Copyright © 2011-2022 走看看