在Azure上構(gòu)建一個基于Facebook的營銷式應(yīng)用程序(上)
原創(chuàng)當(dāng)你的Facebook應(yīng)用程序點擊率上升的時候,它如何進行擴展呢?如果你是在Windows Azure上構(gòu)建的這個應(yīng)用程序,并且是按橫向擴展的思想設(shè)計的這個應(yīng)用程序,那么很高興地告訴,你可以“高枕無憂”了。
我們將會一步一步地為你講述,如何使用Windows Azure Toolkit和Facebook C# SDK(這兩個工具包可以在CodePlex上找到),在Azure上創(chuàng)建一個簡單的基于Facebook的“病毒式”營銷應(yīng)用程序,這兩個工具包可以讓這個工作變得更加輕松。
Facebook營銷活動的主要目的是讓客戶更多地參與你的業(yè)務(wù),類似于這樣:在你的公司的Facebook頁面上,你可以給提供了聯(lián)系信息的客戶發(fā)放一些獎品。這個活動要有一定的時間限制,因為你的獎品數(shù)量是有限的。但是,如果這個活動已經(jīng)開始了,你必須做好應(yīng)對指數(shù)級增長的準(zhǔn)備,因為這個活動會像病毒一樣傳播開來。對于構(gòu)建一個擁有這樣生命周期的應(yīng)用程序來說,Windows Azure是一個理想的平臺。你可以從幾個實例開始,限制存儲空間,然后按需進行擴展。當(dāng)這個活動“降溫”的時候,你可以卸載掉那些多余的實例。
但是,只是簡單地運行在Azure并不能保證可以獲得很好的可擴展性。一個Azure應(yīng)用程序還需要使用一些方法(例如:分割成多個角色),和簡單的,可擴展的存儲結(jié)構(gòu),針對擴展來進行設(shè)計才能獲得很好的可擴展性。
在本文中,我們將會在Azure上構(gòu)建一個可擴展的基于Facebook的營銷式應(yīng)用程序。這個樣例應(yīng)用程序的靈感來自于獲得巨大成功的Bloomin' Onion Facebook Campaign,這個應(yīng)用程序是2009年下半年,Thuzi團隊為Outback Steakhouse構(gòu)建的。它構(gòu)建在兩個工具包(Windows Azure Toolkit和Facebook C# SDK)基礎(chǔ)之上的,這兩個工具包也是Thuzi團隊的那些開發(fā)者構(gòu)建的。Windows Azure Toolkit開始的時候只是為在Azure上構(gòu)建基于Facebook的應(yīng)用程序提供一站式服務(wù)而已,但是后來演變成了一個通用的Azure開發(fā)工具包。當(dāng)我們在這個應(yīng)用程序中使用Windows Azure Toolkit進行存儲和隊列管理的時候,這些技巧可以應(yīng)用到Azure平臺上的任何一個應(yīng)用程序中。(關(guān)于)(關(guān)于Thuzi團隊)
這個應(yīng)用程序都做些什么
我們會把這個應(yīng)用程序構(gòu)建成一個基于Fackbook的canvas應(yīng)用程序,把canvas URL指向運行在Azure上的那個應(yīng)用程序??蛻舻谝淮芜\行這個應(yīng)用程序("AzureSample")的時候,他們會看到一個權(quán)限請求窗體,詢問這個應(yīng)用程序是否可以從Facebook中讀取信息(例如:客戶的出生日期)。
(圖1 因為這個應(yīng)用程序需要訪問客戶的出生日期,所以Facebook會在這個應(yīng)用程序啟動前,顯示一個權(quán)限窗體。這個應(yīng)用程序通過一個由Facebook C# SDK提供的特性(attribute)來聲明它需要哪些權(quán)限。)
假設(shè)這個客戶給我們授予了必要的權(quán)限,我們啟動了AzureSample,然后開始收集客戶的信息。
(圖2 第一個頁面來自于這個應(yīng)用程序的canvas URL,用來收集客戶的信息。當(dāng)這個頁面打開的時候,“First Name”, “Last Name”, 和“Date of Birth”都已經(jīng)用從Facebook讀取到的信息提前填充好了。)
這個客戶的“First Name”, “Last Name”, 和“Date of Birth”都是從Facebook中讀取到的,然后提前填充到窗體的相應(yīng)字段中。這個客戶只需填充“Email Address”和“Zip Code”字段就可以繼續(xù)瀏覽下一個頁面了。
(圖3 商店選擇頁面。我們給這個客戶提供了一個包含三個商店的列表,這三個商店是根據(jù)他們在前一個頁面中輸入的郵政編碼而列出的,這些商店都在郵政編碼所在地方圓50英里之內(nèi)??蛻艨梢赃x擇一個自己喜歡的商店。)
下一個頁面展示了一個包含三個附近的商店的列表,客戶在上一步輸入的郵政編碼在這里發(fā)揮了關(guān)鍵性的作用。這三個商店是這個客戶的郵政編碼所在地方圓50英里內(nèi)最近的商店。(對于這個實例來說,我使用隨機的郵政編碼生成了一個包含1000個商店的列表,作為樣例數(shù)據(jù)來使用。)在這一步,我們已經(jīng)收集到了我們需要的所有的用戶信息。“AzureSample”會啟動一個后臺任務(wù),把一封帶有客戶獎品的email發(fā)送給那個客戶,然后把這些聯(lián)系信息從快速的Azure Table Storage遷移到更加容易查詢的SQL Azure中。接下來,剩下的所有事情就是展示一個完成頁面了。
(圖4 “thank-you”頁面。如果客戶在注冊以后再次運行這個應(yīng)用程序,他們會被自動地重定向到這個頁面。)
#p#
項目結(jié)構(gòu)
在Facebook上,這個應(yīng)用程序叫作“AzureSample”,因為在Facebook上的應(yīng)用程序不能包含“facebook”這個字符串。如果你要安裝這個應(yīng)用程序,你可以在Facebook上給它起一個更有意義的名字,例如“SignUpFreeX”。在Visual Studio中,這個解決方案叫作“AzureFacebookSample”,它包含4個項目。
(圖5 在Visual Studio的解決方案資源瀏覽器中的“AzureFacebookSample”,如圖所示,這個解決方案包含4個項目)
“AzureFacebookSample.Cloud”是Azure應(yīng)用程序的主項目。它包含兩個角色,一個Web角色和一個Worker角色。web角色是通過“AzureFacebookSample.Web”項目來實現(xiàn)的,而Worker角色是通過“AzureFacebookSample.Worker”項目來實現(xiàn)的。
Web角色是一個ASP.NET MVC項目,包含了這個應(yīng)用程序的所有界面的視圖和相關(guān)的控制器邏輯。Worker角色負責(zé)發(fā)送獎品email和把聯(lián)系信息從Azure Table Storage遷移到SQL Azure中。
“AzureFacebookSample.Domain”是一個類庫項目,其中包括數(shù)據(jù)模型,隊列,和被Web角色和Worker角色共享的數(shù)據(jù)容器。通過域項目,Web角色和Worker角色會保存在Azure Storage, Azure隊列, 和SQL Azure的域?qū)ο笾小?/p>
“AzureFacebookSample”展示了在Azure上,你應(yīng)該如何組織Facebook應(yīng)用程序,但是還有幾件你需要做的事情它是無法代勞的,那就是實現(xiàn)一個你自己的“病毒式”的營銷應(yīng)用程序。首先,Worker角色實際上并不會發(fā)送一封email。在真正的應(yīng)用程序中,Worker角色需要連接一個外部的服務(wù),通過這個外部服務(wù)來生成大量的這次營銷活動所必需的email。在“AzureFacebookSample”中,并不包含連接到這個Web服務(wù)的代碼。第二,你需要一個額外的Worker角色來處理被郵件服務(wù)退回來的email,在Facebook上聯(lián)系客戶,嘗試獲取一個正確的email地址(以便于獎品email可以被發(fā)送)。最后,“AzureFacebookSample”并不會促使Facebook“likes”到公司頁面上,或者提醒客戶把這個應(yīng)用程序告訴他們的Facebook好友。
請看《在Azure上構(gòu)建一個基于Facebook的營銷式應(yīng)用程序(中)》
和《在Azure上構(gòu)建一個基于Facebook的營銷式應(yīng)用程序(下)》
原文名:Building a Facebook Marketing App on Azure 作者:Steve Apiki
【本文乃51CTO精選譯文,轉(zhuǎn)載請標(biāo)明出處!】
【編輯推薦】
- 在Azure上構(gòu)建一個基于Facebook的營銷式應(yīng)用程序(中)
- 在Azure上構(gòu)建一個基于Facebook的營銷式應(yīng)用程序(下)
- 無需頂禮膜拜 三步打造經(jīng)濟高效的云基礎(chǔ)架構(gòu)