Visual Studio LightSwitch初體驗和定位看法
Visual Studio LightSwitch已經可以通過MSDN訂閱下載了,相關介紹可以見:http://www.microsoft.com/visualstudio/en-us/lightswitch。
于是我馬上下載下來體驗了一把:
安裝過程很簡單,掛載ISO,運行setup.exe,提示需要1G多的空間,其實如果你安裝了VS和Silverlight 4 SDK的話,要不了這么多的空間,500多M的安裝包也是因為包含VS Shell的原因吧,我沒有在干凈的系統中安裝,具體情況如何不太清楚。以后微軟應該出一個針對已有VS環境的精簡安裝包。安裝完成的界面截圖如下:
安裝完成后,打開VS,新建項目的時候,就可以看到多出了一種項目類型了,語言可以選擇VB.NET和C#,如下圖:
那么,就創建一個項目,初始界面,大家可能都熟知了:
一開始就然大家創建數據表(table),注意此數據表并非是真正的數據庫中的表哦,可以說是一種抽象的數據表,或者是實體框架中的實體。我創建了一個名為的People的數據表:
從上圖,可以看到,Id字段是默認就有的,無法修改名稱,但可以添加描述,并選擇是否要顯示在操作界面(Screen)上。這里有個問題,連Id的數據類型都不能修改,只能是Int32,而很多時候我更習慣使用Guid。希望正式版中可以給Id字段選擇不同的數據類型(至少可以支持GUID)。
可以添加數據類型的為EmailAddress的字段,對于這點顯得非常方便,不過如果能自己擴展數據類型就好了,類似SharePoint那樣。
Age字段是一個計算字段,通過屬性窗口中提供的“Edit Method”按鈕可以打開代碼編輯界面,輸入如下代碼:
{
// Set result to the desired field value
if (this.Birthday.HasValue)
result=DateTime.Now.Year - this.Birthday.Value.Year;
}
代碼的自動生成做的很好,如果改變Age的數據類型,可以同步就修改result的類型。分別查看Name,Age和Email字段的屬性,可以看到:
字符串(或基于字符串)的數據類型,可以被搜索(不太理解Date就不能搜索,還是只能過濾?);每個字段都可以轉換為計算字段;對于字符串字段,可以提供一個列表選擇;數據驗證,根據不同的數據類型,提供了不同的驗證選項,也可以設置自定義驗證模式;對于可空的字符串數據類型,可以選擇空值如何保存。
除了定義自己的數據表以外,也可以添加外部數據源:
可以從數據庫、SharePoint和WCF RIA Service中添加,奇怪的是數據庫的選擇可以通過other看到CE 3.5,不過我沒有嘗試,我只嘗試了從SQL Server中導入一個表的操作:
這個過程也可以看作是實體框架中映射一個表的操作(背后實際上就是在用EF進行映射),Required是不能修改的,數據驗證時候也不能修改,其他如字段名稱,顯示名稱都可以修改,這樣的要求估計也是EF的映射所要求的。
可以說,在LightSwitch中Table是一切的核心,也是一切的啟動,可以從工具條的操作按鈕看出來。這也昭示著LightSwitch是針對以數據為中心(數據驅動)的LoB應用的。
接著,我們再來添加兩個表Dinner和RSVP,如下圖:
這個時候,Peoples也變成了如下的圖:
下面,我們來看看Solution Explorer:
整個解決方案的顯示完全屏蔽了傳統的那種列出代碼的方式(雖然這個解決方案中實際上包含了6個項目,和n多代碼文件),而是只顯示三個主要的節點:屬性,數據源,操作界面。在數據源中,直接創建的數據表,歸到了ApplicationData目錄下,每個數據表一個節點,不過無法同時打開多個數據表編輯(可能是基于工作的目標更集中,或更方便自動生成代碼的考慮)。而引入的外部數據源是另外單列的。
順帶說一下,導入外部數據源的時候,如果選擇WCF RIA Services,暫時只能選擇到AuthenticationService和SecurityDataService,單點“Add Reference”的時候,你就會看到其他的項目名稱了,如:
如果額外添加一個Service進去,暫時還未找到添加的地方。而且,在打開和關閉Add Reference窗口的時候都特別慢,估計是一個Issue。
準備好了數據源,那么就要添加操作界面了,添加也是非常簡單,打開某個數據表,在工具條上點“Screen”按鈕,如:
在添加了CreateNew、Search和Details的操作界面后,我們就可以來按F5運行我們的程序的,除了Age計算字段外的一句話,就沒有再寫代碼了,運行效果如下:
注意,主界面的右上角有一個“Customize Screen”的按鈕,可以讓End-User自定義自己的操作界面,這個比那種自定義一下數據網格的顯示列什么的強大太多,這都受益于XAML的強大,估計背后的技術是Blend SketchFlow類似的東西。更多的操作界面的體驗,我會在后續的博客中和大家分享。
另外,還有一個寶庫必須體驗一下,就是整個應用程序的項目屬性設置,在Solution Explorer上右鍵點“Application1”,選擇“Properties”,就可以看到下圖的屬性設置界面:
在這里,提供了幾個決定應用程序運行模式的選項,在General中Shell、Theme的選擇讓你的應用程序可以與眾不同,另外不知道Culture的設置會不會影響界面的文字的顯示,多語言的實現是不是在這里?
Extension,可以添加、選擇不同的擴展包,實際上給開發人員提供擴展LightSwitch默認構建的地方,你可以把自己開發LoB的一些構建設想編寫為LightSwitch擴展,讓大家來使用。(此處純屬猜想)
Screen Navigation,可以讓大家修改主界面的導航菜單,沒有什么特殊的。
Access Control,可以設置內置訪問控制的特性,默認提供Form Authentication和Windows Authentication。
Application Type,可以選擇應用程序的具體運行情況,具體有:
大家注意,第一個選項是Desktop Client,且是只有2層,Silverlight的Client和SQL Server的Data,那么就是說LightSwitch為Silverlight提供了直接(或通過某種包裝器)訪問數據庫的能力(中間應該還是EF)。
關于項目屬性設置的體驗,我后續會詳細分享。
還值得注意的是,LightSwitch實際上也體現了我早在去年的這個構想:使用Silverlight 3作為桌面應用程序開發平臺(1——構想)
最后來說說LightSwitch的定位問題:
在InfoQ上有一篇文章:LightSwitch——微軟將要推出的專業開發工具,定位問題受到質疑,其中的提到的疑問,確實是現實存在,尤其和Access的功能類同。
不過我認為,LightSwitch相對于Access可以說一種完成不同的東西,運行環境不同,開發環境不同,開發語言不同,部署模型不同(尤其LightSwitch在瀏覽器模式下的footprint會很小),我相信開發效率與互操作能力也不可同日而語。
另外對于LightSwitch是否是給專業開發人員使用的問題,我覺得專業開發人員也需要這樣的工具,有人提到可以開發原型系統或構想驗證POC,不過以我自己的實踐來說,我未來完成會用于開發正式項目和產品的。因為,我們主要開發專業數據分析產品的,但是偶爾也要給合作伙伴開發一些小的MIS或LoB這種數據為中心的應用,而這個時候,有了LightSwitch,我就不用自己去構建一套LoB的開發框架了,LightSwitch已經為我們大家好了很多基礎的東西,我們需要考慮的就只有數據模型和操作界面的問題了。由于LightSwitch很容易上手,我也可以把這樣的任務分給一些具有一定基礎的實習學生來完成。又如,我之前在一家開發LoB的小企業,實現了一套3層架構的開發框架,提供了基礎的數據訪問模式,權限管理功能,并制定了一套準則方便大家遵循同樣的構架來開發各個功能模塊,而現在可以說,LightSwitch把這樣的開發框架內化為一個IDE提供給大家,且可以讓大家進行定制和擴展。