公告資訊

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




顯示具有 程式開發 標籤的文章。 顯示所有文章
顯示具有 程式開發 標籤的文章。 顯示所有文章

2012年6月13日 星期三

Windows Azure 無法啟用試用帳號的問題

Windows Azure 雲端平台已經可以在台灣使用了,但是有些朋友在啟用試用帳號的時候,遇到了一些無法啟動的問題。下面是目前暫時的解決方法:

1. 開啟 http://account.live.com ,並且使用Live ID登入。

2. 檢查一下,如果姓名欄位有中文資料的話,請暫時先改成英文的。

3. 儲存之後,再回到試用的頁面( https://www.windowsazure.com/zh-tw/pricing/free-trial/ ),這時候應該就可以啟用試用帳號了。

如果你馬上就想試用Windows Azure雲端平台,這是暫時的解決方式,再一些時間就會完全解決。

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年4月26日 星期四

上雲端很貴? 成本應該怎樣算?

幾個月之前,有位合作夥伴跟我說,他每個月的帳單都好貴,有沒有辦法幫他省點錢。

“請問你租用的運算環境大小是?”

  "Extra-Large" ,我想我知道問題大概是在那裡了。

  "請問你目前運算環境中,CPU和記憶的用量是…?"

“很低ㄟ,不到5%吧…”

要上雲端,絕對要先換腦袋  -- 不管是在架構的設計或是執行環境的規劃。在傳統的 IT環境當中,因為Server設備的採購以及升級都需要經過冗長的採購與建置程序,因此大家都會習慣一次採購高規格等級的機器,等機器進來之後,再把系統部署上去執行。而雲端呢?

在Windows Azure雲端平台上,因為你可以隨時根據程式執行的需要,調整所需要租用的運算環境的大小與數目,因此在系統上線的初期,你只需要租用"足夠"的運算環境來使用就好了,而不需要一開始就照以往的做法,先開最高規格的機器,再讓資源閒置在那邊浪費。以這個例子來說,原本這一位夥伴是使用Extra-Large的運算環境兩個instance,一整個月的支出大約是:

( 0.96美金 * 720小時 * 30 匯率) * 2 = 41472 台幣/月

但是實際上,以他系統上線初期的負載量,其實使用4個Extra-Samll的instance就足夠了,因此每個月的支出就變成了:

( 0.02美金 * 720小時 * 30 匯率) * 4 = 1728 台幣/月 (http://www.windowsazure.com/zh-tw/pricing/details/)

看到了嗎! 這才是真正他的系統在雲端每個所需要支出的成本! 其實只要一個月1728元,就可以在國際級的資料中心使用四個虛擬運算環境執行你的程式,還有負載平衡管理服務,而且還不需要你自己去設定作業系統環境與維運,你還會覺得雲端很貴嗎?

只要記得 "用多少,租多少" 的原則,其實把系統搬上Windows Azure雲端平台執行,的確是相當划算的! 但是需要注意的是,如果你是使用IaaS或是IDC的虛擬主機的話,除了虛擬機器的支出之外,其實還有許多額外的有形或是無形的成本需要考慮進去。例如一般的 IDC並不會告訴你,程式只部署到一台機器是不可靠的,因為如果要部署到兩台以上的話,你就還要另外再租用負載平衡管理服務,每個月就必須要再額外支出 500~2000左右;而一般的 IDC的虛擬環境,頻寬的計算方式也並非是採用資料傳輸量來計費,大小也都有限制,因此一旦突然有大量的資料傳輸需求,往往是無法立即處理。

換一個腦袋之後,你看雲端就不會再只是霧裡看花!

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年7月15日 星期五

無痛開發日 - 使用Visual Studio 2010

今天的無痛開發日,早上是由保哥分享Visual Studio 2010的開發經驗,下午由我介紹 IIS 7在目前SOA架構中所扮演的角色,以及Windows Server AppFabric的開發經驗。有興趣的朋友,可以到下面的網址下載我今天上課的講義:

另外,如果你聽完今天的課程,對於WCF與Windows Server AppFabric有興趣的話,在九月份的TechDays 2011大會中,會有專門的主題進行分享。

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" />

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

2011年1月31日 星期一

網際網路應用程式中的預鑄工法–Silverlight 4

在上個星期的研討會中,分享了很多個主題,其中有一個主題會後很多朋友都有興趣,那就是Silverlight 4技術的應用。很多人對於網際網路開發技術都會有很多誤解。先請問各位幾個問題:請問 HTML 5目前是W3C定義完成的標準嗎? 請問 CSS 3 目前是W3C定義完成的標準嗎? 請問未來的網際網路應用程式,還會是 "Thin-Client" 嗎?

前兩個問題的標準答案都是:。或許你會說,不是很多瀏覽器都說支援 HTML 5了嗎 ? 但事實上就是,W3C到目前為止,還沒定義完成最終版的 HTML 5 -- CSS 3 也是。像這些似是而非的資訊現在充斥在網路上,也常常誤導了許多開發團隊走了很多的冤枉路。

從 3、4年前開始,我就在很多ASP.NET與Silverlight的技術研討會當中,說明了Silverlight其實是網際網路應用程式的開發技術,特別適合用來開發商業級應用程式,而非只是與 Flash player對抗的技術。事實上,Silverlight 4在商業級應用程式開發方面,無論是開發工具或是執行效能,都比Flash好太多了。而若是相較於JavaScript 而言,Silverlight 4 提供了更多資料繫結的方法以及更好的除錯工具,在前端瀏覽器中,可以創造出更多豐富的功能。以研討會中所舉的範例來說,透過Silverlight技術,你可以很容易的就在瀏覽器當中,與後端的服務建立TCP的繫結,讓前端的網頁可以即時更新氣象的資料(範例程式在ASP.NET升級寶典中)。

SilverlightNetTcp

Silverlight 4也簡化了很多在瀏覽器中透過JavaScript無法做到或是很難做到的功能,像是與後端的服務做複雜的繫結,都可以很輕鬆地透過Visual Studio 2010開發工具完成 -- 而且很容易就可以測試與除錯,之後會再透過部落格跟各位再分享其他的範例,今天先來從開發架構上了解,Silverlight技術所帶來的改變。

今天要談的所謂 "預鑄工法",是目前建設大型建築物,像是高樓或是橋梁所普遍採用的技術,主要作法是將大型建築物複雜的部份先在外部工廠建造完成之後,將來運到工地之後就可以直接組裝,可以大大的縮短工作所需的時間。

image   (圖片來源:榮工處網站)

因為Silverlight 4應用程式可以直接整合JavaScript,而且也可以直接從瀏覽器中存取不同位置的後端網路服務,因此當開發測試好Silverlight應用程式之後,就可以將Silverlight應用程式嵌入網頁中。因為大部分複雜的程式都已經包裝在Silverlight應用程式中了,因此就不需要再去撰寫或是維護一堆的JavaScript;換句話說,JavaScript就變成了將Silverlight應用程式與網頁中的HTML元素繫結的工具,這就是我所謂的 "網際網路應用程式中的預鑄工法" -- 開發商業級應用程式的時候,將網頁中複雜的部份,像是需要顯示即時資料的圖表或是資料庫的繫結,直接透過Silverlight 4應用程式開發完成之後嵌入到網頁中,再透過JavaScript與網頁中的元素互動。如此一來就不需要在伺服器端維護其他網頁程式,既可以加速這些複雜功能執行的效能,也可以減少維護JavaScript所需要的成本。

這一篇是一個楔子,後續將開始分享實際的做法。至於一開始最後一個問題的答案:當網頁中需要執行的程式越來越複雜,目前在用戶端執行時使用大量CPU資源或是GPU加速運算已經是常態。手機都要邁入雙核心時代了,你認為呢 ?

2010年11月16日 星期二

在多執行緒/平行運算中使用集合

 

.NET Framework 4.0 當中,其中一項很重要的特色,就是加入了對於平行運算的支援,讓你的應用程式可以發揮多核處理器的運算能力,甚至於搭配Windows HPC Server 2008 R2進行分散式運算。使用.NET Framework 4.0當中的Task Parallel Library,C#與VB.NET所建立的程式很容易就寫出在多核的環境中執行平行運算的程式。

然而,在平行運算的的程式使用集合一向是個問題,因為在.NET Framework 4.0以前所提供的集合物件,都不是執行緒安全(thread-safe)的物件;換句話說,在平行運算的程式中使用,必須要透過特別的同步鎖定(synchronization)寫法,才可以正常的使用集合中的資料。

這一個問題,.NET Framework 4.0 提供了解決的方式。在.NET Framework 4.0當中,加入了 System.Collections.Concurrent 命名空間,提供了許多可以使用在平行運算程式當中的執行緒安全(thread-safe)集合類別,包括了:

  • BlockingCollection
  • ConcurrentBag
  • ConcurrentDictionary
  • ConcurrentQueue
  • ConcurrentStack
  • OrderablePartitioner
  • Partitioner

在支援平行運算的程式碼當中,只需要將原本使用的集合換成新的集合就可以了。例如原本的程式碼:

pulblic class MyData{

public List<byte[]> Data {get; set;}

}

因為 List集合物件不支援執行緒安全,因此當你將MyData物件直接在平行運算的程式中使用,並且沒有特別同步鎖定的話,可能會出現下面的錯誤:

System.IndexOutOfRangeException: Index was outside the bounds of the array.
   at System.Collections.Generic.List`1.Enumerator.MoveNext()

而在.NET Framework 4.0 的程式當中,你可以將 List集合換成 BlockingCollection集合物件:

pulblic class MyData{

public BlockingCollection<byte[]> Data {get; set;}

}

因為 BlockingCollection物件本身就支援執行緒安全,因此直接將BlockingCollection物件使用在平行運算的程式碼當中,就不會有前述的錯誤發生!!!

2010年11月15日 星期一

在PHP程式中使用Windows驗證

在IIS 7.5當中,可以使用" Windows Platform Installer” 工具,安裝支援PHP的延伸模組之後,就可以在IIS上執行PHP應用程式了。當然,此時你就可以使用IIS或是ASP.NET的Membership,建立PHP應用程式所需要的使用者驗證功能。在這裡我先介紹最簡單的WIndows驗證的作法。

Windows驗證在ASP或是ASP.NET的應用程式中,是驗證企業內部網域使用者最簡單的方法;同時使用者在支援Windows驗證的不同Web應用程式間切換時,也不需要再重新登入,對使用者來說也是相當的方便。若是要在裝載在IIS 7.x上執行的PHP應用程式當中使用Windows驗證,首先你必須要開啟PHP應用程式目錄的Windows驗證功能:

1. 用滑鼠雙擊應用程式目錄的Authentication(驗證)設定。

image

2. 取消匿名驗證(標示 1),並且啟用Windows驗證(標示 2):

image

完成之後,將來所有來自用戶端的HTTP要求,IIS就會使用網域帳號驗證使用者;驗證成功之後,使用者的Window網域帳號就會被自動寫入 "LOGON_USER" 的Server變數當中。而在PHP應用程式中,只需要透過下面的程式碼,就可以取出驗證過的使用者帳號:

image

除此之外,也可以結合ASP.NET的Forms驗證檢查使用者身分,或是透過URL方式進行授權。

2010年11月11日 星期四

建構私有雲叢集運算核心–Windows HPC Server 2008 R2

雖然最近相當忙,但是發現技術的東西用過之後如果沒有記錄一下,很快就會忘記了。

雲端運算是最近相當熱門的題材,為了讓無法自行建置雲端平台的新興網路產業,以及希望降低公有雲TOC的企業,微軟提供了Windows Azure,讓需要企業可以隨時調配所需要的公有雲架構。然而,在企業當中,還是有需要可以將一些內部的企業級應用程式,建置在企業內私有雲端執行的需求。

Windows High Performance Computing (HPC) Server 2008 R2 是微軟叢集運算的核心,搭配.NET Framework 4.0 所提供的TPL(Task Parallel Library),你就可以將C#或是VB.NET所建立的WCF服務,進行分散式的運算;而像是ETL、Data Mining等需要大量運算資源的Job,也可以透過HPC Cluster的Head Node進行分散式運算,並且還可以監控每台機器的執行狀況,產生報表。再加上Windows Server AppFabric Caching 的分散式快取,其實要建立企業內私有雲平台並不難。下面是Windows HPC Server 2008 R2的叢集運算基本架構:

ClusterComputing

Windows HPC Server 不是新的作業系統,而是架構在Windows Server 2008 R2 64 位元作業系統上面的叢集運算服務,由下面幾個基本的角色構成:

1. Head Node:負責集中管理與分派工作(Job)的節點,透過SQL Server資料庫紀錄工作與執行狀態。

2. WCF Broker Node:負責裝載WCF服務,並且將用戶端要求傳送到叢集中運算,回傳結果。

3. Compute Node:負責運算的節點,可以是Windows Server或是Windows 7的工作站。

設定Job的時候可以指定需要使用多少運算的資源:

image

image

但需要注意的是,若是要發揮叢集運算的最佳效果,程式在撰寫的時候,就必須要把平行運算的設計考量,加入到程式碼當中。關於.NET Framework 4.0的平行運算是一個很大的課題,有時間再慢慢分享。

2010年9月27日 星期一

Windows Server AppFabric Caching (3) - 與資料庫存取在效能方面的比較

在利用Windows Server AppFabric Caching,建立大量資料存取的系統時,Windows Server AppFabric可以大大的減輕系統存取資料庫時所造成的I/O負擔,同時其Key-Value的存取方式也讓程式可以透過Key值直接取得所需要的物件,不需要花時間建立資料連線。下面分享一個實際的測試結果:

在這一個測試當中,我將4000萬筆資料從資料表搬到Cache當中儲存,再與資料庫查詢同一筆資料的結果作比較;資料庫與Cache Server都在美國的Data Center中。在沒有啟用Local Cache功能時,第一次查詢資料的結果為:

image

相同的條件再執行一次,結果為:

image

從結果可以看出,使用資料庫查詢在第一次建立資料連線時,需要耗費相當的時間;而當資料連線建立完成之後,後續的存取時間使用Cache或是使用資料庫其實差異不大。但就如同一開始所說的,使用Cache可以減輕資料庫I/O的負擔,這對於我們一天有幾十GB資料要新增的系統來說,有相當的幫助。

接下來,我們啟用LocalCache之後,再重新測試一次:應用程式第一次查詢資料的結果和之前差不多:

image

(請想想,相對於對第一次資料庫存取而言,為何這一次快了一倍? )

相同的條件再執行一次,結果為:

image

0 毫秒!!

對於大量提供資料的應用程式而言,Windows Server AppFabric Caching 除了可以減輕資料庫的負擔之外,當啟用LocalCache之後,AppFabric Caching會自動將使用過的物件快取在應用程式當中,當下次要再使用相同的物件時,就不需要再從Cache Layer當中去存取物件,因此幾乎是即時就可以取得資料!!

但需要注意的是,雖然Cache可以讓我們在近乎即時的狀況之下使用物件,但是在設計上,Key-Value相對於關聯式資料庫而言,是完全不同的效果,同時資源的消耗上也是完全不同的。下次,再來談設計上的考量…

最新回應

Loading...

即時與版主對話


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