C++休眠SDK(卡萨布兰卡)

C++休眠SDK(代号为“卡萨布兰卡”)正式发布为CODULTEX的开源项目( http://casablanca.codeplex.com ).

null

我们先来 宣布 卡萨布兰卡作为微软DevLabs上的一个孵化项目早在2012年4月就出现了。从那时起,我们已经发布了几个版本,并且看到了库的快速发展。随着我们添加新功能并收到客户的反馈,很明显,两个独立的实体开始形成。因此,DevLabs上的“卡萨布兰卡”项目被分为两个不同的SDK: C++静态SDK 以及 Azure SDK的C++ .

释放的两个SDK中的第一个是C++ REST SDK。它包括快速编写与REST服务连接的现代异步C++代码的工具。我们利用C++ 11提供的能力和生产力,同时提供跨平台解决方案。我们目前支持Windows 7、Windows 8(Windows应用商店和桌面应用程序)和Linux。

此SDK的主要功能包括:

  • 能够通过HTTP客户端创建到服务器的连接,发送请求并处理响应。
  • 支持构造和使用统一资源标识符(URI)。
  • 构造、解析和序列化JSON值。
  • 通过流和流缓冲区向基础媒体异步读写字节。

让我们来看看一些代码,看看上面提到的功能。

第一个示例是一个将文件上载到HTTP服务器的简单应用程序。

#包括 #包括 #包括

使用 命名空间 并发::流; 使用 命名空间 web::http::客户端; 使用 命名空间 web::http;

内景 主() { //打开流到文件。 文件u流< 未签名 烧焦 >●开放式istream(L) “myfile.txt” ).then([](基本流)< 未签名 烧焦 >文件流) { //以文件流为主体发出HTTP请求。 http客户端(L) “http://www.myhttpserver.com” ); client.request(方法::PUT,L “我的文件” ,fileStream)。然后([fileStream](httpu response response) { fileStream.close(); //在此处执行操作以检查HTTP响应… 如果 (response.status_code()==状态_code::确定) { } }); });

返回 0; }

我们使用 并发::流::文件流 类从磁盘异步读取文件。文件流的构造函数返回 基本流。

在continuation中,我们创建了 httpU客户端 表示与服务器的连接。使用这个实例,我们现在可以发送请求。在本例中,我们使用 web::http::methods::PUT 将操作指定为HTTP PUT请求。我们还将文件名和文件流包含在请求中。 最后,我们捕获 httpU响应 并执行必要的操作,以检查服务器是否成功处理了请求。

这个例子说明了如何直接编写连接到服务的响应客户机应用程序。

接下来,我们将演示如何在内存中构建JSON值并循环其值。

#包括

内景 主() { //创建JSON对象。 json::值对象; 目标 “键1” ]=json::value::boolean( ); 目标 “键2” ]=json::value::number(44); 目标 “键3” ]=json::value::number(43.6); 目标 “键4” ]=json::value::string(U)( “结构” ));

//循环对象中的每个元素。 对于 ( 汽车 iter=obj.cbegin();iter!=对象cend()++iter公司) { //确保将该值作为const reference获取,否则将导致复制 //整个JSON值是递归的,如果它是嵌套对象,那么代价可能会很高。 常数 json::value&str=iter->first; 常数 json::value&v=iter->second;

//在此处执行操作以处理JSON对象中的每个字符串和值… wprintf(左) “字符串:%%s” ,str.as_string()); wprintf(左) “值:%%s” ,v.to_string()); } 返回 0; }

在C++ REST SDK中,所有JSON值都由 web::json::值 班级。在本例中,我们使用值工厂函数构建JSON对象。JSON值也可以使用接受流引用的构造函数从流中解析。一旦我们有了JSON值,就可以使用 克贝金 cend公司 方法返回值集合的只读迭代器。

在SDK中包含JSON对象的这个简单而强大的表示,为开发人员提供了一组高效的工具,并且可以很好地组合在一起。

感谢您抽出时间阅读此帖,我们希望每个人都能有机会访问本项目 码丛 ,我们希望听到您的反馈。

请继续关注C++ C++ REST SDK和Azure SDK的更多更新。特别感谢stevegates审阅本文并提供代码片段。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享