公告資訊

未經授權,禁止轉載網站文章與內容。如有需要可以跟我聯絡,謝謝!!




2011年11月26日 星期六

雲端應用程式開發(2) – 建立Web 角色

最簡單的雲端應用程式開發,就是從Web角色開始。

Web角色就是在Windows Azure 雲端平台當中的IIS 7執行環境,而你只需要會開發ASP.NET應用程式,就可以透過相同的開發經驗,將ASP.NET應用程式移植到雲端執行。當然,Window Azure也提供了PHP與JSP等等異質平台所需要的執行環境,因此除了ASP.NET之外,利用PHP或是Java所開發的雲端應用程式,也可以部署到Windows Azure雲端平台來執行:

Windows-Live-Writer_195c89a49e5e_7C02_5_3

(圖:Windows Azure提供了異質平台的雲端執行環境)

這裡我們先以ASP.NET應用程式為主,介紹一下Web角色的基本操作觀念;至於其他平台的部分,會在後面再陸續介紹。首先以系統管理員身分,開啟Visual Studio 2010 開發工具。若是你有安裝Windows Azure SDK的話,在新增專案的時候,就可以從"Cloud"的專案範本當中,找到"Windows Azure Project"的雲端專案範本。選取"Windows Azure Project"雲端專案範本之後,設定專案名稱為"CloudDropbox" 以及專案儲存的路徑之後,按下"確定"按鈕繼續:

SNAGHTML935e0bd

然後會出現如下圖的對話方塊。首先先選擇要新增 "ASP.NET Web Role",然後按下 image按鈕之後,就可以在Windows  Azure雲端解決方案當中加入一個Web Role角色。接著選取右邊新增的Web角色,按下 image按鈕之後就可以修改Web角色的名稱。在這裡我們暫時先把這一個Web角色取名為"CloudDropbox_WebRole",然後按下"OK"按鈕:

SNAGHTML9443aaf

此時Visual Studio 2010開發工具會開啟CloudDropbox解決方案,裡面會包含有CloudDropbox以及CloudDropbox_WebRole兩個專案:

image

CloudDropbox專案是用來管理所有需要封裝及部署到Windows Azure雲端平台所需要的角色以及設定的專案,是雲端應用程式封裝及部署的單元。而在CloudDropbox專案中,預設的建立Web角色則是會對應到名稱為CloudDropbox_WebRole的ASP.NET專案。目前我們就先用預設專案範本的內容,來練習一下如何在本機開發環境當中測試開發好的雲端應用程式專案。

因為Windows Azure SDK會在你的開發環境當中安裝本機的模擬環境,因此當Windows Azure專案開發完成之後,你可以直接在Visual Studio 2010開發環境中按下 F5鍵,先在本機的模擬環境當中測試。當按下 F5按鍵之後,首先Visual Studio 2010開發工具會先編譯解決方案,然後會開始準備本機的模擬環境:

SNAGHTML95d8804

模擬環境啟動之後,你可以在開發環境作業系統的通知列當中,看到 image圖示。用滑鼠移到圖示上就會出現提示視窗,顯示本機的計算與儲存單元都已經準備完成:

image

接著,就跟一般的ASP.NET專案一樣,Visual Studio 2010開發工具會開啟瀏覽器,並且連結到裝載在本機模擬環境當中的雲端應用程式:

SNAGHTML9638c48

很簡單吧!! 其實對於ASP.NET開發人員來說,開發雲端應用程式的過程是很類似的,比較不一樣的地方會是在於設計時的一些架構概念以及部署的過程,這些在稍後會再繼續為大家介紹。下一篇文章,我們就要先來申請一個試用的帳號,並且學習如何將開發好雲端應用程式直接部署到Windows Azure雲端平台當中,讓全世界的使用者都可以馬上使用!!

2011年11月23日 星期三

雲端應用程式開發(1) - 執行環境概論

PaaS (Platform as a Service) 平台最方便的地方在於,平台本身已經設定好了應用程式所需要的執行環境;因此對於開發人員來說,只需要了解 PaaS平台提供了那些支援,就可以在程式中直接使用這些服務,而且在部署的時候不需要另外再透過 IT人員的協助,透過設定的方式就可以調整所需要的執行環境。

以Windows Azure來說,雲端平台環境預設就提供了下面幾種基本的服務:

1. 託管服務 (Hosting Service):

Windows Azure 的託管服務分成幾種不同角色(role)。Web 角色就是在雲端的IIS 7,可以部署並且執行ASP.NET、PHP 等Web應用程式;而Windows 角色則是在雲端上面的Windows服務,你可以將需要常駐執行的程式,透過Windows 角色開發之後部署到Windows Azure當中執行。

如果執行環境當中,需要比較特別客製化的模組才可以執行的話,Windows Azure也支援VM 映像角色,讓你可以將客製化的執行環境封裝到虛擬機器映像在上再到雲端執行。

2. 儲存體服務 (Storage Service):

顧名思義,就是用來存放資料的服務。儲存體服務當中可以儲存Table、Blob和Queue等資料,如果有需要的話,也可以mount一個drive出來使用。而所謂的Table資料,並非資料庫當中的表格,而是用來存放程式中的一般非結構化實體(Entity)資料。儲存體服務可以隨時根據需要進行擴充,而且也可以根據程式的需要設定存取的權限。關於儲存體服務的操作方法,會在後面透過實例來介紹。

3. 資料庫服務:

雲端應用程式運算處理過的結構化資料,像是訂單或是產品資料,則是可以存放在SQL Azure的雲端資料庫當中。而透過Data Sync服務,SQL Azure當中的資料還可以更進一步與其他的SQL Azure實體,或是企業內部的SQL Server進行雙向的資料同步,也可以透過報表服務產生雲端的報表。

4. Windows Azure AppFabric:

雲端當中的應用程式執行平台,包含了分散式的快取服務(Caching)、雲端的服務匯流排(Service Bus)和存取控制服務(Access Control Service, ACS)。分散式的快取服務提供可靠而且速度快的暫存資料平台,而服務匯流排則是讓你可以將多個其他的服務,整合到你的服務當中使用。

存取控制服務提供簡單的方法來驗證及授權使用者存取你的 Web 應用程式和服務,同時可以從程式碼提取驗證和授權的功能。不需使用應用程式所特有的使用者帳戶來實作驗證系統,可以讓 ACS 協調使用者的驗證及大部分授權工作。ACS 整合標準型的身分識別提供者,包含企業目錄 (如 Active Directory) 和 Web 身分識別 (如 Windows Live ID、Google、Yahoo! 和 Facebook)。

5. 內容傳遞網路(CDN)服務:

在策略性放置位置快取 Windows Azure Blob 和計算執行個體的靜態內容輸出,以便提供最大頻寬來傳遞內容給使用者。

6. 虛擬網路服務:

透過 Windows Azure Connect,可以使用簡單的使用者介面,在組織網路中的電腦或虛擬機器 (VM) 與 Windows Azure 中執行的角色執行個體之間設定 IPsec 保護的連接。

下面這張堆疊圖,簡單的整理了Windows Azure雲端平台中的服務的架構:

Azure

而除了公有雲之外,Windows Azure也可以與企業內部的服務結合,建構混和雲(Hybrid Cloud)服務。如此一來,企業的應用程式就可以分散建立在雲端上立即可以使用的環境中,節省 IT 設備與管理的成本。而對於Windows Azure的架構有了基本的概念之後,下一步就可以來看一下如何開發雲端應用程式。

2011年11月19日 星期六

雲端應用程式開發(0) - 做個Dropbox有多難?

當網際網路從 .com時代邁入 .App時代,你準備好了嗎?

在 .com的年代,當你想要透過網路賺錢,必須要成立公司,設置機房,架設網站、招募人員... 等等,好像少了什麼? 沒錯,要做這些事情,你必須要有"錢",而且是"很多很多錢",才可以完成你的夢想。所以在 .com的年代,如果背後沒有金主或是創投資金挹注的網路公司,通常連創業都會有困難,更別說要營運了...

而現今的 .App時代,又是另一種局面。在 .App時代中,當你有了一個"可能"可以賺錢的想法之後,你並不需要花大錢去尋找金主,因為在網路上,已經有隨即可用的 PaaS平台,讓你可以透過租用的方式,部署你的服務;而網路上也存在者各種不同的軟體服務市場、市集,讓你的服務可以直接被推送到使用者面前,增加賺錢的機會。更棒的是,如果你的想法夠好,你還可以參加像是微軟的BizSpark計畫(http://www.microsoft.com/taiwan/bizspark/),取得更多的免費資源,大大降低了個人創業的門檻....

也就是因為在.App 時代中,開發人員不需要事先為了建立系統架構(機器、作業系統、防火牆…等等)而傷腦筋,因此你可以在隨時有創意的發想之後,透過Visual Studio 2010開發工具以及你既有的 .NET程式開發技術,就可以快速建立應用程式並且發佈到市集當中。

你覺得開發個Dropbox的解決方案很難嗎? 或許你會想說:

"我不懂Cloud Computing,也不懂MapReduce,應該是不行吧??"

其實,開發雲端應用程式,把你的創意變成可以賺錢的系統,距離並沒有這樣難。一開始,你需要先準備下面的一些傢私:

1. Visual Studio 2010 開發工具:無論是開發行動裝置端的程式,或是雲端的服務,都可以透過這一個工具搞定。

2. IIS 7:主要是程式開發完成之後,提供本機測試的環境。

3. Windows Azure SDK for .NET - November 2011(Get the SDK):最新的Windows Azure SDK,安裝好之後就有模擬器可以測試開發好的雲端程式。

環境建立好之後,下一步就可以開始開發你的Dropbox解決方案! 別擔心,只要你會開發ASP.NET應用程式,跟著接下來這一系列的教學,搭配Windows Azure雲端平台,不用建立自己的機房,不用懂Cloud Computing,你也可以開始在雲端大顯身手,用力擁抱 .App時代!!!

2011年11月18日 星期五

你是Software Engineer,還是System Engineer?

Web 應用程式發展到目前以來,儼然已經成為一門顯學,百花齊放,各式各樣的解決方案都有;而加入了行動裝置之後,開發架構與執行環境又更顯得複雜。然而大家捫心自問,這些Web 應用程式,測試過之後,每次都能順利上線嗎?

在傳統軟體的分工當中,開發人員負責開發應用程式、測試、打包,而IT人員協助建置環境、部署以及維運。然而隨著Web應用程式所需要的執行環境越來越複雜,IT 人員維運的成本也就越來越高;如果再加上各種不同新平台模組的設定,IT 人員幾乎是無法掌握Web應用程式上線之後的狀況,於是乎大大小小的問題,都要找開發人員回來處理,搞得開發人員既要開發新的功能,又要三不五時看看是不是因為什麼設定被改掉,導致系統服務發生問題。惡性循環的結果,最後就是每個開發人員都必須要校長兼撞鐘,變成 "Software + System Engineer"….

若是任由故事繼續這樣發展下去的話,我看以後真的是會找不到開發人員了。幸好在雲端的解決方案當中,可以把維運的工作,交給雲端平台(Platform)的提供者,而開發人員只需要著重在系統程式開發的方面就可以了。省卻了IT 環境的建置與維運的工作之後,開發人員的解決方案可以更快的部署上線;這對於提供SaaS服務或是開發行動裝置解決方案的雲端服務廠商來說,更是大大節省營運成本的一盞明燈!

Cloud

但是大家需要注意的是,有很多團隊對於雲端平台都有錯誤的觀念,以為只要把執行環境直接做成虛擬機器之後,找個代管商的機器丟上去就可以了。請參考上面的這張圖,若是將執行環境製作成虛擬機器,或是使用Amazon這一類 IaaS 所提供的服務, 表示還是必須要從安裝、升級作業系統,設定防火牆、防毒防駭、設定網路負載平衡...等等開始製作你的環境;而這些環境將來如果需要升級與調整,或是虛擬機器需要備份,也比需要透過或是IT 人員處理(通常會是)才可以完成。如此一來,節省不了多少系統營運的成本,卻又把環境搞得更複雜…

雲端時代的開發人員,請記得要捨棄掉IT 時代的思維,專注在建立創新服務跟收錢上就好! 因此在建立SaaS服務或是行動裝置解決方案的後端服務時,PaaS會是比較好的解決方案。PaaS 除了可以幫你完成前一段文章中所有用紅色標記的 -- "" -- 的工作,又可以在無需自己建置機房的狀況之下,將服務快速的部署到全世界的任何地方。如此一來,Software Engineer才有可能有更多時間,創造出更多賺錢的機會!!

最新回應

Loading...

即時與版主對話


(若狀態顯示"忙碌"時,我可能無法馬上回應。你可以留下Email,我會盡快跟你聯絡,謝謝喔!!)