用Silverlight做後台好嗎?

  • 11460
  • 0

今天同事跟我討論用Silverlight做後台,這種資料為主的網站用Silverlight開發,一定做的到,但我個人覺得比較累。

今天同事跟我討論用Silverlight做後台,這種資料為主的網站用Silverlight開發,一定做的到,但我個人覺得比較累。

 

累1-表單

Silverlight用Grid畫表格很累,表單驗證的模組還沒有比jQuery好用。

 

累2-CSS

雖然Silverlight有Style,但可用性離CSS還差的很遠呢。

CSS可以有同時有一個以上樣式,如:<div class="AStyle BStyle"/> ,Silverlight沒有,也就是小差異也要全新寫一個Style。

CSS可以設定的樣式比較多,Silverlight較少,如果要豐富樣式必需重寫Template(取代原本的樣式),雖然Template可以做的比CSS多,但隨便一個Template都要寫的非常多,沒有CSS好閱讀,如附錄一

CSS可以階層設定如 .head div.nav a { },Silverlight沒有。

Silverlight可以做的多,但寫的一定比CSS多很多。

 

累3-資料列表

在Silverlight中可以資料列表的有

  • DataGrid-有寫過Windows Form的人就知道,要改DataGrid的樣式與自訂每一個Column的內容有多麻煩。
  • ItemsControl-要自己畫欄位與詳細設定寬,不然每一個Cell的寬會不同。
  • ListBox-同上。

 

當然也有優勢啦

比AJAX好方便

同樣是非同步呼叫,寫AJAX要自己寫Web Services,使用WCF的Domain Service+Entity Framework自動產生Web Services與資料存取,用Silverlight會比較方便些。

 

比JavaScript好寫好Debug

用C#寫前端,會比用JavaScript好寫些啦。

 

不用管Browser的CSS差異。

Silverlight的程式不管在任何瀏覽器都是一樣的結果,這點就比CSS強。

 

個人還是覺得,那一個方便用那一個技術,單純的資料操作網站,用Silverlight應該會比ASP.NET累,但是如果要做如手機展示網站,手機可以720度旋轉(擬3D),擬真實手機操作,用JavaScript寫一般人寫到死都寫不出來吧。

 

附錄一

<ControlTemplate x:Key="NewButton" TargetType="Button">
<Grid Height="12" Width="12">
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="FocusStates">
<VisualState x:Name="Unfocused" />
<VisualState x:Name="Focused" />
</VisualStateGroup>
<VisualStateGroup x:Name="CommonStates">
<VisualState x:Name="MouseOver">
<Storyboard>
<ColorAnimationUsingKeyFrames BeginTime="00:00:00" Duration="00:00:00.0010000" Storyboard.TargetName="border" Storyboard.TargetProperty="(Border.Background).(GradientBrush.GradientStops)[1].(GradientStop.Color)">
<SplineColorKeyFrame KeyTime="00:00:00" Value="#5EFFFFFF" />
</ColorAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
<VisualState x:Name="Normal" />
<VisualState x:Name="Pressed" />
<VisualState x:Name="Disabled" />
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
<Border>
<Border.Background>
<ImageBrush ImageSource="/MyProject;component/Photo/Button/Background.png" Stretch="Fill" />
</Border.Background>
</Border>
<Border x:Name="border">
<Border.Background>
<LinearGradientBrush EndPoint="0.198,0.198" StartPoint="0.85,0.857">
<GradientStop Color="#00000000" />
<GradientStop Color="#00FFFFFF" Offset="1" />
</LinearGradientBrush>
</Border.Background>
</Border>
</Grid>
</ControlTemplate>
因Button有內建無法改的樣式,所以重新定義Button樣式,使用圖片當背景當MouseOver時增加白色半透明遮照。 行為與樣式可以同時寫在一個Template,重覆使用就比CSS強。