2009年11月30日星期一

SL3當中的Out Of Browser功能

前陣子有讀者問到SL3的Out Of Browser功能,我才發現我在Blog上似乎跳過了,因為這個功能雖然是SL3的重要新功能,但是因為相對而言是相當簡單的,所以可能被我略過了。

Out of Browser是SL3當中的重要功能之一,它讓SL應用程式在瀏覽器外執行。不過實際上使用此功能卻相當簡單,只需要在Silverlight專案上按下滑鼠右鍵,選擇Properties,在顯示出的屬性視窗上就可以設定了:

相關的細節可以點選[Out-of-Browser Settings]按鈕進行設定。

絕大部分的參數細項,均可透過設定指定完成。設定好了之後,這個SL應用程式就支援Out of Browser。這時候,使用者可以隨自己的需要,將該SL應用程式安裝到用戶端,安裝時只需要在網頁上按下滑鼠右鍵,就會出現底下這樣的選單:

點選『安裝到此電腦』,使用者即可直接將應用程式安裝到用戶端,甚至會為您建立桌面捷徑或是開始功能表捷徑(依照使用者自行選擇而定)。

除了以設定的方式為SL應用程是添加Out of Browser功能之外,我們也可以透過底下這樣的程式碼,將SL應用程式安裝到用戶端:

'用戶點選安裝鈕
Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.Windows.RoutedEventArgs)
'安裝在用戶端
If Application.Current.InstallState = InstallState.NotInstalled Then
'安裝
Application.Current.Install()
End If
End Sub

從上面的程式碼您可以發現,我們可以透過『Application.Current.Install()』將SL應用程式安裝在用戶端,也可以透過『Application.Current.InstallState』來得知目前該應用程式的安裝狀況。

除了取得應用程式是否已經安裝到用戶端等資訊之外,幾個與Out of Browser有關的資訊取得方式我們分別列舉如下。

首先,我們可以透過底下的程式碼,來判斷目前用戶端網路是否可以使用:

System.Net.NetworkInformation.NetworkInterface.GetIsNetworkAvailable()

這個功能的目的,是在協助SL開發人員,可以更輕易的建構出離線運算的應用程式,我們不僅可以透過上面這個指令得知目前的網路連線狀況,還可透過底下的方式,讓網路連線狀況改變時,可以觸發我們所安排的程序:

若我們需要得知目前應用程式是否為Out of Browser執行,則可透過底下的指令:
Application.Current.IsRunningOutOfBrowser()

前面介紹的這幾個函式,可以幫助我們得知目前應用程式執行的狀況、判斷網路的連線,讓我們得以決定目前應用程是要以何種方式執行。

透過這些機制,我們也以SL撰寫離線應用,例如當應用程式是連線狀態時,可直接透過.NET RIA Services存取遠端的資料庫,而當應用程式是離線狀態時,則暫時將資料透過IsolatedStorage機制存放在用戶端(瀏覽器端),或是透過SaveFileDialog將資料先存起來,待偵測到連線後再將資料回寫到遠端的資料庫中。

2009年11月27日星期五

在windows 7中安裝Loopback Adapter

先前曾經介紹過透過Loopback Adapter讓VPC和host透過網路相連的方式[參考這裡],透過Loopback網卡,可以很輕易的讓你的主機與VPC以區域網路的方式相連,這對我來說相當重要,因為我常常把VPC當作Server(不管是IIS, SQL Server, 或是其他Server),而把自己的NB當作工作環境(Client)。

先前都相安無事, 不過換成W7之後,突然找不到安裝Loopback Adapter的地方(-_-'''), Google了一下,把心得和大家分享。

原始來源網址:
http://www.windowsreference.com/windows-7/how-to-install-a-loopback-adapter-in-windows-7/

首先,請利用管理員身分執行cmd.exe:


接著在命令列模式執行hdwwiz.exe,會出現底下畫面:


請按下一步,接著以手動方式安裝硬體:


接著選擇網路介面卡:


確定之後下一步:


這樣就OK囉。

2009年11月25日星期三

office 2010 the movie : 很有趣的影片

office 2010 the movie : 很有趣的影片,還高畫質咧...
不過外國人的幽默有時候還真不好懂...

2009年11月24日星期二

幾個我喜歡的爵士(Jazz)樂台

除了上回我介紹過的音樂電台之外,我最近又發現了幾個還不錯的網路電台,網路電台有兩種類型,一個是純網路電台,沒有在真實世界FM/AM發聲,只有在internet上傳遞,另一種是傳統的AM/FM,具有真實的廣播網路,然後透過網際網路發聲。

不管是哪一種,你會發現現在媒體是全世界傳播,無國界已經是一個趨勢,這十年毫無疑問的網際網路改變了我們的生活和世界。

最近發現的電台網址是:http://www.live365.com/cgi-bin/directory.cgi?genre=jazz
嚴格說起來它是一個電台的集合,我覺得有趣的是,蒐集一些電台變成清單,也可以變成一種生意,看來網際網路上可玩的business Model真的很多。

不過不管如何,對我來說,免費的東西總是好東西,況且台灣能聽到好爵士樂的地方真的不多。所以這幾個電台現在變成我的最愛,而且台北3.5G上網不是問題,電台還能隨身攜帶,挺好的。

[試試看]

你猜,我最常在什麼時候聽這個電台? 我肯定你猜不到,是洗碗的時候,音樂讓洗碗都變成一種享受...

2009年11月22日星期日

Silverlight 4 中的列印功能

過去的Silverlight 1,2,3,經歷了22個月,改版速度快的讓人吒舌了,但是我相信沒有比PDC的時候SL4 beta突然推出更讓人訝異的事情了,真的,我們不是前陣子才在SL3 Launch嗎? SL4 beta已經出了? 真是驗證了我以前烏鴉嘴講的揣測,看來Silverlight的改版硬是要直接追上.NET Framework的進度,一起邁向 4.0。

不過我們更關心的,是SL4增加了哪些功能? 第一個想跟你分享的,是Silverlight的列印機制,SL4提供了一個簡單到不行的概念,但其實還真的蠻實用的東西。

請參考底下這個測試頁面:[列印功能測試]
但請注意,測試前需先安裝SL4 Developer runtimes: Windows 然後才能執行

你會發現這個小程式很輕易的SL把畫面列印出來了,這個功能怎麼完成?
看看程式碼,簡單到不行:


Imports System.Windows.Printing

Partial Public Class MainPage
Inherits UserControl

Public Sub New()
InitializeComponent()
End Sub

'列印物件
Private WithEvents pd As PrintDocument

'PrintDocument的PrintPage事件負責處理要列印的東西
Private Sub pd_PrintPage(ByVal sender As Object, _
ByVal e As PrintPageEventArgs) Handles pd.PrintPage
e.PageVisual = Me '將表單本身(me)列印出
e.HasMorePages = False '後續沒有其他頁面要列印
End Sub

'Button1被按下
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles Button1.Click
pd = New PrintDocument()
pd.DocumentName = "文件名稱" '顯示文件名稱
'列印
pd.Print()
End Sub
End Class

這個列印程式的概念幾乎和WinForm差不多,只是當然相較之下也陽春一些,但是對大多數Web應用程式來說已經夠用了,甚至很多原本ASP.NET沒法做到的列印控制,我們現在開始可以用SL建立解決方案,如果我真的要做出一些比較優質的列印效果,需要做的也只不過是利用SL在場景上繪製張圖,然後丟給PageVisual,你會發現PageVisual可以接受任何UIelement物件(包含Image),然後就那麼自然的印出來了,簡單到不行。但卻方便好用...

看來不多久就會出現SL的報表或列印解決方案套裝軟體了。

2009年11月19日星期四

Silverlight 4 beta 登場 : 此時無聲勝有聲, 一切盡在不言中...

http://www.silverlight.net/getstarted/silverlight-4-beta [懶得看英文?]
http://www.techweb.com.cn/news/2009-11-19/474275.shtml

你認為該有的,過去卻沒有的,現在都有了, 列印, 滑鼠右鍵, WebCam, 拖曳檔案, 驗證與安全性, RichtextBox, 剪貼簿, 輸入法支援...

每回PDC總要要丟出一些令人訝異的東西...Anyway, 不多說了, 此時無聲勝有聲, 一切盡在不言中...

以下節錄自Tim's Blog
Visual Studio 2010 Beta 2 or Visual Web Developer Express 2010 Beta 2 (pick one)
Silverlight Tools for Visual Studio 2010
Expression Blend for .NET 4 Preview – for authoring Silverlight 4 and WPF 4 applications
WCF RIA Services (formerly .NET RIA Services) (NOTE: This is actually included in the SL Tools for Silverlight 4)
Silverlight 4 SDK CHM (offline documentation) – optionally online here as well
• Updated Silverlight Toolkit for Silverlight 4
• Developer runtimes: Windows and Mac platforms
Silverlight 4 SDK only – not needed if you install the tools above
Silverlight Media Framework – a new, Open Source media player framework for you to use.

Windows Azure 雲端應用程式開發

微軟煞有介事的弄了一個『Windows Azure 雲端應用程式開發』網站,提供SDK和相關資源的下載。雲端應用程式,簡單的說,就是把我們寫的應用程式放在遠端伺服器上(雲端),透過internet串聯,開發人員不需要去管(不需要在意)雲端的實體狀況,雲端設備供應商負責營運、維護、擴充、並確保效能上的最優,而開發人員只需要focus on開發的部分。(甚至有些雲端服務供應上會負責軟體的使用付費或收款)

如此一來,開發人員就可以專心開發,關於程式儲存位置、資料庫實體位置、使用者資訊(組織或帳號)這些都不需要操心,且開發出的應用程式可以在任何有網際網路連線的地方即可執行(當然也可以考慮開發出離線應用)。

而微軟和Google都提供了所謂雲端應用程式開發的SDK和相關資源,也就是說,你只要透過這些開發技術並且符合整個設計框架,就可以開發出所謂的雲端應用程式,放在網際網路上讓眾人執行。

當然,由於程式位於雲端,所以我們不(需要)知道具體的位置,微軟的雲端服務承諾我們24小時不打烊的服務以及最穩定和高效能的平台,只要你的程式放上去,隨即可以在網際網路上執行,但是由於在雲端,因此整個開發並不像我們把程式寫在實體機器或是部屬到IIS這樣的概念,所以沒有實體的SQL Server,沒有實體的資料庫,取而代之的是SQL Data Services,這是一套微軟提供的資料庫服務,我們可以申請帳號,然後免費(目前)存取,你的應用程式資料存放,就透過這組服務來進行,這表示你的資料也在雲端,你也不需要知道他的具體存放位置,微軟(運端服務供應商)負責保障資料的安全性。

同樣的,與組織、人員登入有關的機制,微軟提供了Live Services,負責管理使用者資料及應用程式資源,所謂的使用者資料其實就是過去的Windows Live技術,除此之外,還有一套Microsoft .NET Services,類似過去的.NET Framework,提供開發人員所需要的類別庫(現在是以服務的形式出現)。

有了這些,開發雲端應用就變得相對簡單了。還有不足之處?別擔心,除了微軟之外,還有太多的廠商正準備涉足這一塊,提供各式各樣的雲端服務,讓開發人員使用(當然,以後這些服務都要錢),慢慢的軟體變成租賃性質,甚至我們寫程式時用到的組件、服務,都變成租賃性質,回頭想想,這一切都是建立在全世界的連線基礎internet上,幾年後,軟體開發會不會變成另一個更有趣的世界?(屆時一定很多電影形容當internet斷線之後,造成世界末日的場景)

不論如何,在眾多大廠對雲端技術的推廣與支持下(商周報導,Google、微軟、亞馬遜、IBM、戴爾、昇陽、惠普等各科技大廠,都大舉跨入雲端運算領域。儘管雲端戰場已經打得火熱,還是有人認為,雲端運算不過是IT大廠想出來的另一個行銷花招。對此,廣達電腦董事長林百里的回答是:「No!這不是slogan(口號)也不是謊言,這是一個must(必然),是未來的氧氣。」),呵呵,好一個未來的氧氣,不管如何,大公司砸大錢投資是事實,如果你對這部分有興趣,現在微軟已經開放申請,開發人員可以到底下這個網址:
http://msdn.microsoft.com/zh-tw/azure/default.aspx
相關的SDK、開發的方式、教學資訊、影片...都已經在網站上了。