0

我目前正在研究开发一个 azure 托管 Web 服务来充当我的移动应用程序和第三方 Web 服务之间的代理,以保护我的 API 机密。我对天蓝色架构的经验并不多,并且想知道是否有人可以提供一些指导。

考虑到这个问题,我的第一个想法是在 azure 上托管一个 asp.net Web API,将数据从手机发送到充当代理的 azure API,后者将接收 Web 请求,然后转发信息。通过另一个 httpwebrequest 将 API 秘密提供给 Web 服务,然后将该响应作为原始 API 调用响应返回。

首先,这行得通吗?其次,如果我让一个网络角色执行此任务,它一次只能处理一个请求,而必须等待一个请求从第三方返回,然后再从另一部手机发送请求?如果对第三方的调用需要一秒钟左右的时间,我猜就可扩展性而言,这可能会成为一个问题。

任何其他关于我如何做到这一点的架构建议将不胜感激!

4

2 回答 2

2

据我所知,Azure (YET) 尚不支持 ASP.NET Web API,Windows Azure 仅运行 .NET 4 运行时,有一些方法可以在 Azure 上运行 MVC 4,但尚未得到官方支持。

您当然可以拥有一个代理服务来拦截您的请求,然后将其转发,该架构听起来确实有点令人费解,但您可能/必须有正当理由。我会尝试为来自您的客户端的所有通信使用 HTTP (REST),以实现最大的互操作性并减少延迟。

您的第二个问题是关于横向扩展,您永远不应该运行您的 Web 角色的一个实例,因为这不符合 Azure SLA(最低 2 个)。当您正在寻找构建互联网可扩展应用程序时,您还应该始终努力实现异步编程/设计。如果您构建无状态 WCF 服务,那么您可以水平扩展以满足更多流量。如果您的消费者具有全球影响力,您还可以在服务的地理定位实例中使用 Windows Azure 流量管理器http://msdn.microsoft.com/en-us/gg197529

高温高压

于 2012-04-24T11:11:54.290 回答
1

如果您的意思是代理设置将作为正常的 Web 服务运行,它会“工作”......但我认为它没有太多机会让您的 API 保密。如果有人想学习,他们会很容易做到(他们所要做的就是查看网络流量)。

对于第二个问题:IIS/Azure 中运行着多个线程(无需配置任何东西)。由于明显的原因(两个请求而不是一个),延迟会减慢您的站点,并且代理请求期间的延迟将占用更多的工作线程;但这不应该是一个大问题,除非您期望您的网站有大量流量。

于 2012-04-24T10:48:11.800 回答