MVC REST Web API和OAuth / OpenID和高容量请求

时间:2012-11-26 22:27:57

标签: rest asp.net-mvc-4 azure oauth asp.net-web-api

我正在研究如何实现某种结果的一些技术。我是OAuth的新手以及我将/应该使用的任何技术,所以请耐心等待。

我有一个想法,我想试试:我想制作一个可以在各种移动设备上运行的跟踪应用程序。它会将您的位置发送到服务器,以便您的朋友知道您在长途旅行中的位置(例如跨国)。我的想法是,用户将允许一些(少数几个)他的朋友登录网站或应用程序,看看他在哪里。此外,如果服务器检测到用户已经停止了很长时间,或做了一些奇怪的事情,服务器将通知这些朋友,然后他们可以给他打电话进行检查。 (灵感来自一位在全国各地开车9个小时的同事,惊喜地拜访了他的女朋友。)

此外,作为挑战的一部分,我只想使用Azure,Web API,Service Bus和ACS等Microsoft技术。我也只想使用默认的ASP.NET成员资格提供者和东西 - 我不想写很多自定义代码。这个项目将是一个默认的Microsoft代码,使用他们为我的应用程序提供的扩展点。

我的想法还需要与其他提供商互动,例如Facebook和Google。我想到了如何实现这一点,允许用户登录到应用程序以创建他的Facebook帐户并设置旅行。然后,他将使用相同的Facebook帐户从他的设备登录,然后该应用程序将使用REST API与我的服务进行交互。我不想负责跟踪用户名和密码(希望我可以使用默认的ASP.NET成员资格和角色)。

但是,我不知道我应该看什么。我假设如果用户每隔一分钟左右发送一次位置,我的API请求量会非常大。我想为此使用一个队列,API只会将所有位置转发到队列,该队列将由工作人员处理。 API将提供发送位置以及创建和修改用户设置的方法。我不确定最好的方法。 对我的API的大量请求会导致其他请求的负面效果吗?我是否应该有一个单独的服务器来处理位置而另一个服务器用于基本用户管理?

假设我对此应用程序有很大的吸引力,我不希望每个收到的位置都有数千个Facebook服务器请求。 OAuth不会在这里工作吗? 我的应用程序可以缓存一个密钥,该密钥可以与用户通过Web界面登录时使用的密钥一起使用吗?我希望系统能够拒绝垃圾邮件请求,例如随机令牌甚至在到达队列之前。 OAuth是否适用于此应用?

我不确定这对我来说是个新鲜事。 如何创建使用第三方身份验证的基于REST的高容量应用程序?我希望使用普通的HTTP(只是因为我确信它应该是可行的 - 也许有人可以发表评论更多开销的选项?)位置更新,所以我不希望消息中的密码全部。我应该使用REST吗?

我知道这是一个很长的问题而且非常广泛,但我想学习并愿意这样做,不管它需要什么。请花点时间阅读并指出任何好的或坏的。

1 个答案:

答案 0 :(得分:1)

根据您的应用程序设计,您可能对SignalR(http://signalr.net/)感兴趣。它非常适合订阅请求(一群朋友),然后向这些朋友广播任何变化(像你说的那样奇怪)。

Microsoft正在构建ASP.NET平台的一部分,因此它基于Microsoft技术:http://channel9.msdn.com/Events/Build/2012/3-034

我认为是视频或其他提及SignalR(因为它的Async特性/首先使用WebSockets)可以在笔记本电脑上扩展到20,000条消息/秒。对这类东西的身份验证是次要的,首先要看你的核心技术。