使用哪种Windows Azure技术?

时间:2013-02-16 14:31:48

标签: c# web-services architecture azure

我用谷歌搜索了几个小时并阅读了很多内容,但我似乎太愚蠢了,无法找到正确的答案。

我想创建一个天蓝色的Web服务。而且我不确定我应该使用哪种技术......

在我开始深入阅读这个主题之前,我想确定,我正在阅读正确的内容......

我想创建一个应该可以被很多客户使用的应用程序。 (因此非常重要的是100和1000,000用户可以很容易地与服务进行通信。天蓝色可以轻松扩展,这就是为什么我决定使用azure)

每个客户都可以购买订阅,然后可以使用其用户名和ID连接到该服务。

每个客户都可以使用不同的客户端连接到服务(例如浏览器,Windows客户端,iOS,Android,......)

我已经知道的是数据层(数据访问组件连接到azureSql,...)和业务层将如何工作。 (业务层应用程序外观存在于C#.net中,并且能够在天蓝色的应用程序中运行)

客户方也无关紧要。

我只需要弄清楚,业务外观和所有外部系统之间的通信将使用它们(即客户端)

那么:我将使用什么作为服务层的技术?哪种消息类型,......

重要的是,如果众多最终用户中的一个通过两个不同的客户端(使用相同的用户名和密码)与服务进行通信,并且客户端可以说通过业务层更改某些内容,那么将要呈现的数据在每个客户端都必须更改,另一个客户端必须立即收到该更改。 (同时:从一个客户端进行一次更改,将影响当时连接的一个用户的所有其他客户端)如果他们没有连接,他们将在下次登录时获得更改...

我的意思是,客户正在使用哪个客户端(或者如果不止一个,它也不重要)应该无关紧要。

因为每个客户端无论如何都提供相同的功能:有一个登录,之后用户将获得一些数据并可以处理该数据..

如果有信息和沟通经验的人可以帮助我,告诉我正确的方法,那将是完美的。

2 个答案:

答案 0 :(得分:2)

你的问题很难简明扼要地回答。

但是,这里有一些指示可以帮助您入门:

完全可以构建Azure中托管的服务,如果您愿意,可以处理数百万用户。这就是Halo4团队在Azure上构建所有服务的原因!

由于您希望用户能够从浏览器和在不同平台上运行的应用程序访问您的服务,因此您需要在三个主要部分构建服务:

  1. 公开基于HTTP的API的服务,可以通过HTTP(S)与XML / JSON对话的任何内容访问,包括......
  2. 允许您的用户通过网络浏览器访问您的系统的HTML5网站
  3. [可选]移动应用程序,提供系统的平台特定体验。
  4. 您很可能需要构建和公开您的API层作为一个或多个接受包含JSON / XML数据的HTTP GET / POST / PUT / DELETE消息的REST服务。

    如果您打算使用Microsoft的.NET堆栈来构建此API层,我强烈建议您开始阅读ASP.NET Web API

    当然,您的网站可以使用ASP.NET构建。我更喜欢使用ASP.NET MVC构建网站,因为我更喜欢MVC方法提供的问题的清晰分离。话虽如此,如果您愿意,也无法阻止您使用ASP.NET Web Forms构建网站。

    如果您想构建特别动态的服务,您还可以使用SignalR等技术来构建可以将数据更改通知动态广播到多个浏览器页面,多个浏览器和多个设备上运行的多个应用程序的服务由多人组成!

    当然,构建可扩展以处理数千个并发用户的系统需要仔细考虑,规划和实验。如果您以前没有这样做过,那么您将不得不进行大量的阅读和大量的实验,但这样做,您也将获得很多乐趣:)< / p>

    幸运的是,Azure提供了几项重要技术,可以更轻松地构建此类云规模系统,包括缓存,排队,移动通知,关系数据库,表/队列/ blob存储,联合身份验证,PAAS角色,IAAS虚拟机实例, CDN等

    老实说,我不能想到你可以在Azure强大的基础设施上构建的许多系统。

    但是,我会建议从小做起。首先关注构建系统的一个核心部分。了解它的工作原理,如何部署,如何监控,如何衡量它的性能和可靠性,以及如何修补和更新它。然后咬掉另一个块并重复。

    哦......如果您正计划使用PAAS / IAAS角色/ VM,请务必将其关闭并在您未开发/测试时删除它们,因为您&# 39;无论你是否正在使用它们或者将任何部署到这些实例中,它们每运行一小时都会收费!

    对于您要构建以访问服务的各种应用程序,您可以做出许多选择。要考虑的一件事可能有助于简化您的选择Mono。 Mono是.NET的开源实现,几乎可以在您可能遇到的每个平台上运行 - Linux,Android,iOS,OSX,Windows Phone,Windows桌面,Windows 8,Play Station,XBox等。通过使用Mono并仔细构建您的应用,您可以在针对多个平台的多个应用中重复使用大量代码。

    祝你好运!

答案 1 :(得分:1)

我在这里看不到Azure的任何特定内容。

我会推荐SignalR,这是.Net中用于“近实时消息传递”的非常好的库。在.Net环境(for example for a Web app with Asp.Net),Azure中是否可以轻松设置。

我听说过Android和IO的一些signalR客户端,但你应该看看它们是否成熟并满足你的需求。