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