【问题标题】:Which Windows Azure technology to use? [closed]使用哪种 Windows Azure 技术? [关闭]
【发布时间】:2013-02-01 09:53:51
【问题描述】:

我在谷歌上搜索了几个小时并阅读了很多东西,但我似乎太笨了,无法找到正确的答案。

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

在我开始深入阅读该主题之前,我想确定我正在阅读正确的主题......

我想创建一个可供很多客户使用的应用程序。 (所以重要的是,100 个和 1.000.000 个用户可以很容易地与服务进行通信。azure 易于扩展,这就是我决定使用 azure 的原因)

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

每个客户都可以使用不同的客户端(例如浏览器、windows-client、iOS、android...)连接到服务

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

客户端也无关紧要。

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

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

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

我的意思是,客户使用哪个客户端根本不重要(或者如果不止一个,它也不重要)

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

如果在消息传递和沟通方面经验丰富的人可以帮助我,告诉我正确的方法,那就完美了...

【问题讨论】:

    标签: c# web-services architecture azure


    【解决方案1】:

    你的问题很难简洁地回答。

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

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

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

    1. 服务公开基于 HTTP 的 API,任何可以通过 HTTP(S) 与 XML/JSON 通信的东西都可以访问,包括 ...
    2. 一个 HTML5 网站,允许您的用户通过网络浏览器访问您的系统
    3. [可选] 为您的系统提供特定平台体验的移动应用。

    您很可能需要构建 API 层并将其公开为一个或多个REST 服务,这些服务接受包含 JSON/XML 数据的 HTTP GET/POST/PUT/DELETE 消息。

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

    当然,您的网站可以使用 ASP.NET 构建。我更喜欢使用ASP.NET MVC 构建网站,因为我更喜欢MVC 方法提供的关注点的清晰分离。话虽如此,如果您愿意,没有什么可以阻止您使用 ASP.NET Web Forms 构建您的网站。

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

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

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

    老实说,我想不出有多少系统无法在 Azure 强大的基础架构上构建。

    不过,我建议从小处着手。首先专注于构建系统的一个核心部分。了解它是如何工作的,如何部署它,如何监控它,如何衡量它的性能和可靠性,如何修补和更新它。然后咬下另一块并重复。

    哦...如果您打算使用 PAAS/IAAS 角色/虚拟机,请务必在不进行开发/测试时将其关闭并删除,因为您将按它们运行的​​每一小时计费,无论您是否正在使用它们或是否已将任何东西部署到这些实例!

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

    祝你好运!

    【讨论】:

    • 谢谢,这是一个完美的答案!
    【解决方案2】:

    我在这里没有看到任何特定于 Azure 的内容。

    我会推荐SignalR,这是.Net 中用于“近乎实时的消息传递”的一个非常好的库。在 .Net 环境 (for example for a Web app with Asp.Net) 中很容易设置,无论是否在 Azure 中。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-16
      • 2011-01-17
      • 1970-01-01
      • 2011-03-26
      相关资源
      最近更新 更多