在Azure上构建一个基于Facebook的营销式应用程序(上)

原创
云计算
当你的Facebook应用程序点击率上升的时候,它如何进行扩展呢?如果你是在Windows Azure上构建的这个应用程序,并且是按横向扩展的思想设计的这个应用程序,那么很高兴地告诉,你可以“高枕无忧”了。

当你的Facebook应用程序点击率上升的时候,它如何进行扩展呢?如果你是在Windows Azure上构建的这个应用程序,并且是按横向扩展的思想设计的这个应用程序,那么很高兴地告诉,你可以“高枕无忧”了。

我们将会一步一步地为你讲述,如何使用Windows Azure Toolkit和Facebook C# SDK(这两个工具包可以在CodePlex上找到),在Azure上创建一个简单的基于Facebook的“病毒式”营销应用程序,这两个工具包可以让这个工作变得更加轻松。

Facebook营销活动的主要目的是让客户更多地参与你的业务,类似于这样:在你的公司的Facebook页面上,你可以给提供了联系信息的客户发放一些奖品。这个活动要有一定的时间限制,因为你的奖品数量是有限的。但是,如果这个活动已经开始了,你必须做好应对指数级增长的准备,因为这个活动会像病毒一样传播开来。对于构建一个拥有这样生命周期的应用程序来说,Windows Azure是一个理想的平台。你可以从几个实例开始,限制存储空间,然后按需进行扩展。当这个活动“降温”的时候,你可以卸载掉那些多余的实例。

但是,只是简单地运行在Azure并不能保证可以获得很好的可扩展性。一个Azure应用程序还需要使用一些方法(例如:分割成多个角色),和简单的,可扩展的存储结构,针对扩展来进行设计才能获得很好的可扩展性。

在本文中,我们将会在Azure上构建一个可扩展的基于Facebook的营销式应用程序。这个样例应用程序的灵感来自于获得巨大成功的Bloomin' Onion Facebook Campaign,这个应用程序是2009年下半年,Thuzi团队为Outback Steakhouse构建的。它构建在两个工具包(Windows Azure Toolkit和Facebook C# SDK)基础之上的,这两个工具包也是Thuzi团队的那些开发者构建的。Windows Azure Toolkit开始的时候只是为在Azure上构建基于Facebook的应用程序提供一站式服务而已,但是后来演变成了一个通用的Azure开发工具包。当我们在这个应用程序中使用Windows Azure Toolkit进行存储和队列管理的时候,这些技巧可以应用到Azure平台上的任何一个应用程序中。(关于Bloomin' Onion Facebook Campaign)(关于Thuzi团队

这个应用程序都做些什么

我们会把这个应用程序构建成一个基于Fackbook的canvas应用程序,把canvas URL指向运行在Azure上的那个应用程序。客户第一次运行这个应用程序("AzureSample")的时候,他们会看到一个权限请求窗体,询问这个应用程序是否可以从Facebook中读取信息(例如:客户的出生日期)。

(图1 因为这个应用程序需要访问客户的出生日期,所以Facebook会在这个应用程序启动前,显示一个权限窗体。这个应用程序通过一个由Facebook C# SDK提供的特性(attribute)来声明它需要哪些权限。)

假设这个客户给我们授予了必要的权限,我们启动了AzureSample,然后开始收集客户的信息。

(图2 第一个页面来自于这个应用程序的canvas URL,用来收集客户的信息。当这个页面打开的时候,“First Name”, “Last Name”, 和“Date of Birth”都已经用从Facebook读取到的信息提前填充好了。)

这个客户的“First Name”, “Last Name”, 和“Date of Birth”都是从Facebook中读取到的,然后提前填充到窗体的相应字段中。这个客户只需填充“Email Address”和“Zip Code”字段就可以继续浏览下一个页面了。

(图3 商店选择页面。我们给这个客户提供了一个包含三个商店的列表,这三个商店是根据他们在前一个页面中输入的邮政编码而列出的,这些商店都在邮政编码所在地方圆50英里之内。客户可以选择一个自己喜欢的商店。)

下一个页面展示了一个包含三个附近的商店的列表,客户在上一步输入的邮政编码在这里发挥了关键性的作用。这三个商店是这个客户的邮政编码所在地方圆50英里内最近的商店。(对于这个实例来说,我使用随机的邮政编码生成了一个包含1000个商店的列表,作为样例数据来使用。)在这一步,我们已经收集到了我们需要的所有的用户信息。“AzureSample”会启动一个后台任务,把一封带有客户奖品的email发送给那个客户,然后把这些联系信息从快速的Azure Table Storage迁移到更加容易查询的SQL Azure中。接下来,剩下的所有事情就是展示一个完成页面了。

(图4 “thank-you”页面。如果客户在注册以后再次运行这个应用程序,他们会被自动地重定向到这个页面。)

#p#

项目结构

在Facebook上,这个应用程序叫作“AzureSample”,因为在Facebook上的应用程序不能包含“facebook”这个字符串。如果你要安装这个应用程序,你可以在Facebook上给它起一个更有意义的名字,例如“SignUpFreeX”。在Visual Studio中,这个解决方案叫作“AzureFacebookSample”,它包含4个项目。

(图5 在Visual Studio的解决方案资源浏览器中的“AzureFacebookSample”,如图所示,这个解决方案包含4个项目)

“AzureFacebookSample.Cloud”是Azure应用程序的主项目。它包含两个角色,一个Web角色和一个Worker角色。web角色是通过“AzureFacebookSample.Web”项目来实现的,而Worker角色是通过“AzureFacebookSample.Worker”项目来实现的。

Web角色是一个ASP.NET MVC项目,包含了这个应用程序的所有界面的视图和相关的控制器逻辑。Worker角色负责发送奖品email和把联系信息从Azure Table Storage迁移到SQL Azure中。

“AzureFacebookSample.Domain”是一个类库项目,其中包括数据模型,队列,和被Web角色和Worker角色共享的数据容器。通过域项目,Web角色和Worker角色会保存在Azure Storage, Azure队列, 和SQL Azure的域对象中。

“AzureFacebookSample”展示了在Azure上,你应该如何组织Facebook应用程序,但是还有几件你需要做的事情它是无法代劳的,那就是实现一个你自己的“病毒式”的营销应用程序。首先,Worker角色实际上并不会发送一封email。在真正的应用程序中,Worker角色需要连接一个外部的服务,通过这个外部服务来生成大量的这次营销活动所必需的email。在“AzureFacebookSample”中,并不包含连接到这个Web服务的代码。第二,你需要一个额外的Worker角色来处理被邮件服务退回来的email,在Facebook上联系客户,尝试获取一个正确的email地址(以便于奖品email可以被发送)。最后,“AzureFacebookSample”并不会促使Facebook“likes”到公司页面上,或者提醒客户把这个应用程序告诉他们的Facebook好友。

请看《在Azure上构建一个基于Facebook的营销式应用程序(中)

和《在Azure上构建一个基于Facebook的营销式应用程序(下)

原文名:Building a Facebook Marketing App on Azure 作者:Steve Apiki

【本文乃51CTO精选译文,转载请标明出处!】 

【编辑推荐】 

  1. 在Azure上构建一个基于Facebook的营销式应用程序(中)
  2. 在Azure上构建一个基于Facebook的营销式应用程序(下)
  3. 无需顶礼膜拜 三步打造经济高效的云基础架构

 

责任编辑:王勇 来源: 来源:51CTO
相关推荐

2011-03-14 15:10:10

AzureFacebook

2011-03-14 15:14:10

AzureFacebook营销式应用程序

2011-11-23 10:06:32

Azure微软移动应用

2011-03-10 10:45:47

Azure“Hello Worl

2011-03-22 09:45:56

Windows AzuSilverlight

2011-03-15 19:45:27

Windows Azu

2018-12-13 11:10:21

OpenSnitchLinux防火墙

2015-03-10 09:51:56

云开发云应用程构建PaaS

2015-10-14 10:43:17

PaaSSaaS应用构建

2011-10-12 11:24:44

AndroidPC

2011-03-21 14:31:36

Azure应用程序

2021-07-14 17:39:46

ReactRails API前端组件

2023-09-21 08:00:00

ChatGPT编程工具

2010-11-09 10:37:21

2014-12-24 11:34:23

CoreOSWordPress集群部署

2022-02-20 20:09:38

BottlesLinuxWindows

2010-07-12 10:11:27

ibmdwWeb

2023-10-12 09:05:11

2023-09-23 15:52:21

Linux白板应用程序

2023-08-22 20:55:04

AzureLLMTypeChat
点赞
收藏

51CTO技术栈公众号