刚刚开始探索Azure,我仍然对Web角色与工作者角色的目的感到困惑。在我正在研究移动应用程序(iPhone,Android,Windows等)的解决方案中,将通过REST API访问我们的服务器产品。因此,我们的服务实际上没有面向公众的网站(如在网页中)。
这让我觉得我不需要Web角色,而是在我们的http端点上监听一个或者一个角色。我沿着这些方针创建了一个原型。当我从移动设备上做一个http帖子到端点时,我得不到回复。我在Azure日志中看不到任何内容,表明我的工作人员角色确实已经启动或正在运行并响应它。
这是一种合适的方法吗?我是否需要在设置代码中执行某些操作,因为我没有Web角色?我在另一个线程中读到Web角色在IIS中运行但工作者角色没有。
谢谢你的支持。我仍然处理Azure,因此在制定正确的问题时遇到一些困难。
答案 0 :(得分:3)
您的azure部署中不需要具有Web角色。在您阅读时,Web角色具有IIS,您的网站将托管在其中。 worker角色基本上是没有IIS的普通旧W2K8服务器。老实说,我没有RDP到工作者角色实例,所以我不是100%确定你没有IIS。
但是,您不需要Web角色来公开WCF服务。这是一个nice example(虽然背景颜色需要一些工作),它会告诉你如何做到这一点。
祝你好运!我希望这会有所帮助。答案 1 :(得分:2)
添加David Hoerster所说的内容:您可以在任何角色类型上托管多达25个面向外部的端点(每个端点都有自己的端口号),每个端点都是http,https或tcp。使用Web角色和IIS,Web应用程序通常会抓取映射到端口80的端点。在您的情况下,您将在特定端口上创建自己的端点。您负责创建ServiceHost(或用于托管服务的任何内容)并将其绑定到您的某个端点。为此,您需要将每个端点显式映射到特定的面向内部的端口,或者检查端点的属性以发现已动态分配给它的端口,以便绑定到(可能这是您的问题) “你的原型代码会遇到什么问题?”。
如果您正在寻找IIS在托管端点时提供的好处,那么您最好使用Web角色,因为您可以更轻松地执行此操作,因为Web角色默认启用IIS(以及可以很容易地从Visual Studio向Web角色添加WCF服务。
即使您要自我托管您的终端,您仍然可以使用Web角色,但现在您将携带正在运行但未使用的IIS服务的额外内存包。