0

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

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

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

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

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

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

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

客户端也无关紧要。

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

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

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

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

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

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

4

2 回答 2

2

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

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

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

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

  1. 公开基于 HTTP 的 API 的服务,任何可以通过 HTTP(S) 与 XML/JSON 通信的东西都可以访问,包括...
  2. 一个 HTML5 网站,允许您的用户通过 Web 浏览器访问您的系统
  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 窗体构建您的站点。

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

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

幸运的是,Azure 提供了几项重要的技术,使构建这样的云规模系统变得更加容易,包括缓存、排队、移动通知、关系数据库、表/队列/blob 存储、联合身份验证、PAAS 角色、IAAS 虚拟机实例、CDN 等.

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

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

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

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

祝你好运!

于 2013-02-16T18:02:37.630 回答
1

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

我会推荐SignalR,这是 .Net 中用于“近乎实时的消息传递”的一个非常好的库。无论是否在 Azure中,都可以在 .Net 环境中轻松设置(例如使用 Asp.Net 的 Web 应用程序)。

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

于 2013-02-16T18:01:15.017 回答