Feeds:
文章
留言

Archive for 八月 31st, 2009

拖了這麼多天才寫 T_T

這次講員依然是董大偉老師,主題是"Silverlight 3 新功能實務應用範例講座"內容相當的精彩,本次重點著重在 Silverlight 3 新功能上面,在這當中我最感興趣的兩個功能是 OOB(Out Of Browser) 和 .NET RIA Services,OOB 我之前已經有作過一些資料收集,不過仍有不少疑問,透過這次研討會有機會親自問問老師關於 OOB 的技術細節,先說結論吧,OOB 沒有我想像中的這麼好,我原以為他脫離 Browser 之後可以像 AIR 一樣,其實不然,他只是網頁中間那塊 XAP 移到內嵌 Browser 的獨立 APP 執行,如果你的程式除了 XAP 之外,還有透過 JS/HTML 進行一些互動,很抱歉執行 OOB 之後你的程式就殘廢了。所以,目前 OOB 僅適用於獨立的 XAP 運作模式。如:遊戲、小時鐘。

再來就是 OOB 有跨網域問題,原來在網頁上的不會有網域問題,可是獨立到 App 後,網域和原來 Server 是不同的,因此要能夠順利運作,必須在 Server 定義 cross-domain.xml。其他限制還有

  • 無法設為 AUTORUN
  • 無法設為 TrayIcon
  • 無法定義 OOB 的視窗外觀,如:視窗不能縮放
  • 無法透過簽章取得較高的權限

再來說說 .NET RIA Services,從 DEMO 看來總是超方便的,透過開發工具將資料表拉出來自動產生資料來源程式碼,然後 Silverlight 透過 DataGrid, DataPager 接收資料呈現,簡簡單單不用寫程式就可以完成資料表的呈現,而且還具有基本的 CRUD、排序、過濾等功能,真是太強了。不過….. 也不是這麼美好,目前資料庫我詢問只支援 MS SQL Server,另有一個專案支援 Oracle,但是我們公司目前用的 MySQL 是不支援的。所以剛剛說得拖拉資料表的美景就破滅了。

然後是 Table Join,只要是 ORM 都匯遇到 Join 問題,.NET RIA Services 也不例外,可以作但需要花點成本。再來是比較麻煩的問題,也是我目前覺得該技術還不適合用的原因是"驗證",如何進行身份驗證,雖然可以快速的將資料庫來源呈現在用戶端,可是我並不希望資料讓每個使用者看到,我希望通過授權的使用者才能取得,這時就會相當麻煩。

簡言之 .NET RIA Services 在繼續觀察後續發展。

除了剛剛說得兩個主題之外,其實 Silverlight 的 3D 功能也相當不錯,簡簡單單就能夠呈現 3D 效果,如下是沿著X軸旋轉的範例:

[MainPage.xaml]

<UserControl x:Class="SilverlightApplication1.MainPage"

    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 

    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml&quot;

    xmlns:d="http://schemas.microsoft.com/expression/blend/2008&quot; xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 

    mc:Ignorable="d" d:DesignWidth="640" d:DesignHeight="480">

    <UserControl.Resources>

        <Storyboard x:Name="Storyboard1">

            <DoubleAnimationUsingKeyFrames 

                BeginTime="00:00:00"

                Storyboard.TargetName="img"

                Storyboard.TargetProperty="(UIElement.Projection).(RotationX)"

                RepeatBehavior="Forever">

                <SplineDoubleKeyFrame KeyTime="00:00:00" Value="0"/>

                <SplineDoubleKeyFrame KeyTime="00:00:02" Value="360"/>

            </DoubleAnimationUsingKeyFrames>

        </Storyboard>

    </UserControl.Resources>

    <Grid x:Name="LayoutRoot">

        <Image Source="logo.jpg" x:Name="img">

            <Image.Projection>

                <PlaneProjection RotationX="0"></PlaneProjection>

            </Image.Projection>

        </Image>

    </Grid>

</UserControl>

[MainPage.xaml.cs]

namespace SilverlightApplication1 {

    public partial class MainPage : UserControl {

        public MainPage() {

            InitializeComponent();

this.Storyboard1.Begin();

        }

    }

}

重點只有紅色標記那幾行,其他只是動畫效果讓他沿著 X 軸的0度轉到360度然後一直重複。簡單幾行就可以呈現 3D 效果。不過他的3D是模擬出來的,因此沒有陰影、網格等特性。另外他使用 GPU 進行運算不會使用到 CPU 資源。

以上就是這次研討會關於 Silverlight 部份的心得,雖然缺點比我想像的多,不過他的還是有其應用場合優勢也不少,另外他也具有主場優勢,如果 Windows7 成功,Silverlight 的佔有率也會水漲船高不可忽視。還有如果你也曾關注過 Adobe Flex/AIR,你會發現與 Silverlight/OOB  技術上有極大對應關係 ^^ 競爭意謂十足

如果你對研討會內容有興趣,也可以下載投影片回去讀。如果沒有辦法讀 pptx 我也有將投影片丟一份到 SideShare 如下網址,可以直接閱讀

http://www.slideshare.net/cwchiu/sl30-beta

http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=sl30beta-090827180718-phpapp02&stripped_title=sl30-beta

Read Full Post »