MVC REST WebAPI和OAuth/OpenID以及大容量请求

MVC REST WebAPI和OAuth/OpenID以及大容量请求,rest,asp.net-mvc-4,azure,oauth,asp.net-web-api,Rest,Asp.net Mvc 4,Azure,Oauth,Asp.net Web Api,我正在研究一些如何取得一定成果的技术。我对OAuth和我将/应该使用的任何技术都是新手,所以请容忍我 我有一个想法,我想尝试一下:我想做一个跟踪应用程序,将运行在各种移动设备上。它会将你的位置发送到一个服务器,让你的朋友知道你在长途旅行中的位置(比如穿越一个国家)。我的想法是,用户将允许他的一些(少数)朋友登录到一个网站或应用程序,看看他在哪里。此外,如果服务器检测到用户已经停止了很长时间,或者做了一些奇怪的事情,服务器将通知这些朋友,然后他们可以给他打电话进行检查。(灵感来源于一位同事,他独自

我正在研究一些如何取得一定成果的技术。我对OAuth和我将/应该使用的任何技术都是新手,所以请容忍我

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

此外,作为挑战的一部分,我只想使用Microsoft技术,如Azure、Web API、服务总线和ACS。我还只想使用默认的ASP.NET成员资格提供程序和其他东西-我不想编写大量自定义代码。这个项目将是一个所有默认的Microsoft代码,使用他们为我的应用程序提供的扩展点

我的想法还需要和其他提供商互动,比如Facebook和谷歌。我想到了如何实现这一点,允许用户登录应用程序,在他的Facebook上创建一个帐户,并为这次旅行进行设置。然后,他将使用同一个Facebook帐户从他的设备登录,然后应用程序将通过RESTAPI与我的服务交互。我不想负责跟踪用户名和密码(希望我可以使用默认的ASP.NET成员身份和角色)

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

假设我对这个应用有很好的了解,我不想在Facebook服务器上收到每个位置成千上万的请求。OAuth不在这里工作吗我的应用程序是否可以缓存一个密钥,该密钥可以与用户通过web界面登录时拥有的密钥一起使用?我希望系统能够在到达队列之前拒绝垃圾邮件请求,例如随机令牌或其他东西。OAuth是此应用程序的可行方法吗

我不确定,因为这对我来说是非常新的如何创建一个使用第三方身份验证的基于REST的高容量应用程序?我希望使用纯HTTP(因为我确信这应该是可能的,也许有人可以评论更大开销的选项?)来进行位置更新,所以我不希望消息中包含密码。我应该使用REST吗


我知道这是一个很长很广的问题,但我想学习,并愿意这样做,无论付出什么代价。请花点时间阅读并指出任何东西,好的或坏的。

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

Microsoft正在将此作为ASP.NET平台的一部分,因此它基于Microsoft技术:


我认为是那个视频,或者他们提到的另一个signar(因为它的异步性质/首先使用WebSockets)可以在笔记本电脑上扩展到每秒20000条消息。这类东西的身份验证是次要的,请先看一下您的核心技术。

谢谢您的帮助,我会看一下。