2009年7月28日星期二

讀者 slimsoho 的問題與回答

問題:

我是 ASP.NET & Silverlight (for VB) 的開發人員, 昨日迫不急待買了一本老師的書, 配合老師在演講時強調的觀念, 仔細聽完 LearningVideo 1, 重覆實作一遍, 發現只要掌握好 Series, ChartAreas, Legends, Titles, Annotations 的架構觀念, Chart Control 還滿靈活及有彈性,將陸續再專研 Chapter 02~09.
由老師的 "Silverlight 2.0 精華技術手冊-使用VB" 一書各章節務實的案例, 我已可開發出自己的需求. 但我對設計 Silverlight Chart 需求很極迫 (尤其在 Stock Chart 方面), 上次聽了老師的一場演講, 老師比較偏好 ASP.NET Chart, 感覺 Silverlight Chart 比 ASP.NET Chart 完整性有一段落差. 現在Silverlight 3.0 及 Expression Blend 3.0 已上市, 請問老師 號稱 RIA 的 Silverlight Chart Control 真的比 ASP.NET Chart Control 功能差嗎? 兩者對 Chart Control 圖表架構觀念及property name 是否一樣? Silverlight 3. 加了許多功能, 又是一番面貌, 期待老師再出版一本 Silverlight 3., 當然希望有完整 Silverligt Chart COntrol 功能? 順便請問老師 third party 是否有比較好的 Silverlight Chart 產品? 問了許多問題,麻煩老師了.

回答:

就目前這個階段看來,雖然 Silverlight 3.0 大幅提升了不少功能,然而在 Chart 控制項方面,確實與 ASP.NET 3.5 Chart 控制項仍然有不少的落差。ASP.NET 3.5 Chart控制項提供完整的圖表類型,物件架構與相關功能也非常完善,不過若與 Silverlight 相比較,ASP.NET 畢竟是伺服器端為主的開發模式,其 Chart 控制項最終所產生的圖表其實是一個圖片,因此在用戶端的互動操作方面,只能透過影像地圖與 JavaScript 來完成,這是其最大缺憾。

回到 Silverilght 的 Chart 控制項,雖然圖表類型不多,但是其最大優勢,就是執行於用戶端電腦,圖表中的每一個項目都是一個獨立的物件,因此可實作出高度的互動性。我相信,Silverlight 的 Chart 控制項目前是處於早期階段,未來必定會持續強化。如果您覺得既有的 Chart 控制項不夠,可考慮先自行開發,或是尋找一些協力廠商的產品。至於有哪些協力廠商的產品,請參考以下的連結:

http://demo.softwarefx.com/Silverlight/Chart/Galleries/
http://www.componentone.com/SuperProducts/ChartSilverlight/
http://www.infragistics.com/dotnet/netadvantage/silverlight/xam-web-chart.aspx#Overview

章立民研究室

2009年7月24日星期五

讀者 “珍珠烏龍綠” 的問題與回答

問題:
章老師,您好~小弟兩年前初學asp.net,幾乎都是靠您的書籍來學習,引領期盼許久的這本書也在前天入手,雖然目前只是大概翻閱,但知道裡頭有之前自己摸索的MSCHART和專案開發架構便歡欣不已。

只是覺得頗遺憾的是,實作方式都沒使用到ASP.NET 2.0以後的新功能開發,例如會員資料庫、AJAX控制項、Theme主題等等;亦或是可以說明捨棄的理由。

因為先前都是拜讀章老師的書籍,對於這些功能都想能夠以一個專案概念來做實際的應用,因為小弟身處的環境目前仍算是一人開發,很期待有這樣的教材可以學習。

不曉得往後章老師會不會針對新功能的改寫再出一版呢?有的話,小弟先預購了~

回答:

  • 使用自訂的會員資料庫,最主要的原因是可以自已掌控全部的資源,包含限制使用者的使用權限或使用時間等等。可能礙於書本的範例規模,無法把這些地方張顯出來。另外,使用 .net 內建的會員資料,還要跟 Windows 系統結合,有時候客戶也未必能夠同意我們動到他們內部控管的系統。
  • AJAX 的控制項(Asynchronous Javascript And XML),其實也就是微軟把 javascript 的功能寫好,包成控制項給開發者使用。好處是一些功能都幫你寫好,壞處是只能受限於 AJAX 所提供功能。由於一些範例 AJAX 並無法提供這些效果,所以就乾脆自已用 Javascript 來開發,順便也可以讓讀者了解一下一些前端網頁效果的程式寫法。
  • 當初在寫範例架構時,在 MasterPage 和傳統的 HTML frame 兩者之間也做了一番取捨,最後選擇用了 HTML frame。主要原因是因為 MasterPage 雖然在開發時期是不用管那塊頁面,但執行時每一頁的更新都仍然會到伺服器去重新取得資料(先不考慮 IE Cache 的影響);而且像左方 TreeView 這些選項也都會重新更新,不會自動保留之前的狀況;原本還想做網路廣播(管理者發訊息通知所有網頁使用者)之類的功能,用 MasterPage 的網頁架構可能難以做到。所以在效能和方便開發的考量下,做了這個決定。

章立民研究室

讀者 Saka 的問題與回答

問題:
章老師您好,最近讀了您新出的「圖表與實務案例模組大全」,在第10章中的Manager資料表,其中有一點想請教您,那就是資料表中的 mg_name 為什麼不是使用nvarchar而改用nchar呢?是不是有什麼好處?

麻煩您了,謝謝

回答:

這是一個很好的問題,也是一般人常會問的欄位使用取捨的問題。nvarchar 和 nchar 最大的差異就是前者是在儲存時,是會依據字串的長度不同,而以不同的長度來儲存。而後者nchar是固定長度,也就是不管你是用 1 個字元,還是 10 個字元,只要欄位是 12,就是使用 12 個字元的空間來儲存。

在空間的利用上,nvarchar 是佔了優勢,而且使用起來也很方便。但是有一個隱藏而容易忽視的問題,一般在開發時都不會發現,那就是「效率」。尤其這個欄位是拿來做索引值,而且資料量很大的時候,如果用 nchar 處理欄位搜尋,會比 nvarchar 快很多。這個欄位我們在做分析時,認為是重要而且會經常被拿來搜尋的一個欄位,所以在設計時就使用 nchar 來處理。

通常在使用 nvarchar 時,大概都是在字串長度可能會超過 50 時才會使用,不然基於效能的考量,都是會用 nchar 來處理。(資料如果只有幾百筆時,其實沒有明顯的差距)

PS:拿來做索引的字串欄位,在SQL中有一個長度上限,不是隨意長度的欄位都能做索引值。

章立民研究室

2009年7月17日星期五

如何取得最新版的 Silverlight.js 檔

Silverlight.js 檔是所謂的 JavaScript Helper 函式,用來將 Silverlight 外掛程式內嵌至網頁,並允許我們自訂 Silverlight 的安裝設定,例如:沒有安裝 Silverlight 外掛程式時,所要顯示的安裝提示圖片。如下所示分別是繁體中文與簡體中文的預設安裝圖:

繁體中文的安裝提示圖      簡體中文的安裝提示圖

雖然在安裝 Silverlight™ 3 SDK 時(這個套件包含在 Microsoft® Silverlight™ 3 Tools for Visual Studio 2008 SP1 內,也就是說,安裝了 Microsoft® Silverlight™ 3 Tools for Visual Studio 2008 SP1 也會安裝 Silverlight™ 3 SDK),預設就會在 C:\Program Files\Microsoft SDKs\Silverlight\v3.0\Tools 目錄找到 Silverlight.js,這個版本編號為 v2.0.30511.0,它適用於 Silverlight 1.0 ~ 3 的應用程式。

Silverlight.js 是依照各瀏覽器的實作細節而撰寫,然而這些實作的細節有可能在 Silverlight 各個發行版本之間有所改變,因此如欲取得其最新版,請前往 MSDN Code Gallery 網站的 Silverlight.js 專案 下載並可查閱更新紀錄

為了方便爾後建立 Silverlight 專案皆能使用下載所得的 Silverlight.js 最新版本,建議各位替換存在於 Visual Studio 2008 跟 Blend 3 中的 Silverlight 範本檔:

  • Visual Studio 2008
    • 將最新版本的 Silverlight.js 複製到 C:\Program Files\Microsoft SDKs\Silverlight\v3.0\Tools 目錄。
    • 用壓縮軟體將最新版本的 Silverlight.js 取代下列 2 個壓縮檔 BusinessApplication.Web 目錄中的 Silverlight.js 檔:
      • C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\ProjectTemplates\CSharp\Silverlight\1033\BusinessApplication.zip
      • C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\ProjectTemplates\VisualBasic\Silverlight\1033\BusinessApplication.zip
    取代 BusinessApplication.Web 目錄中的 Silverlight.js 檔
  • Blend 3
    將最新版本的 Silverlight.js 分別複製到下列 2 個目錄:
    • C:\Program Files\Microsoft Expression\Blend 3\ProjectTemplates\en\CSharp\Silverlight\Website\Site
    • C:\Program Files\Microsoft Expression\Blend 3\ProjectTemplates\en\VisualBasic\Silverlight\Website\Site
    取代 Blend 3 範本檔的 Silverlight.js

特別提醒大家,以上的操作說明是以目前已經發行的 Microsoft® Silverlight™ 3 Tools for Visual Studio 2008 SP1 英文版與 Blend 3 RC 英文版進行說明,因此當中文版推出時,其所在的目錄可能不盡相同。

2009年7月15日星期三

如何在 Visual Studio 2008 SP1 中預覽 Silverlight™ 3 的 XAML 設計結果

根據 Silverlight™ 3 Release Notes 指出,考量效能、呈現(Rendering)、與人力調配等因素,於安裝 Silverlight™ 3 Tools for Visual Studio 2008 之後,就無法在 Visual Studio 2008 整合式開發環境預覽 XAML 設計結果的功能,也就是說,Visual Studio 2008 整合式開發環境只提供編輯 XAML 之用,如要顯示設計結果就要使用 Expression® Blend 3 或是等到 Visual Studio 2010 問世。

其實預覽設計結果的功能還是存在於 Visual Studio 2008 整合式開發環境中,只是沒有經過適當的操作,是無法開啟這個隱藏功能。您可以透過下面的影片來瞭解要如何開啟預覽功能:

請特別注意,即使開啟了預覽設計結果功能,也未必可以顯示 XAML 的設計結果,比方說,Silverligth Toolkit 的圖表控制項就不會顯示在預覽視窗中。

Silverlight™ 3 SDK(軟體開發套件)已經移除 ASP.NET MediaPlayer 與 ASP.NET Silverlight 這 2 個 Silverlight 的 ASP.NET 控制項

Silverlight™ 2 SDK(安裝 Silverlight™ 2 Tools for Visual Studio 2008 SP1 時,即會隨之安裝)提供的 2 個 Silverlight ASP.NET 伺服器控制項:

在 Silverlight™ 3 SDK(安裝 Silverlight™ 3 Tools for Visual Studio 2008 SP1 時,即會隨之安裝)已經移除了上述的 Silverlight™ ASP.NET 伺服器控制項,也就是說,當您在未安裝過 Silverlight™ 2 SDK 的 Visual Studio 2008 SP1 整合式開發環境中,開啟 .aspx 網頁,展開「工具箱」之後,將看不到「Silverlgiht」這個索引標籤(如果您同時安裝 Silverlight™ 2 SDK 與 Silverlight™ 3 SDK,則會看到該索引標籤)。如欲將既有的 Silverlight™ 2 方案升級成 Silverlight™ 3,或是在 Silverlight™ 3 使用這 2 個控制項,請自行由 MSDN Code Gallery 下載 ASP.NET Server Controls for Silverlight Samples(其內含的 System.Web.Silverlight.dll 目前版本為 3.0.40210.0)。

下載完畢之後,請解開壓縮檔,將其根目錄中的 System.Web.Silverlight.dll 複製到 Silverlight™ 3 方案中的 ASP.NET 網站專案內的 Bin 目錄。接著用滑鼠右鍵按一下「方案總管」中的網站專案,然後按下「屬性頁」指令,再按下「參考」節點,以便將剛剛複製的 System.Web.Silverlight.dll 加入參考。

不要忘記要在 Web.config 檔指定標記前置詞與命名空間的對應,或是直接在 ASP.NET 網頁中,使用 @ Register 指示詞,如下所示即是在網頁中,使用 @ Register 指示詞的設定:

<%@ Register Assembly="System.Web.Silverlight"
Namespace="System.Web.UI.SilverlightControls" TagPrefix="asp" %>


如果您的方案是從 Silverlight™ 2 或是 Silverlight™ 3 Beta 升級而來,建議您將原本使用 ASP.NET Silverlight 控制項的網頁換成 <object> 標記,以便透過 HTML 語法內嵌並設定 Silverlight 外掛程式,最重要的是此種方式可以與 Silverlight 所有支援的瀏覽器相容。例如原本的網頁程式碼為:



<asp:Silverlight runat="server" Width="100%" Height="100%"
Source="~/ClientBin/LimingStudio.xap"
ScaleMode="Stretch"
MinimumVersion="2.0.0.0"
OnClientPluginLoaded="onLoad" />

改成:

<script type="text/javascript">
function handleResize(obj) {
// 在此撰寫處理 Silverlgiht 外掛程式尺寸的程式碼
}

function onLoad(obj) {
// 在此撰寫處理載入 Silverlgiht 外掛程式的程式碼
}
</script>

...

<object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%">
<param name="Source" value="/ClientBin/LimingStudio.xap" />
<param name="OnResize" value="handleResize" />
<param name="minRuntimeVersion" value="3.0.40624.0" />
<param name="OnLoad" value="onLoad" />
</object>


茲將上述的參數簡要說明如下:




  • 使用 data 屬性可以避免在某些瀏覽器上發生效能低落的問題。提醒大家,末端雙引號前的逗號是屬性值的一部分,代表第 2 個資料參數的值是空值


  • type 屬性是用 Silverlight MIME 類型來識別 Silverlight 外掛程式及其所需的版本。


  • 至於 widthheight 是為了跨瀏覽器相容性所需的屬性,用來指定相對於父項目寬度和高度的固定像素值或是百分比。如果使用相對大小,即可以透過上述程式碼中的 handleResize 函式來處理 Content.Resized 事件,以便當外掛程式的大小變更時,可以進行適當的處理。


  • param 項目中的 source 是必要的屬性設定,它會指出應用程式檔案所在的位置與名稱。我們通常會使用相對路徑來指定 .xap 應用程式套件。


  • param 項目中的 minRuntimeVersion 用來指定執行 Silverlight 應用程式所需的 Silverlight 外掛程式之最小版本為何。


最後,請不要忘記將 Silverlight™ 3 所提供的 Silverlight.js 檔(預設的所在目錄為:C:\Program Files\Microsoft SDKs\Silverlight\v3.0\Tools)複製到 ASP.NET 網站專案中,並在網頁中加以引用。

2009年7月10日星期五

Silverlight 3 網頁下載版(RTW)已經發行

隨者 Silverlight 3 網頁下載版(Release To Web,RTW)於今日發行,相關的開發工具也隨之現身,茲將相關網址整理如下:

要提醒大家的是,由於目前所發行的 Microsoft® Silverlight™ 3 Tools for Visual Studio 2008 SP1 只有英文版,因此您所使用的 Visual Studio 2008 SP1 或 Visual Web Developer 2008 Express SP1 也必須是英文版才能順利安裝。

安裝 Microsoft® Silverlight™ 3 Tools for Visual Studio 2008 SP1 的畫面

欲安裝或解除安裝的元件一覽

版權宣告

從網路下載元件

移除舊版元件

安裝 KB967143 for Visual Studio 2008 SP1 或 KB967144 for Visual Web Developer 2008 Express with SP1

安裝 Silverlight 3 SDK

安裝 Silverlight 3 Tools for Visual Studio 2008 SP1 或 Silverlight 3 Tools for Visual Web Developer 2008 Express with SP1

安裝完成


您可以按一下下圖,以便觀看更多相關的資訊:

See The Light

提醒大家,如果您先前有安裝過舊版的 Silverlight™ 3 for Developers,於安裝時,會遇到如下的錯誤畫面,請將舊版的 Silverlight™ 3 for Developers 移除,然後再安裝新版的 Silverlight™ 3 for Developers。


安裝 Silverlight™ 3 for Developers
安裝 Silverlight™ 3 for Developers

出現「無法安裝 Silverlight」的錯誤訊息
出現「無法安裝 Silverlight」的錯誤訊息

移除舊版的 Silverlight™ 3 for Developers
移除舊版的 Silverlight™ 3 for Developers

附註:

  • 日文版的 Microsoft® Silverlight™ 3 Tools for Visual Studio 2008 SP1 已經於 2009/7/15 發行。
    中文版預計已經在 2009/7/29 發行。
  • Microsoft® Expression® 3 英文版已經於 2009/7/20 發行。

2009年7月3日星期五

開賣囉

「ASP.NET 3.5 圖表與實務案例模組大全/使用 VC#一書開始全面鋪貨,諸位舊雨新知可以在各大實體或線上書局買到,乾蝦啦!

章立民研究室