Azure webrole充当第三方API的代理

时间:2012-04-24 10:34:32

标签: asp.net api azure

我目前正在考虑开发一个天蓝色的托管网络服务,作为我的移动应用和第三方网络服务之间的代理,以保护我的API。如果有蔚蓝建筑的经验,并且想知道是否有人能够提供一些指导,我还没什么大不了的。

考虑到这个问题,我首先想到的是在azure上托管一个asp.net web API,将数据从手机发送到作为代理接收Web请求的azure API,然后转发信息。使用API​​通过另一个httpwebrequest对Web服务保密,然后将该响应作为原始API调用响应返回。

首先,这会有用吗?其次,如果我有一个Web角色执行此任务,它是否只能一次发送一个请求,在从另一个电话发送请求之前必须等待一个请求从第三方返回?如果对第三方的调用在可扩展性方面需要花费一秒左右的时间,这可能会成为一个问题。

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

2 个答案:

答案 0 :(得分: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

HTH

答案 1 :(得分:1)

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

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