公告資訊

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




顯示具有 技術文章 標籤的文章。 顯示所有文章
顯示具有 技術文章 標籤的文章。 顯示所有文章

2012年6月4日 星期一

如何開通Windows Azure雲端平台三個月試用

Windows Azure雲端平台在台灣已經可以開放試用了! 如果有興趣試用的朋友可以參考下面的步驟開通試用帳號:

1. 開啟連結到Windows Azure雲端平台官方網站:http://www.windowsazure.com/zh-tw/ ,然後選取首頁上的 "免費試用":

image

2. 接下來,選取Windows Azure 試用頁面中的 "免費試用" 按鈕:

image

3. 登入你的Windows Live ID,註冊在台灣的Live ID就可以直接開通喔!!

SNAGHTML92eadac

4. 在彈出的視窗當中,國家可以直接選取"台灣",然後按下右下角的箭號繼續下一步:

image

5. 接下來要驗證使用者身分,以避免資料錯誤。請參考下面步驟:

(1) 請先輸入手機號碼,最前面的 "0" 不需要輸入。

(2) 按下 "傳送簡訊" 按鈕,此時系統會傳送一封簡訊到你的手機上。

(3) 輸入簡訊中聳收到的驗證碼。

(4) 按下 "驗證碼" 按鈕。

驗證完成之後,一樣按下右下角的箭號,繼續下一步,輸入信用卡的資料。

image

6. 輸入信用卡的資訊,此時系統可能會向銀行要求1元進行授權確認,但是不會請款:

image

7. 完成之後按下下一步,如果信用卡資料沒問題,就可以開始試用Windows Azure雲端平台了!!

image

8. 你可以隨時選取 "訂用帳戶",檢視目前使用的狀況。需要提醒大家的是,因為試用帳號有使用資源的限制,因此適合用來測試開發好的雲端專案;若是要營運的話,最好要另外申請正式的帳號喔!

image

下一步:

Windows Azure雲端試用帳號開通之後,別忘了下載Windows Azure Training Kit,開始練習雲端平台上的開發喔!!

Windows Azure Training Kit - January Refresh:http://www.microsoft.com/en-us/download/details.aspx?id=8396

2012年1月10日 星期二

把Windows Azure 搬回家?

常常有些夥伴會問我,能不能把Windows Azure 裝在公司的機房裡 ?

其實現階端,很多朋友對於雲端平台的名詞都比較有概念了,但是有些觀念的部分可能是因為沒有實際運用過,所以比較不清楚一點,讓我們用最簡單的方式來說明Windows Azure 雲端平台的概念。

首先,先從公有雲和私有雲開始好了。民以食為天,我們就用開餐廳來舉例:假設是做小吃攤的話,你可以用自家的廚房,然後門口擺幾張桌子椅子,就開始做生意;但若是需要開餐聽賺大錢的話,就必須要有正式的店面,才可以容納川流不息的客戶,又不會影響自家人的三餐。

而餐聽裡有廚房,有桌子椅子;你家裡也一樣有廚房,有桌子有椅子,但是絕對不是做生意用的! 除了這些設施之外,開餐館還需要有裝潢、招牌、會計、廚師等等這些你家裡不需要有的成員。所以我們可以說,開餐廳的一些基本設施我們家裡原本就有,我們在家裡就可以利用這些既有的設施,研發新的菜色,然後再請餐廳的廚師幫我們利用這些新菜色賺錢。

 

因此簡單的說,私有雲就是你家,公有雲就像是餐聽的店面。在Windows Azure雲端平台上面,有Web Role、Worker Role和SQL Azure等等服務,而你利用企業內既有的IIS、Windows Service與 SQL Server就可以模擬出來這樣的環境,所以其實並不需要在公司裡自己再架一套起來。而且,除了這些基礎建設之外,Windows Azure雲端平台更重要的價值,就是減輕應用程式上線所需要的IT 營運成本,這更是沒辦法在公司中模擬的。

“We wanted a platform-as-a-service solution, not just cloud infrastructure” (http://www.microsoft.com/casestudies/Case_Study_Detail.aspx?CaseStudyID=4000011637)

很多人都會有錯誤的觀念,以為使用虛擬化技術所建構的環境,就是雲端平台(platform),所以以為自己造一個雲端的環境很容易。事實上,虛擬化技術只是雲端基礎建設(infrastructure) 的一種技術,就好像你今天要開餐廳,透過虛擬化技術,你可以得到的是一個店面的毛胚屋,裡面的水電、瓦斯、裝潢、隔間等,都必須要你自己處理。換句話說,假使你有一手好菜色,在開始開張賺錢之前,你還必須要花很多的心力,才能夠開張營業。

而Windows Azure提供的是雲端平台,就好像是裝潢好的店面,你只要把材料搬進店哩,餐廳馬上就可以開張作生意;甚至還提供了中央廚房,如果生意好的話,店面可以隨時擴張,也不會斷炊…

而開餐廳一定需要買店面嗎? 一般說來,如果是好地段的店面的話,買下來當作一種投資,是有增值的可能;但是以機房設備這種東西來說的話,我入行到現在,從來沒聽說有會隨著時間增值的,只有不斷的折舊,不斷的淘汰而已。因此,以租賃代替購買,還有隨著使用量隨時調整租用資源的數量,才是真正可以有效掌握成本的一種做法。

所以,不要再去想怎樣把Windows Azure搬到公司裡了,趕快想一些新菜色,搬到Windows Azure雲端平台開張做生意吧!!!

2012年1月1日 星期日

從Windows Azure 雲端平台談Web應用程式執行環境的安全性

對於企業或是雲端服務提供廠商來說,如何讓對外營運的網站或是Web應用程式有一個安全又穩定的執行環境,一直是一個很重要的課題。然而對於大部分的公司來說,因為內部缺乏專業的資訊安全服務團隊的關係,因此往往是等到遭受到惡意的攻擊導致服務停止之後,才開始去修補漏洞;而就算是作業系統有推出修補的程式,IT 人員也有可能因為事情太多忘了馬上安裝修補程式,而導致系統出現了安全的空窗期...

除了作業系統可能會有安全性的漏洞之外,惡意的使用者也可能從網路發動阻絕攻擊(DDOS)來癱瘓你的網站。因此要讓一個Web 應用程式可以對外營運,除了開發之外,有很多的成本都必須花在IT 設備以及網路安全的監控上。重點是 -- 網路上的攻擊手法日新月異,這些投資還是無法保證你擁有一個真正安全的執行環境...

Windows Azure 雲端平台本身是屬於PaaS的一種,而且通過了ISO 27001的資訊安全認證,因此當你把Web 應用程式部署到Windows Azure 雲端平台之後,剛剛前面描述的這些傳統IT 安全性部分的需求,就由Windows Azure 雲端平台的維運團隊來幫你處理了!! 我們可以從最近的一次安全性更新,來看一下Windows Azure如何幫你維護Web應用程式執行環境的安全性:

首先,我們可以先從Scott的Blog,了解這次安全性重要更新 (MS11-110)的內容:http://weblogs.asp.net/scottgu/archive/2011/12/28/asp-net-security-update-shipping-thursday-dec-29th.aspx

而當重要安全性更新發布之際,Windows Azure 的營運團隊也會寄給每個Windows Azure用戶一封標題為:"

IMPORTANT NOTICE: Windows Azure updated to address Security Bulletin MS11-100

" 的信,內容如下:

image

這一封信就是告訴每一位Windows Azure 雲端平台的用戶,這一個作業系統的重要安全性更新,將會自動套用在用戶所租用的作業系統上。換句話說,只要你將Web 應用程式部署到Windows Azure 雲端平台之後,執行環境的作業系統就會自動地保持在最安全的執行狀態,即便是沒有IT 人員的軟體公司,也可以很低廉的成本就可以有高安全性的Web 應用程式執行環境!!

當然,若是你擔心自動套用作業系統安全性的更新可能會導致你的程式部分功能發生問題,你也可以透過下面的方式,測試之後再手動地將執行環境上到最新的版本:

1. 在Windows Azure管理工具當中,首先在託管服務中,建立一個新的預備部屬環境:

image

2. 設定這次部署的名稱,並且重新上載生產(production)環境所使用的封裝以及設定檔:

image

3. 完成之後,選取上方選單的"設定作業系統"按鈕:

image

4. 從作業系統清單中,根據Windows Azure營運團隊所發布的訊息,選取這次更新之後的作業系統版本(WA-GUEST-OS-2.8_201109-03):

image

Windows Azure雲端平台中,目前有兩種作業系統:Windows Azure Guest OS 1.x的是Windows Server 2008,而Windows Azure Guest OS 2.x的則是Windows Server 2008 R2. 你可以根據需要選擇需要的作業系統,而不需要另外再付授權的費用。

5. 完成之後,你就可以利用剛剛建立的預備部署環境,測試安裝了安全性更新之後,你的應用程式是否還是可以正常地執行。

6. 接下來,只需要按下上方選單的"交換VIP"按鈕:

image

然後下面的視窗會告訴你,接下來生產部屬與預備部署的VIP將會交換。換句話說,測試完成的預備部署環境,就會變成生產環境了!!

image

7. 最後,別忘了將原本的生產環境刪除,否則是會繼續收費的喔!!

在傳統的IT 的生產環境當中,若是要上安全性的更新,除了可能需要重新建置預備部署環境測試之外,當正式要安裝安全性更新時,往往也需要將生產環境離線,安裝完更新之後再測試,才可以重新上線。這樣的作法不但需要很多IT 的成本,也可能會造成系統的down-time。而透過Windows Azure雲端平台自動化管理的機制,就算是你的生產環境中有100個Web Role的instance,我們也可以很輕鬆的測試系統在上了安全性更新之後的狀態,並且在沒有down-time的環境之下,輕鬆地將系統重新上線在最安全的環境之中!!

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年8月29日 星期一

你給我的雲不是雲?

前幾天,和日本來的同事聚餐。席間,日本IT 的主管知道我熟Web開發技術,問了我一個問題:

"我們只有一個人熟悉IIS,但是有很多Web Application需要部署跟維護,有沒有甚麼好的做法 ? "

他很擔心哪天這一個人離職之後,所有的系統就沒有人可以維護了。

目前大部分所謂的"雲端運算"的架構當中,大都強調透過虛擬化技術可以快速配置所需要的環境,並且善用伺服器的硬體資源。但隨著雲端運算需求的日益增加,Web相關技術以及IIS平台也都隨著加入了很多新的功能;換句話說,建構一個Web Application所需要的執行環境,已經不是單純的增加虛擬機器可以解決的問題,像是驗證、授權,URL重寫、甚至是快取及工作流程的設定,很多也都不是傳統的IT人員可以馬上掌握的。

這個問題很久之前微軟的吳典璋經理就已經跟我討論過,為了縮短IT與開發人員溝通的gap,因此特別在今年的MSDN講座與Techdays 2011中,加入了介紹ASP.NET 4以及IIS 7+Windows Server AppFabric的場次,希望讓大家可以對於如何使用微軟的新技術,在現有的企業環境中建立私有雲,讓開發人員所建立的雲端應用程式可以在上面執行有共同的概念。雖然是這樣,但建構私有雲少不了的還是建置私有雲實體環境以及維運所需要的成本。附圖是一般企業的IT投資與實際運用的參考曲線圖:

Windows Azure Platform Overview

回到一開始的問題,微軟的解決方案中,Windows Azure就是這個問題的好答案。透過Windows Azure所提供的平台,無論是Web Application或是Web Services (WCF Services),都可以在開發完成之後直接部署到上面執行;而IT人員也可以直接地透過管理工具隨時根據維運的需求,動態調整所需要的資源,節省成本支出。相較於一般的虛擬化技術來說,Windows Azure本身就是一個雲端的執行環境,因此IT人員並不需要花時間在為每一個應用程式管理設定 -- 因為程式需要的設定,都可以由開發人員直接包在package中;而開發人員更不用擔心應用程式會因為IT人員所提供的VM當中,忘了安裝某些服務或是設定,而導致應用程式無法上線執行...

當然,Windows Azure也提供了可以與現有企業私有雲的解決方案,透過Windows Azure Connect建立混合雲環境之後,可以很容易地將企業的系統直接延伸到雲端。有機會的話,再來分享手邊顧問案的使用經驗和其他心得。

2011年7月2日 星期六

使用VS 2010開發工具建立Android應用程式 - 初體驗

如果你接觸.NET Framework有段期間,應該或多或少聽過 Mono -- 一個由Novell所主導的一個Open Source計畫,目標是建立可以讓.NET應用程式跨平台執行的環境(http://www.mono-project.com/Main_Page). 而其中的Moonlight計畫目標,則是針對微軟Silverlight技術目前無法支援Linux作業系統,建立一個可以供Silverlight應用程式執行的環境(http://www.mono-project.com/Moonlight)。而針對行動裝置應用程式的需求,Mono則是提供了MonoTouch的開發環境,讓.NET的程式開發人員可以透過C#程式語言以及相關的函式庫,建立Android、iPhone、iPad以及iPod Touch上的應用程式。而今天要介紹的就是Android平台的應用程式開發環境 – Mono for Android(http://mono-android.net/).

Mono for Android 支援Visual Studio 2010 開發工具,因此C#開發人員可以在既有熟悉的開發環境中,開發、測試與部署Android應用程式。Mono for Android也提供了許多不同的版本(http://mono-android.net/Store),針對企業用戶的需求,Mono for Android也可以將開發好的Android應用程式直接部署到員工的手機上執行。而使用試用版本開發好的Android應用程式,則是可以直接部署到Android SDK當中的模擬器執行;如果你花399美金購買專業版,就可以將使用VS 2010開發好的Android應用程式部署到最多100隻手機上執行。

要使用VS 2010開發工具撰寫Android應用程式之前,首先要先下載Mono for Android以及相關的開發環境,參考下面的步驟:(完整的安裝指南請參考:http://mono-android.net/Installation/Visual_Studio)

1. 安裝32位元版Java開發套件(JDK):

從這下載:http://www.oracle.com/technetwork/java/javase/downloads/index.html,即使你的作業系統是64位元版,也請安裝32位元版的JDK。請注意,只安裝Java執行環境(JRE)是不行的喔!!

2. 安裝Android SDK

從這下載:http://developer.android.com/sdk/index.html。下載安裝之後,以系統管理員身分執行SDK Manager,SDK Manager會自動下載並安裝開發Android應用程式的環境所需要的套件。

image

3. 設定模擬器環境:

接著要建立Android應用程式開發完成之後,測試應用成試所需要的模擬器環境。首先在SDK Manager當中選取 "Virtual devices",然後按下 "New"按鈕:

image

輸入模擬器的名稱、要模擬的目標版本等設定之後,按下"Create AVD" 按鈕:

 

image

接著會出現下面的對話方塊,按下"OK"就完成了!

image

建立好模擬器環境之後,可以不需要馬上啟動,但是我建議各位可以先啟動看看。在預設狀況下,當Android啟動模擬器時,預設是到使用者目錄路徑下的 ".Android" 子目錄(例如:C:\Users\john_chang\.android)下讀取設定檔;若是你的使用者目錄不在Windows預設的C槽目錄下,那就必須在C槽的使用者目錄下建立一個".Android" 的目錄捷徑,指向實際使用者目錄路徑下的 ".Android" 子目錄位置(例如:F:\Users\john_chang\.android)

4. 安裝 Mono for Android 的VS 2010 套件

從這裡下載試用版:http://mono-android.net/DownloadTrial。安裝之前請記得先關閉所有開啟的VS 2010開發工具。

安裝完成之後,重新啟動VS 2010,新增專案的時候,就會出現"Mono for Android"的新範本類別,並且預設有三個新的範本可以使用:

image

直接選取"Mono for Android Application",然後將專案的名稱改成"HelloWorld",按下OK,就可以建立你的第一個Android應用程式專案。在Android專案中,Main.axml是用來定義主表單上面的使用者操作介面,Strings.xml相當於.NET專案中的資源檔,而程式則是定義在Activity1.cs的程式擋中。

image

雖然專案中這些檔案的架構與.NET專案不同,但若是你有接觸過WPF或是Silverlight專案的話,相信對於這種 Applicetion = Markup + Code的寫法不陌生。開啟 Main.axml檔案,在HelloWorld應用程式中,預設已經加入一個 "MyButton":

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<Button
android:id="@+id/MyButton"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/Hello"
/>

</LinearLayout>

開啟Activity1.cs程式檔,當MyButton被按下去的時候,程式中計數器的值會加一,同時按鈕上會顯示總共被按過幾次:

Button button = FindViewById<Button>(Resource.Id.MyButton);

button.Click += delegate { button.Text = string.Format("{0} clicks!", count++); };

最後開啟Strings.xml檔案,根據Main.axml檔案中的設定,找到表示表單中按紐文字設定的標籤,可以直接將按鈕上的文字換成你想要的值:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="Hello">請按我!</string>
    <string name="ApplicationName">HelloWorld</string>
</resources>

詳細的程式寫法就先不介紹了,完成之後按下 F5鍵,就可以執行HelloWorld應用程式。程式編譯完成之後,會彈出一個對話方塊,讓你選擇要將程式部署到哪裡測試。因為目前使用的是測試版,所以選取 "Start emulator image",啟動Android模擬器:

image

接著選取之前建立的模擬器名稱,按下OK鍵,Andorid模擬器就會啟動:

image

啟動完成之後,在之前的 "Select Device"對話方塊中,再按下 OK鍵,VS 2010就會開始將Android應用程式部署到模擬器上。按下應用程式主表單中的按鈕,就會顯示總共按過多少次。程式的執行結果如下:

image

2011年5月7日 星期六

Silverlight 4 企業級雲端應用程式實例

今天快下班前,有一位朋友問我,有沒有WPF的參考資料,他們想要用WPF來開發視窗應用程式。

對於企業來說,大部分的視窗應用程式的功能,都是連結到資料庫處理資料,或是呈現/列印商業用報表為主。如果是這樣的需求的話,通常我會建議不需要使用WPF技術,改為開發Silverlight應用程式會更好。

“Silverlight應用程式不是跟Flash一樣,是在網頁裡面執行的嗎 ?”

錯!! 其實兩年前我在Tech Days 2009大會上,就曾經介紹過Silverlight 3的於瀏覽器外執行(Out-Of-Browser, OOB) 的功能 -- 讓Silverlight應用程式除了可以嵌入網頁中執行之外,更可以直接安裝在使用者的桌面上,當成一般的視窗應用程式執行!!! 使用Silverlight技術開發在使用者電腦中執行的應用程式,有下面幾個好處:

1. 跨平台:

使用WPF技術所開發的視窗應用程式,只能執行在有安裝.NET Framework的機器上;而Silverlight應用程式,則可以透過瀏覽器,直接安裝在所有支援Silverlight的作業系統上。除了Windows作業系統之外,Mac與Linux上面目前也都可以安裝執行Silverlight應用程式到桌面上執行(Linux透過Moonlight 4,目前支援大部分Silverlight 3與Silverlight 4的功能)。

2. 自動更新:

大部分的企業會選擇開發Web應用程式的其中一個原因,就是更新程式容易。而對於Silverlight應用程式來說,當有新版程式部署到企業伺服器上時,程式中可以設定自動更新,讓使用者的桌上執行的Silverlight應用程式可以永遠保持最新的版本。以POS或是ERP系統來說,當程式上新版本時,就不需要再為每台機器部署更新程式。

3. 穩定、高效能的執行環境:

企業級的Web應用程式目前會在前端執行大量的JavaScript,雖然目前主流的瀏覽器都提供了高效能的Script引擎,但是程式越複雜,瀏覽器所消耗的資源也就越多。Silverlight應用程式在桌面上執行時,因為執行的是編譯過的程式,再加上CLR的加持,因此相較於Web應用程式來說,可以讓複雜的程式跑得更穩定,執行速度更快。

4. 縮短開發與除錯時間

這我就不贅述了,Silverlight應用程式相較於ASP.NET或是AJAX技術來說,是真正的MVC架構,無論是開發或是除錯都很方便。

為了讓大家了解使用Silverlight技術開發企業級應用程式、甚至是雲端應用程式的好處,我把去年微軟MIX 10大會其中的一個範例部署到Windows Azure上,讓大家實際體驗看看。下面是操作的步驟:

1. 首先,請使用瀏覽器開啟 http://contoso.cloudapp.net/,你會看到如下圖的網路書店,這個是一個嵌入到網頁中的Silverlight應用程式,你可以切換不同的書店檢視員工的資料:

image

2. 在瀏覽器中按下滑鼠右鍵,在快捷選單中會出現一個 "將John's Demo App安裝到此電腦..." 的項目(下圖紅框處)。選取 "將John's Demo App安裝到此電腦..." ,就可以準備將Silverlight應用程式安裝到桌面執行(很簡單吧!!):

image

3. 接下來的對話方塊會問你,要將Silverlight應用程式的捷徑安裝到何處,你可以選取 "開始功能表" 或是 "桌面",然後按下 "確定" 按鈕:

image

4. 完成之後Silverlight應用程式就會馬上安裝到你的電腦中,同時開啟執行。在這一個範例中,因為我有加入檢查版本的程式,所以當Silverlight應用程式啟動之後,就會顯示檢查的結果:

image

按下 "確定" 關閉對話方塊之後,Silverlight應用程式就會從桌面上執行:

image

5. 關閉網頁與Silverlight應用程式。在桌面上或是開始功能表中,你可以找到 "John’s Demo App" 的捷徑,下次要啟動Silverlight應用程式的話,直接開啟這一個捷徑就可以了!!

image

6. 你也可以隨時從控制台的 "解除安裝或變更程式" 當中,移除安裝好的Silverlight應用程式:

image

或是在Silverlight應用程式啟動時,按下滑鼠右鍵,選取 "移除此應用程式" 即可。

image

 

當然,使用Silverlight開發視窗應用程式,也不是全然沒有限制,若是需要經常存取本機作業系統元件,像是呼叫Win32 API的應用程式,目前就不適合用Silverlight技術開發。但是以目前企業級應用程式的情境來說,只要是Web應用程式可以做到的,Silverlight應用程式就可以做到 -- 而且使用者還可以直接安裝到桌面上執行,省去開啟瀏覽器載入網頁的動作。

目前的Silverlight應用程式已經可以存取視訊鏡頭、麥克風、印表機等本機資源,在下一版的Silverlight 5當中,Silverlight的執行環境會開放更多與作業系統互動的功能,讓你開發好的Silverlight應用程式除了可以是Web應用程式之外,更可以是使用者每天可以從雲端安裝到桌面上快速執行的視窗應用程式!!!

2011年4月22日 星期五

當透過WIF設定Claims-based驗證時,出現"ASP.NET設定沒有套用到整合式Managed管線模式" 錯誤訊息

若是要在多個站台間建立SSO(Single Sign-On),WIF(Windows Identity Foundation)是很容易可以使用的一種技術。透過Visual Studio 2010開發工具加上WIF SDK的協助,你可以快速地建立SSO所需要的Identity Provider或是Security Token Service,讓使用者只需登入一次就可以使用多個網站或是網路服務的功能。

在 Visual Studio 2010 開發工具中,你可以在網站中,透過 "Add STS Reference" 的方式,指定負責驗證的Security Token Service:

image

詳細的設定步驟這裡先省略,設定完成之後,WIF SDK當中的組態設定工具,FedUtil.exe,會自動調整Web.Config組態黨的設定,讓網站可以支援Claims-based的驗證模式。但是若是你在設定好之後直接執行網站,你會得到下面的錯誤訊息:

image

錯誤發生的原因,發生在WIF組態設定工具在調整Web.Config檔案時,沒有在<system.webServer>組態中加入下面的項目:

<validation validateIntegratedModeConfiguration="false" />

只需要把這項目加入,你的網站就可以正常執行了!

最新回應

Loading...

即時與版主對話


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