作者信息:这篇文章最早是由Tom Dykstra于 2012 年 12 月 20 日在.NET Web Development and Tools Blog上发表。

上个月, .NET Web Development and Tools blog 发布了新教程系列及随附的示例应用程序,其中演示了在使用 ASP.NET MVC 4 和 ASP.NET Web API的多层应用程序中如何与 Windows Azure Storage表, 队列,和 blobs一起工作。

示例应用程序是运行在 Windows Azure Cloud Service中的电子邮件服务。前端是一个 web 角色,管理邮件列表、 订阅服务和消息。后端是一对处理调度和发送电子邮件的worker角色。

共有五个教程: 一个概述了应用程序、 一个演示如何下载和运行已完成的应用程序,另外三个介绍在Visual Studio中如何从零开始生成应用程序。

下面是教程的链接,你可以在里面看到一些实例:

  • 使用Storage 表,队列和 Blobs 的.NET 多层应用程序- 5 1
    • 前端概述包括 web 页的屏幕截图。
    • 后端概述包括应用程序体系结构的关系图。
    • 架构和应用程序使用过的 Windows Azure 表的示例内容。
    • 应用程序如何使用队列和 blob 的解释。
    • 表和队列的数据关系图。
    • 在Cloud Service上作为 web 角色运行在前端与在Windows Azure Web Site上的相对优缺点的讨论。
    • 运营成本和寻找最低成本的讨论。
  • 配置和部署 Windows Azure 电子邮件服务应用程序-5 2
    • 如何下载、 配置和运行应用程序。
    • 如何在您自己的 Windows Azure 帐户中发布应用到预备环境中及如何正式运行。
    • 如何通过指定 IP 地址来限制访问Windows Azure应用程序。
    • 如何在Windows Azure development storage 和
      Windows Azure Storage accounts中使用 Azure Storage Explorer 和 Visual Studio查看数据。
    • 如何使用自动或手动的方法 添加Windows Azure Storage帐户凭据到 Visual Studio 项目中。
    • 如何为应用程序配置追踪以及如何在 Windows Azure Storage中查看追踪数据。
    • 如何通过添加 web 或worker角色实例来扩展应用程序。
    • 使用 Windows Azure Storage帐户时,如何通过禁用开发存储来减少项目启动时间。
  • 构建Windows Azure 电子邮件服务应用程序的 web 角色-5 3
    • 如何创建一个包含Cloud Service项目 web 角色和worker角色的解决方案。
    • 如何在MVC 4 控制器和视图中于 Windows Azure 表、 blob 和队列一起工作。
      • 如何处理基本的 CRUD 操作。
      • 如何上传文件并将它们存储在 blob。
      • 如何处理包括更改行键或实体分区键的表数据变化。
      • 如何处理并发冲突。
      • 如何设置重试策略,以避免用户长时间等待。
    • 如何使用新的Storage Client Library (SCL) 2.0 API(项目模板默认使用 API 1.7)。
    • 如何引用一个 SCL 1.7 程序集以获得尚未添加到 SCL 2.0 的诊断功能。
    • 如何通过重写 OnStop 方法优雅地处理 web 角色实例关机。
    • 如何在代码中创建表、 队列和 blob,以便您不必手动创建它们。
    • 如何限制 Windows Azure Storage交易成本,提高效率,并通过执行批处理(多达 100 个表操作)来执行原子事务。
    • 如何在Windows Azure Web Site运行 web 前端而不是Cloud Service。
  • 构建 Windows Azure 电子邮件服务应用程序的worker角色A(邮件调度)- 5 4
    • 如何在worker角色上创建、 查询和更新 Windows Azure Storage表。
    • 如何将工作项添加到队列中以供另一个worker角色处理。
    • 如何设置适当的连接限制和配置的 OnStart 方法中的诊断程序。
    • 如何通过重写 OnStop 方法优雅地处理worker角色实例关机。
    • worker角色实例意外关闭时,如何确保电子邮件不丢失,并且没有重复的电子邮件发送。
    • 如何测试worker角色使用的是Windows Azure Storage表和队列。
  • 构建 Windows Azure 电子邮件服务应用程序的worker角色B(邮件发送)-5 5
    • 如何向Cloud Service项目中添加worker角色。
    • 如何从队列中调查队列和进程工作项。
      • 如何确保这只有一个worker角色实例获取处理任何给定的队列的工作项。
      • 如何提高效率,减少交互时间以达到一次获取32 个工作项。
      • worker角色时如何处理"带毒邮件"带来的异常。
    • 如何从 blob 下载文本。
    • 如何通过SendGrid 发送电子邮件。
    • worker角色实例意外关闭时,如何确保电子邮件不丢失,并且没有重复的电子邮件发送。

欢迎提出任何反馈 ;您可以在这里发布评论也可以针对教程发表意见。我们清楚代码块的格式仍需改进: 这些教程都是用Markdown写的,我们还没找到方法让代码从 Visual Studio 拷贝到Markdow时保留行间距和缩进。我们也欢迎您能提出解决该问题的建议。

— — Tom Dykstra

http://blogs.msdn.com/b/windowsazure/archive/2013/01/15/cross-post-tutorial-series-and-sample-application-for-asp-net-mvc-4-with-windows-azure-tables-blobs-and-queues.aspx