公告資訊

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




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才有可能有更多時間,創造出更多賺錢的機會!!

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月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月28日 星期四

Office 365 Beta 初窺(1) -- 啟用

Windows Azure 是微軟所建立的雲端平台,而Office 365 (http://www.microsoft.com/zh-hk/office365/online-software.aspx),則是微軟所提供的雲端辦公室解決方案。就在最近,Office 365 Beta版正式可以申請帳號進行測試,雖然台灣目前不在提供Beta版測試的國家中,但是若是你有美國的公司地址的話,還是可以申請測試帳號試用Beta版。(香港也是有提供繁體中文Beta版測試的國家,但是為了避免有些專有名詞不同所造成的混淆,這篇文章還是先用英文版介紹)

這次我所申請的是Office 365 方案 P1,也就是針對25人以內的中小企業所提供的解決方案,裡面包含了電子郵件及行事曆(Exchange Online)、Office Web App、網站與協同作業、以及企業即時通訊(Lync)的功能。詳細的方案內容大家可以參考:

啟用Office 365的步驟相當的簡單,當你試用Beta版的申請通過之後,微軟會寄一封信給你,點選信件中的連結,就會進入到下面的啟用頁面:

image

因為目前Office 365還是試用版,所以"Country or region"欄位中雖然有台灣,但實際上目前並不可以選。填好了必要的註冊資訊以及你公司所要使用的網域名稱之後,下一步就進行帳號啟用的動作:

image

啟用完成之後的畫面如下:

image

這次先試試Outlook Web App的功能,先把操作介面跟時區設為台灣:

image

進去之後的操作介面,預設已經跟即時通訊軟體整合,所以在右上角會顯示連線狀態:

image

每個使用者都可以自己調整Outlook Web App所需要的設定,或是跟其他的帳號整合在一起:

image

同時,針對企業內的協同作業,Office 365也內建Sharepoint online,企業就不需要再自行建置Sharepoint Server,只需要啟用Office 365,就有馬上可以使用的Sharepoint Online環境可以進行協同作業!

image

image

不到10分鐘的時間,整個公司所需要的Email環境、協同作業環境以及即時通訊的雲端辦公室環境就設定好了,真是方便!! 如果說Windows Azure是"IT Ready"的開發環境的話,Office 365就是"Office Ready"的環境,只需要花些許的成本,就可以有隨時可用的辦公室環境!!

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年4月18日 星期一

太陽下山,銀光瀉地

在 sun.com即將走入歷史,Silverlight 5 Beta正式發佈的時刻,利用這一篇網誌對照一下.NET與Java的技術架構。首先,在.NET的技術架構中,.NET Framework 4 Client Profile提供了一般桌上型應用程式所需要的執行環境與函式庫,與Java SE作用相當;而.NET Framework 4則是提供了包含ASP.NET、WF、WCF等等企業級應用程式所需要的執行環境與函式庫,因此與Java EE的定位是相同的:

image

而Silverlight 4技術除了可以用來開發嵌入在網頁中執行的應用程式之外,於瀏覽器外執行時也可以安裝在用戶端,當成一般的桌上型應用程式執行;更可以開發手機的應用程式:

image

到了SIlverlight 5之後,Silverlight可以跨Linux、Windows以及MAC的執行環境,會繼續加強於瀏覽器外執行時,在用戶端可以執行的功能,讓你的應用程式可以真正 "開發一次,到處執行" !!

image

2011年3月29日 星期二

Web應用程式,真的有比較節省資源(Thin Client)??

以往,大家都覺得開發Web應用程式有下面的好處:

  • 用戶端只需要透過瀏覽器執行 HTML+JavaScript,不會消耗太多資源。
  • 動態網頁程式維護在Server端,因此更新容易。
  • 可以跨平台操作

我們來驗證一下是不是真的。首先,下面是三種主流瀏覽器只開啟FB時所占用的系統資源(對照組,VS 2010同時間開啟一個專案佔105240K):

Chrome 10:

image

IE 9:

image

Firefox 4:

image

這只是剛開啟而已,利用Firefox 4開啟 FB 之後,啥事都沒做閒置 5分鐘之後,記憶體自動增加 17000K:

image

網頁開啟越久,所占用的記憶體空間就會越來越大;如果網頁開的多的話,最大占用到幾百MB到幾GB都有可能,所以不要以為Web應用程式在前端執行時會節省多少資源 -- 瀏覽器本身已經就是一個大怪獸了( HTML 5還沒真的來喔…),若再加上疊床架屋套用好幾代Framework無法最佳化的JavaScript,很容易就變成一場災難…

若是與之前協助客戶導入Silverlight時所建立的資料庫整合系統範例相比較,當程式啟動之後所占用的資源如下:

image

這隻程式是以 "於瀏覽器外執行" 的方式,在用戶端執行的程式啟動之後,透過 sllauncher.exe執行檔裝載 Silverlight應用程式執行,不但所占用的資源比瀏覽器少,而且透過.NET Framework執行環境的GC,會自動回收程式所沒用到的記憶體資源,因此也不會像瀏覽器一直消耗用戶端的記憶體空間。

更重要的是,你所開發的 Silverlight應用程式於瀏覽器外執行時,還可以自動更新。換句話說,用戶端安裝完你的 Silverlight應用程式之後,將來若是有新的版本,你可以不需要為每個用戶端重新安裝,用戶端程式在啟動時可以自動下載更新成最新版本。

至於跨平台... 對於企業所使用的系統而言,Silverlight執行環境目前涵蓋Windows、MAC以及Linux(Moonlight支援到2.0)三大作業系統,已經可以滿足大部分企業使用者環境的需要。因此若是需要開發高互動性、與資料庫結合的用戶端應用程式,Web應用程式不見得會比Silverlight應用程式來的好 -- 從執行環境上看來是的,更別說開發與除錯程式所需要花的時間…

2011年3月28日 星期一

在Windows作業系統當中移除CNNIC憑證

[感謝恆逸資訊 Patty老師補充 "對這個憑證停用所有目的" 的設定]

在 "不要錢的無線網路 -- 最貴" 這一篇網誌當中,我簡單的介紹了一下SSL與憑證之間的關係,相信大家都已經知道開啟網站的時候,"憑證" 是不可以隨便亂信任的。但是如果瀏覽器本身就已經信任了可能不安全的根憑證核發單位的話,又應該要怎樣處理呢?

今天在FB中與朋友分享了一篇文章 "在 Linux 上移除 CNNIC 憑證",其中提到了有關CNNIC(中國互聯網絡信息中心)從某些過去紀錄上來考量,是屬於較有疑慮的根憑證核發單位,因此建議移除;加上根據某可靠的數據來源也顯示,台灣大部分的網路攻擊也是來於中國,因此Firefox 3.6與4.0將CNNIC加入瀏覽器預設的根憑證信任中心的做法,某種程度來說是相對不安全的,建議可以移除。

在Firefox瀏覽器中要移除CNNIC的憑證,可以在開啟 "選項" 視窗之後,選取 "進階" –> "檢視憑證清單":

2011-3-28 下午 12-01-19

接下來從 "憑證機構" 當中,展開CNNIC下方的 "CNNIC ROOT" 憑證,按下 "刪除或取消憑證":

2011-3-28 下午 12-02-01

此時會出現如下圖的警告視窗,按下 "確定" 按鈕即可:

2011-3-28 下午 12-02-10

IE 9 預設並沒有將CNNIC加入信任的根憑證核發單位,但是比較討厭的是,當你瀏覽使用由CNNIC所核發的伺服器憑證的網站,如CNNIC 的網址衛士 (使用 Entrust.net) 或 CNNIC 的 ENUM 試驗平台 (使用 CNNIC Root Cert)時,CNNIC ROOT的憑證會自動地被加入IE 9 的任的根憑證核發單位中!! 此時可以參考下面的方法處理:

首先,在Windows的命令列視窗中,輸入 "MMC" 指令開啟主控台視窗:

image

接著,選取 "檔案" –> "新增/移除嵌入式管理單元":

image

選取 "憑證" 之後按下 "新增":

image

接著選取 "我的使用者帳戶",然後按下 "完成" 按鈕,再按下 "確定":

image

若是你有開啟過前面所提到的使用CNNIC所核發的憑證的網站,在 "受信任的根憑證授權單位" 的 "憑證" 當中,就會出現 "CNNIC ROOT" 的憑證:

image

此時將 "CNNIC ROOT" 憑證移到 "沒有信任的憑證" 當中,會出現下面的對話方塊:

image

按下 "" 之後,在 "沒有信任的憑證" 當中,選取CNNIC ROOT憑證按下滑鼠右鍵,然後選取 "內容":

image

在憑證目的當中,選取 "對這個憑證停用所有目的",然後按下 "確定" 按鈕:

image

將來瀏覽CNNIC 的網址衛士 (使用 Entrust.net) 或 CNNIC 的 ENUM 試驗平台 (使用 CNNIC Root Cert)時,就不會自動信任以及安裝CNNIC的憑證了!!

image

最新回應

Loading...

即時與版主對話


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