公告資訊

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




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

2011年3月22日 星期二

ASP.NET升級白皮書

[2010.03.28 更新] 感謝王寧疆老師分享了透過Visual Studio 2010開發工具直接升級ASP.NET 1.x專案的經驗,因此將白皮書的內容做了一些調整。

前言

雖然目前ASP.NET已經進入到4.0版,但是相信在企業之中,仍然有些既有的ASP.NET 1.x版的網站仍然穩定的執行中。然而隨著企業需求的變化以及IT環境的調整,這些ASP.NET 1.x的網站通常也面臨到必須升級到新的版本,才能繼續提供更好的服務的時刻。在這一份白皮書中,將為各位介紹使用Visual Studio開發工具,從ASP.NET 1.x版升級到ASP.NET 4.0版所需要的步驟。

 

將ASP.NET 1.x 專案升級到ASP.NET 4.0的步驟

ASP.NET的技術架構從2.0版開始,無論是前端網站與後端功能方面,都做了大幅度的擴充與改變,因此在新版的Visual Studio 2010開發工具當中,提供了轉換的精靈,可以幫助你將現有的ASP.NET 1.x專案升級到ASP.NET 4.0的版本。

 

使用Visual Studio 2010轉換精靈升級ASP.NET 1.x專案

為了簡化從ASP.NET 1.x升級到ASP.NET 4.0所需要的步驟,微軟在ASP.NET 4.0的開發工具—Visual Studio 2010當中,提供了轉換精靈,協助你將現有的ASP.NET 1.x的專案升級成為ASP.NET 4.0的專案。各位可以透過Visual Studio 2010開發工具參考下面的步驟進行升級:

1. 備份專案

在升級現有的ASP.NET 1.x專案之前,請記得要先備份現有的ASP.NET 1.x應用程式專案。

2. 使用Visual Studio 2010開發工具開啟ASP.NET 1.x專案

當使用Visual Studio 2010開發工具開啟ASP.NET 1.x版的專案檔時,Visual Studio 2010開發工具就會啟動如圖1的轉換精靈:

pic01

1Visual Studio 2010轉換精靈

按下「下一步」按鈕之後,會出現圖2的對話方塊,詢問你需不需要建立現有的解決方案檔的備份:

pic02

2:「是否建立專案檔備份」對話方塊

若是你在步驟1已經將ASP.NET 1.x版的專案備份完成了,這裡就只需要按下「下一步」按鈕,就會出現如圖3的視窗:

pic03

3:「可以開始轉換」對話方塊

接著按下「完成」按鈕,Visual Studio 2010的轉換精靈就會開始將ASP.NET 1.x版的專案升級成為ASP.NET 4.0版的專案。接著你會看到圖4的提示對話方塊,提醒你在完成專案升級之後,還需要手動將原本的ASP.NET 1.x專案轉換成為Web應用程式專案:

pic04

圖4:完成轉換的對話方塊

按下「確定」按鈕之後,會出現圖5的「轉換完成」對話方塊,按下「關閉」按鈕專案就轉換完成了!!

pic05

5:「轉換完成」對話方塊

同時,若是在專案轉換的過程當中,有任何的錯誤或是需要注意的地方,Visual Studio 2010也會自動地顯示在轉換報告當中,如圖6所示:

pic06

6:轉換報告

3. 驗證新的ASP.NET 4.0專案

因為ASP.NET 4.0的專案與ASP.NET 1.x的專案有許多不同的地方,因此在透過Visual Studio 2010轉換精靈升級完成你的專案之後,除了要參考轉換報告解決升級時所遇到的問題之外,也必須要進行功能上的驗證,才能確定原有的專案是否成功的升級了。

4. 將ASP.NET 4.0專案轉換為Web應用程式

在Visual Studio 2010開發工具當中,為了方便維護在ASP.NET 4.0表單中的使用者自訂程式碼,特別將設計工具所建立的程式碼,獨立放置在附檔名為「.designer.cs」的程式碼後置檔案當中。當你驗證轉換完成的ASP.NET 4.0專案之後,可以在方案總管當中,按下滑鼠右鍵然後選取「轉換成Web應用程式」項目,如圖7所示:

pic07

圖7轉換成Web應用程式項目

此時會出現如圖8的對話方塊,按下「」按鈕之後就可以開始將專案轉換成為Web應用程式:

pic08

圖8:轉換成為Web應用程式對話方塊,

圖9的右邊是轉換後的ASP.NET 4.0專案,如果和左邊轉換前的專案比較,你會發現無論是ASP.NET網頁或是ASP.NET使用者控制項,都會多出一個「.designer.cs」的程式碼後置檔案,這就是Visual Studio 2010用來維護設計工具所建立的程式碼的程式碼後置檔:

pic09

圖9:轉換完成之後的ASP.NET 4.0專案目錄結構

 

ASP.NET 4.0專案與ASP.NET 1.x專案的相異處

升級完成之後,你也會發現在Visual Studio 2010開發工具中的ASP.NET 4.0專案與ASP.NET 1.x專案有下面幾個不一樣的地方:

1. 多目標Framework支援:預設Visual Studio 2010的轉換精靈會將ASP.NET 1.x專案升級成為ASP.NET 4.0專案,但若是有需要的話,你還是可以在專案的屬性頁當中,將專案設定為ASP.NET 2.0以後的任一個版本[1],如圖10所示:

pic10

圖10:設定ASP.NET專案的.NET Framework版本

2. 特殊目錄:ASP.NET 4.0當中規範了一些特別用途的目錄,像是App_Data是用來暫存專案中所使用的資料庫檔;而原本ASP.NET 1.x專案當中所建立自訂的類別定義檔,則會統一放在App_Code目錄底下,如圖11所示:

pic11

11ASP.NET 4.0專案當中的App_Code目錄

ASP.NET 4.0的特殊目錄整理如下:

目錄名稱

說明

App_Browsers

存放ASP.NET 4.0網頁在不同瀏覽器中,所需要調整的定義檔。

App_Code

存放ASP.NET 4.0專案中自訂的類別定義檔。

App_Data

存放ASP.NET 4.0專案所需要的mdf資料庫檔或是xml檔案。

App_GlobalResources

存放ASP.NET 4.0專案中的RESX或是Resources資源檔,這些資源檔定義會被編譯到組件中供專案全域使用。

App_LocalResources

存放ASP.NET 4.0專案中的RESX或是Resources資源檔,這些資源檔只會使用在特定的ASPX表單或是使用這控制項中。。

App_Themes

存放ASP.NET 4.0專案中的Skin或是Css樣式檔。

App_WebReferences

存放ASP.NET 4.0專案所參考的網路服務的WSDL文件。

Bin

存放ASP.NET 4.0專案建置時,所編譯完成的組件。

3. 程式碼後置模型的改變:ASP.NET 1.x的程式碼後置模型,是把網頁的樣式定義在ASPX的檔案中(例如Default.aspx);而使用者自訂與開發工具所建立的程式碼,則是統一放在另一個程式碼中(例如Default.aspx.cs)。而因為.NET Framework 2.0開始,就加入了對於部分類別(Partial class)的支援,因此在ASP.NET 4.0當中,可以更進一步的使用部分類別的語法,將使用者自訂的程式碼與開發工具自動建立的程式碼再分開成不同的檔案維護。如此一來,ASPX網頁後置的程式碼檔案就會更加的精簡,也將更容易維護。

此外,原本在ASP.NET 1.x網頁當中,@Page指示詞的CodeBehind屬性,在ASP.NET 2.0開始的網頁當中,也換成了CodeFile屬性,並且只需要設定到儲存使用者自訂程式碼的檔案就可以了。

4. 多組件編譯:Visual Studio 2010開發工具預設會將專案中的每個表單與使用這控制項編譯成各自獨立的組件,方便專案的更新與部署。

5. 發行選項:Visual Studio 2010針對ASP.NET 4.0的網站提供了多種部署的發行方式(如圖12)。你可以透過Visual Studio 2010所提供的「發行」功能,選擇ASP.NET 4.0專案開發完成之後,根據開發或是測試的需要,所要部署的不同位置:

pic12

12Visual Studio 2010的「發行」功能

更詳細的部署選項,可以從專案屬性頁的「封裝/發行Web」中設定:

pic13

13:設定「封裝/發行Web」功能

 

結語

在最新的ASP.NET 4.0當中,提供了許多現代大型網際網路應用程式所需要的功能,像是平行運算、MVC、AJAX… 等等;透過這些新功能的支援,ASP.NET的網站就可以發揮更多的應用。而對於ASP.NET 1.x的網站來說,必須將網站升級之後,才可以繼續使用Visual Studio 2010最新的功能。雖然透過Visual Studio 2010升級是件相當容易,也相當快速的事情,然而因為ASP.NET 4.0 在功能上做了很多改變,因此在使用轉換精靈升級現有的ASP.NET 1.x專案之後,必須要記得配合這些改變做必要的檢查與測試,將來才可以開發功能更強大的ASP.NET應用程式!!


[1] 若是你已經在專案中使用了某些.NET Framework 4.0所提供的新功能的話,這一個動作可能會導致這些新功能無法在舊版的.NET Framework中被正常的執行,必須要特別注意 !

 

 

將ASP.NET 2.0與ASP.NET 3.x應用程式升級為ASP.NET4.0

ASP.NET開發技術目前已被廣泛的使用在網際網路與企業當中,隨著網際網路應用需求的日新月異,為了滿足開發人員在應用方面的需求,ASP.NET所支援的功能也隨之增加,像是AJAX、Dynamic Data與MVC等等,都是ASP.NET 4.0當中所內建的新功能。換言之,開發人員不需要另外再外掛任何的函式庫,就可以直接的應用在ASP.NET的專案當中。

隨著ASP.NET版本的更新,許多開發人員也會想要把這些新的功能,應用在現有的專案當中,因此就需要將現有的ASP.NET 2.0或是ASP.NET 3.x應用程式升級到最新的ASP.NET 4.0版本。ASP.NET應用程式的升級可以分成兩個部分來談:

    • 升級ASP.NET應用程式專案
    • 升級ASP.NET執行環境
 
升級為ASP.NET 4.0應用程式專案

當使用Visual Studio 2010開發工具開啟ASP.NET 2.0、ASP.NET 3.0或是ASP.NET 3.5所開發的網際網路應用程式專案時,就可以透過Visual Studio 2010開發工具直接將網際網路應用程式專案直接升級成ASP.NET 4.0版 – 這也是最建議的一種方式[1]。使用Visual Studio 2010開發工具升級ASP.NET專案時,Visual Studio 2010開發工具會自動協助你修改Web.Config檔案,並且將專案關連到.NET Framework 4.0執行環境。

使用Visual Studio 2010開發工具升級ASP.NET應用程式的步驟相當的簡單。首先使用Visual Studio 2010開發工具開啟任何一個現有的ASP.NET網站或是應用程式專案,此時會出現如圖8「Visual Studio轉換精靈」的歡迎視窗:

pic01

圖8:「Visual Studio轉換精靈」

 

接著按下「下一步」按鈕,會出現Visual Studio轉換精靈的備份對話方塊,如圖9所示:

pic02

圖9:「選擇是否要建立備份」對話方塊

 

如果需要保留現有版本的專案或是解決方案複本,可以選擇「是,轉換前建立備份」的項目。轉換完成之後,Visual Studio 2010開發工具會自動將現有的專案或是解決解決方案檔升級成Visual Studio 2010開發工具的格式。接著按下「下一步」按鈕,會出現「可以開始轉換」的對話方塊,如圖10所示:

pic03

圖10:「可以開始轉換」對話方塊

 

按下「完成」按鈕之後,Visual Studio 2010開發工具就會開始轉換專案或是解決方案。轉換完成之後會出現「轉換完成」的對話方塊(如圖11):

pic04

圖11:「轉換完成」對話方塊

 

若是專案轉換不成功,你可以在關閉「轉換完成」對話方塊前,選取「關閉精靈時顯示轉換紀錄檔」,就可以檢視轉換失敗的原因。以ASP.NET網站來說,常見轉換失敗原因是因為目標網站的位置與解決方案檔中紀錄的位置不同,此時只需要在轉換完畢之後,重新將ASP.NET網站加入到解決方案檔中即可重新啟動轉換精靈,此時會看到如圖12的對話方塊,提醒你這一個ASP.NET網站即將升級成ASP.NET 4.0的網站:

pic05

圖12:升級ASP.NET網站的對話方塊

 

若是要讓Visual Studio 2010開發工具自動幫你升級網站,就按下「」按鈕。因為Visual Studio 2010開發工具支援多目標版本的ASP.NET網站編輯,因此若你只是要使用Visual Studio 2010開發工具繼續在原來的ASP.NET版本中維護網站,或是稍後才要手動升級ASP.NET網站的話,就按下「」按鈕。

另外需要注意的就是,若是在你要升級的ASP.NET網站中有其他的ASP.NET應用程式需要繼續使用舊版的執行環境的話,可能也不適合使用自動升級。這是因為ASP.NET的組態設定檔會自動繼承到網站的子目錄中,某些ASP.NET 4.0新版本的設定沒辦法在舊的版本中使用,升級後可能會導致這些還沒升級的網站執行發生錯誤。

 

升級ASP.NET執行環境

使用Visual Studio 2010開發工具可以幫助你輕鬆快速地將ASP.NET網站或是應用程式升級成ASP.NET 4.0版本,接著也必須要升級在IIS的ASP.NET執行環境,以確保ASP.NET 4.0應用程式部署之後可以正確地執行。現有的IIS環境只需要下載並安裝.NET Framework 4.0之後,在應用程式集區中就會自動建立ASP.NET 4.0的應用程式集區(圖13)。

pic06

圖13:ASP.NET應用程式集區

 

而既有的ASP.NET應用程式集區,也可以透過手動的方式升級。只需要在IIS管理員當中開啟ASP.NET應用程式集區的進階設定之後,就可以透過修改.NET Framework版本的方式,將既有的ASP.NET應用程式集區升級成為ASP.NET 4.0的執行環境:

pic07

圖14:設定ASP.NET 4.0應用程式集區

 
結語

ASP.NET 4.0提供了許多開發新一代網際網路應用程式所需要的新功能,而透過Visual Studio 2010開發工具,不但可以將現有的ASP.NET應用程式快速升級到ASP.NET 4.0版開始使用這些新功能,如果有必要的話,也可以在同一個解決方案當中維護不同版本的ASP.NET應用程式,對於開發人員來說相當的方便,對企業來說,也可以減少升級ASP.NET程式所需要的維護成本。


[1] 因為Visual Studio 2010支援多目標版本(Multu-Target),因此若是不想升級ASP.NET應用程式專案,還是可以使用Visual Studio 2010開發工具編輯與除錯現有的ASP.NET 2.0、ASP.NET 3.0與ASP.NET 3.5網際網路應用程式專案。

不要錢的無線網路 -- 最貴

行動上網,目前已經成為一種趨勢。但是因為目前3G行動上網的費率仍然不便宜(至少對我來說是的),因此很多人喜歡尋找周遭沒有設定安全限制 -- 通常就是不用錢的WiFi 存取點上網。然而,你的所有個人資訊,也就跟著暴露在網路世界當中。

先請教各位,當你透過行動裝置開啟瀏覽器連上Facebook時,若是出現下面的情況,應該怎樣處理?

image

我相信 85%以上的人,會馬上按下 "Continue to this website",然後繼續登入Facebook。網址沒有錯,瀏覽器也有啟用Https通信協定進行加密傳輸,有問題嗎?

問題可大了! 在正常狀況之下,當瀏覽器與網站伺服器之間需要透過Https通信協定進行加密傳輸的時候,網站伺服器會提供網站的憑證資訊,讓瀏覽器可以知道這伺服器不是一個偽造的網路位置。以Facebook來說,當瀏覽器開啟 Https://www.facebook.com 時,Facebook伺服器會提供瀏覽器下面的憑證資訊:

image

預設狀況之下,你所使用的瀏覽器都會預先設定信任比較多人使用的憑證簽發者,例如 Facebook的憑證簽發者 DigiCert就是預先信任的憑證授權單位 :

image

因為瀏覽器信任DigiCert,所以也就會信任DigiCert所核發給 www.facebook.com 網址的憑證;所以在瀏覽器與Facebook的網站伺服器之間,就可以透過DigiCert所核發給Facebook網站的憑證,建立安全的加密傳輸通道:

image

所以在正常狀況之下,當你透過 Https 通信協定要開啟 Facebook 網站時,不應該出現任何的錯誤訊息才是。除非 … 你的瀏覽器所接收到的,並不是 DigiCert 所核發的憑證 !?

沒錯!! 當你使用 WiFi 存取點上網時,你的行動裝置瀏覽器就會自動套用存取點的設定連接網路;若是有心人士想要偷取你在 Facebook 的相關資訊(登入帳號、密碼…),只需要設定WiFi 存取點的代理憑證,原本要傳送到Facebook的加密資料,就會在 WiFi 存取點被解開,簡單的示意圖如下:

image

在這狀況之下,雖然瀏覽器看起來還是使用 Https 通信協定開啟Facebook,但是因為沒有安全警覺的使用者在一開始的畫面中,已經按下 "Continue to this website",信任了由 WiFi 存取點所提供的代理憑證(通常是WiFi 存取點自己發的),因此瀏覽器要用來與Facebook網站之間加密傳輸所使用的Session Key,就會被WiFi 存取點所取得;如此一來,WiFI 存取點就可以解開並錄製瀏覽器與Fackbook之間所加密傳輸的資料內容

因此,千萬不要以為,當你使用 Https 通信協定瀏覽網路,資料就一定是安全的! 越來越多人喜歡透過行動裝置瀏覽網路,但是也越來越多人的帳號被盜用的原因之一,或許正是有心人正使用這種方式在竊取你的上網資訊。下次在外面上網,特別是使用免費的WiFi存取點時,請記得務必要多小心!!!

最新回應

Loading...

即時與版主對話


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