微軟的LightSwitch

安裝過程很簡單,掛載ISO,運行setup.exe,提示需要1G多的空間,其實如果你安裝了VS和Silverlight 4 SDK的話,要不了這麼多的空間,500多M的安裝包也是因爲包含VS Shell的原因吧,我沒有在乾淨的系統中安裝,具體情況如何不太清楚。以後微軟應該出一個針對已有VS環境的精簡安裝包。安裝完成的界面截圖如下:

clip_image002

安裝完成後,打開VS,新建項目的時候,就可以看到多出了一種項目類型了,語言可以選擇VB.NET和C#,如下圖:

clip_image004

那麼,就創建一個項目,初始界面,大家可能都熟知了:

clip_image006

一開始就然大家創建數據表(table),注意此數據表並非是真正的數據庫中的表哦,可以說是一種抽象的數據表,或者是實體框架中的實體。我創建了一個名爲的People的數據表:

clip_image008

從上圖,可以看到,Id字段是默認就有的,無法修改名稱,但可以添加描述,並選擇是否要顯示在操作界面(Screen)上。這裏有個問題,連Id的數據類型都不能修改,只能是Int32,而很多時候我更習慣使用Guid。希望正式版中可以給Id字段選擇不同的數據類型(至少可以支持GUID)。

可以添加數據類型的爲EmailAddress的字段,對於這點顯得非常方便,不過如果能自己擴展數據類型就好了,類似SharePoint那樣。

Age字段是一個計算字段,通過屬性窗口中提供的“Edit Method”按鈕可以打開代碼編輯界面,輸入如下代碼:

1.           partial void Age_Compute(ref int result)  2.           {  3.             // Set result to the desired field value  if (this.Birthday.HasValue)  4.                 result=DateTime.Now.Year - this.Birthday.Value.Year;  5.           }

代碼的自動生成做的很好,如果改變Age的數據類型,可以同步就修改result的類型。

分別查看Name,Age和Email字段的屬性,可以看到:

clip_image010clip_image012clip_image014

字符串(或基於字符串)的數據類型,可以被搜索(不太理解Date就不能搜索,還是隻能過濾?);每個字段都可以轉換爲計算字段;對於字符串字段,可以提供一個列表選擇;數據驗證,根據不同的數據類型,提供了不同的驗證選項,也可以設置自定義驗證模式;對於可空的字符串數據類型,可以選擇空值如何保 存。

除了定義自己的數據表以外,也可以添加外部數據源:

clip_image016

可以從數據庫、SharePoint和WCF RIA Service中添加,奇怪的是數據庫的選擇可以通過other看到CE 3.5,不過我沒有嘗試,我只嘗試了從SQL Server中導入一個表的操作:

clip_image018

這個過程也可以看作是實體框架中映射一個表的操作(背後實際上就是在用EF進行映射),Required是不能修改的,數據驗證時候也不能修改,其他如字段名稱,顯示名稱都可以修改,這樣的要求估計也是EF的映射所要求的。

可以說,在LightSwitch中Table是一切的核心,也是一切的啓動,可以從工具條的操作按鈕看出來。這也昭示着LightSwitch是針對以數據爲中心(數據驅動)的LoB應用的。

接着,我們再來添加兩個表Dinner和RSVP,如下圖:

clip_image020

clip_image022

這個時候,Peoples也變成了如下的圖:

clip_image024

下面,我們來看看Solution Explorer:

clip_image026

整個解決方案的顯示完全屏蔽了傳統的那種列出代碼的方式(雖然這個解決方案中實際上包含了6個項目,和n多代碼文件),而是隻顯示三個主要的節點: 屬性,數據源,操作界面。在數據源中,直接創建的數據表,歸到了ApplicationData目錄下,每個數據表一個節點,不過無法同時打開多個數據表 編輯(可能是基於工作的目標更集中,或更方便自動生成代碼的考慮)。而引入的外部數據源是另外單列的。

順帶說一下,導入外部數據源的時候,如果選擇WCF RIA Services,暫時只能選擇到AuthenticationService和SecurityDataService,單點“Add Reference”的時候,你就會看到其他的項目名稱了,如:

clip_image028

如果額外添加一個Service進去,暫時還未找到添加的地方。而且,在打開和關閉Add Reference窗口的時候都特別慢,估計是一個Issue

準備好了數據源,那麼就要添加操作界面了,添加也是非常簡單,打開某個數據表,在工具條上點“Screen”按鈕,如:

clip_image030

在添加了CreateNew、Search和Details的操作界面後,我們就可以來按F5運行我們的程序的,除了Age計算字段外的一句話,就沒有再寫代碼了,運行效果如下:

clip_image032

注意,主界面的右上角有一個“Customize Screen”的按鈕,可以讓End-User自定義自己的操作界面,這個比那種自定義一下數據網格的顯示列什麼的強大太多,這都受益於XAML的強大, 估計背後的技術是Blend SketchFlow類似的東西。更多的操作界面的體驗,我會在後續的博客中和大家分享。

另外,還有一個寶庫必須體驗一下,就是整個應用程序的項目屬性設置,在Solution Explorer上右鍵點“Application1”,選擇“Properties”,就可以看到下圖的屬性設置界面:

clip_image034

在這裏,提供了幾個決定應用程序運行模式的選項,在General中Shell、Theme的選擇讓你的應用程序可以與衆不同,另外不知道Culture的設置會不會影響界面的文字的顯示,多語言的實現是不是在這裏?

Extension,可以添加、選擇不同的擴展包,實際上給開發人員提供擴展LightSwitch默認構建的地方,你可以把自己開發LoB的一些構建設想編寫爲LightSwitch擴展,讓大家來使用。(此處純屬猜想)

Screen Navigation,可以讓大家修改主界面的導航菜單,沒有什麼特殊的。

Access Control,可以設置內置訪問控制的特性,默認提供Form Authentication和Windows Authentication。

Application Type,可以選擇應用程序的具體運行情況,具體有:

clip_image036

大家注意,第一個選項是Desktop Client,且是隻有2層,Silverlight的Client和SQL Server的Data,那麼就是說LightSwitch爲Silverlight提供了直接(或通過某種包裝器)訪問數據庫的能力(中間應該還是 EF)。

關於項目屬性設置的體驗,我後續會詳細分享。

還值得注意的是,LightSwitch實際上也體現了我早在去年的這個構想:使用Silverlight 3作爲桌面應用程序開發平臺(1——構想)

最後來說說LightSwitch的定位問題:

在某技術網站上有一篇文章:LightSwitch——微軟將要推出的專業開發工具,定位問題受到質疑,其中的提到的疑問,確實是現實存在,尤其和Access的功能類同。

不過我認爲,LightSwitch相對於Access可以說一種完成不同的東西,運行環境不同,開發環境不同,開發語言不同,部署模型不同(尤其LightSwitch在瀏覽器模式下的footprint會很小),我相信開發效率與互操作能力也不可同日而語。

另外對於LightSwitch是否是給專業開發人員使用的問題,我覺得專業開發人員也需要這樣的工具,有人提到可以開發原型系統或構想驗證 POC,不過以我自己的實踐來說,我未來完成會用於開發正式項目和產品的。因爲,我們主要開發專業數據分析產品的,但是偶爾也要給合作伙伴開發一些小的 MIS或LoB這種數據爲中心的應用,而這個時候,有了LightSwitch,我就不用自己去構建一套LoB的開發框架了,LightSwitch已經 爲我們大家好了很多基礎的東西,我們需要考慮的就只有數據模型和操作界面的問題了。由於LightSwitch很容易上手,我也可以把這樣的任務分給一些 具有一定基礎的實習學生來完成。又如,我之前在一家開發LoB的小企業,實現了一套3層架構的開發框架,提供了基礎的數據訪問模式,權限管理功能,並制定 了一套準則方便大家遵循同樣的構架來開發各個功能模塊,而現在可以說,LightSwitch把這樣的開發框架內化爲一個IDE提供給大家,且可以讓大家 進行定製和擴展。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章