微软起源 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的基本用法