Azure vs WCF vs ASP.NET vs ...它如何组合在一起?

时间:2011-08-08 20:27:41

标签: azure azure-worker-roles

一个新手问题。我已经做了很多Java开发(例如GAE)和移动开发,例如iOS和Android。我正在研究Windows Azure作为我们的移动设备与之交互的服务器端服务的平台。我不得不承认我很难理解它。部分原因是首字母缩略词 - 过载。有各种各样的首字母缩略词粘在一起有什么好的指针吗?

我已经完成了一些教程,但他们主要专注于在Azure中创建一个网站。在我们的例子中,确实没有任何网页,而是设备调用的服务(一些REST,否则一些)。或许来一个特定的问题:工作者角色或Web角色如何检索发送给我为其创建的端点的http帖子的内容?

3 个答案:

答案 0 :(得分:7)

答案应该相当容易。对您而言,Azure是托管服务提供商。它可以帮助您根据需求扩展应用程序服务器(例如,下载和安装应用程序的移动客户端数量)。

一点营销说法:Azure降低了您自己的解决方案的拥有成本,因为它首先消耗(猜测)您需要的硬件数量,然后构建/租用数据中心和/或硬件,从而消除了初始投资。它还为您的应用程序提供某种形式的中间件,如AppFabric,以便它们可以更好地在“云”中进行通信。您还可以在Azure,分布式托管(例如欧洲数据中心,美国数据中心......)上实现负载平衡,已经存在故障安全机制(如果有人失败则自动实例化实例化),显然,按需付费&您使用什么的好处。

从那里开始, ASP.NET 是一个应用程序框架,特别是一个Web应用程序框架。它可以帮助您使用八个WebFormsMVC编写基于Web的应用程序。对于你所说的,这对你来说应该没什么用处(仅用于运行后端系统)。但是,如果您需要一个Web应用程序,是的,ASP.NET与Azure(显然)完美配合。

最后, WCF Windows Communication Foundation 是另一个框架,这次是编写和使用服务。这些是Web服务或其他,例如,基于TCP的服务,甚至是基于MSMQ的服务。在我看来,这是你应该看到的暴露你的后端。 WCF使您能够轻松指定合同和实现,同时将服务托管和实例化保留到 IIS (IIS是Microsoft的Web服务器,也在Azure上运行)。

现在,尝试回答你的问题: 我将在公共端点公开一个Web角色,托管一个WCF服务。您的移动应用程序将从那里调用此公共端点(显然由地址和端口定义),并使用基于标准的Web服务与您的服务进行通信。

这有意义吗?

无耻的加号:我已经写过关于这些流行语和诸如on my blog, which you are welcome to check out的内容。

答案 1 :(得分:4)

我认为你所看到的大多数是.NET的做事方式。 (ASP.NET和WCF是.NET技术。)Windows Azure是一个可以运行各种事物的平台(尽管大多数人都将它用于.NET)。在Windows Azure Web角色中,您的代码只能在IIS(Web服务器)下运行,您可以在其中运行ASP.NET,WCF,PHP等。

我认为人们在Windows Azure中构建REST API的最常见方式是使用ASP.NET MVC 3或WCF构建REST服务,然后将其托管在Web角色中。如何获取发布到端点的数据取决于您使用的技术。在ASP.NET MVC 3下,您可以编写如下内容:

[HttpPost]
public ActionResult CreateMessage(string title, string body)
{
    // use title and body here... they'll be the parameters in the HTTP post
    return Content("Message created!");
}

答案 2 :(得分:0)

您可以使用Windows Communication Foundation(WCF)发布服务端点。这可以是SOAP或REST端点。

此服务端点将托管在Web角色上。您可以将Web角色视为具有IIS的服务器。

辅助角色有点像Windows服务。

例如,您将通过Web服务接收一些数据,然后进行一些计算然后存储结果。在这种情况下,您将拥有一个Web角色,其Web服务将接收数据。它会将数据存储在队列中。 worker角色中的程序将监视队列,获取任何新数据,进行计算并将结果存储在表中。