다음을 통해 공유


DevLabs: c + +,云服务和你

[原文发表地址]  DevLabs: C++, Cloud Services, and You

[原文发表时间] 2012-04-30 9:57 AM

今天我很高兴宣布了一个新的 DevLabs 项目:微软代号"Casablanca"。你可以从DevLabs 网站了解更多有关项目的信息和下载安装程序。

我之前讨论过一些影响开发人员工具的重大趋势,一个重要的例子是连接设备的程序在云中持续服务。为了有效地开发此类应用程序,开发人员需要高效的、高层次的编程模型和 API来用于连接以及与服务进行交互。同样,为了以可延展的方式构建这些服务,开发人员需要高效的模式,这些模式需要组织合理,而且从根本上是异步的。

以.NET为例。C#、 Visual Basic,和 F # 开发人员都有一个强大且可扩展的网络堆栈,加上.NET 4.5的优势,这使所有的都更加高效,如 HttpClient、异步语言支持以及可轻松地构建 HTTP 服务的ASP.NET Web API框架。或者拿 Node.js为例,其中,Windows Azure SDK使你能够使用 JavaScript轻松地为云构建快速、可扩展的网络应用程序。

从历史上看,使用 c + + 的开发人员缺乏这种简单的工具。尽管有很多相关的本地网络 API(例如 WinINet,WinHTTP,IXMLHttpRequest2,HTTP Server API),但从生产效率的角度来看,用现代 c + +来使用和执行RESTful云服务时,它们都不是最佳的选择。它们与基于标准 c + + 库的代码并不能有效协调,并在编程模型中它们没有充分利用现代 c + + 语言的功能和用法。

这就是" Casablanca "的来源,"Casablanca "是 c + + 开发人员的一组类库,它充分利用了通过 Visual Studio已可用的最近标准语言的功能。

“Casablanca"旨在让 c + + 程序员使用和执行RESTful服务变得更简单。这是基于来自.NET,Node.js,Erlang和其他影响者的经验教训,它想要创建一个易于编程的现代化模型,同时仍然是可扩展、可组合、灵活的。

例如,这里是一片代码段,它使用客户端HTTP库在Bing中搜索我的名字,并将结果输出到控制台:

    1: http_client bing(L"https://www.bing.com/search");
    2: bing.request(methods::GET, L"?q=S.Somasegar").then([](http_response response) {
    3:     cout << "HTML SOURCE:" << endl << response.to_string() << endl;
    4: }).wait();

这里是一个简单的 web 侦听器,它托管在一个控制台应用程序中:

    1: using namespace http;
    2:  
    3: int __cdecl wmain(int argc, wchar_t * argv[]) {
    4:     listener::create(argv[1], [](http_request req) {
    5:         req.reply(status_codes::OK, "Namaste!");
    6:     }).listen([](){ fgetc(stdin); }).wait();
    7: }

对于那些希望用c + +构建Azure服务的人来说," Casablanca "附带了一个 Visual Studio 向导,它可以正确设置一切。你可以针对 Web 和Worker的角色,使用内置的 c + + 库绑定来访问Azure存储。

上周,我在博客中写到了我们为"满足开发人员的需求"所做的努力。世界上有这么多的软件都是用此语言开发的,还有其重量级的跨平台采用,所以我们围绕c + +的工作一直是重要的构成部分。将c + + " Casablanca "带入到云中是这段旅程中另一个令人兴奋的一步,

与其他的 DevLabs 版本一样,此版本的"Casablanca"是供你进行试验,并提供反馈意见。我们想知道你是否对使用 c + +来使用和执行云服务感兴趣,如果有,为了这样,你希望得到怎样的支持," Casablanca "是否正确运行,你认为它应该怎么改进。我们期待在此论坛中收到您的反馈.

万福!