新書「Entity Framework 與 LINQ 開發實戰」- 內容導讀

新書「Entity Framework 與 LINQ」將於七月中旬與大家見面,進入 .NET 4.0 平台,開發人員是該正視 LINQ 與 Entity Framework 技術了,這本新書重新修訂我的前一本著作「LINQ 最佳實務講座」,並補充了Entity Framework 的內容,當然,我們需要 Entity Framework 的進階新書,但是沒有打好 LINQ 基礎, Entity Framework 的學習之路可是會痛苦萬分,熟悉 LINQ 就如同操作關聯式資料庫必須通曉 SQL 一樣重要,所以我們將第一本 Entity Framework()以此方式編寫出版。以下是本書內容課程的設計理念。

這本書是為需要入門 LINQ 並且進一步熟悉 Entity Framework 的技術人員所設計的,由於 Entity Framework 透過 LINQ 進行資料模型的存取,為了協助讀者養成運用 Enttiy Framework 的能力,因此內容規畫如下(點圖可放大):


第一章概要描述 Enttiy Framework 與 LINQ 技術的整體技術輪廓,建立學習觀念。

接下來的第二章與第三章聚焦於 LINQ 的討論,讀者在完成這兩個章節的學習課程之後,將能瞭解 LINQ 的來龍去脈,具備使用 LINQ 搜尋擷取資料物件的能力,為將來運用 Entity Framework 打下良好的基礎。

接下來兩章則是 LINQ to ADO.NET 的主題,第四章的 LINQ to SQL ,透過實體類別轉換資料庫架構,避免資料庫開發人員撰寫存取底層資料來源的程式碼,此種作法與 Entity Framework 類似,但是比較單純,因此它可以作為進入 Entity Framework 之前的暖身。第五章的 LINQ to DataSet 提供所需的技術支援,允許開發人員於傳統的 ADO.NET 上面進一步使用 LINQ 。

第六章開始正式進入 Entity Framework 課程,此章從資料模型的建立開始,逐步引領讀者進入 Entity Framework 的技術殿堂。第七章與第八章開始進入最基礎的資料運算,包含搜尋與新增、刪除、修改等資料編輯作業。

第六章至第八章完成 Entity Framework 的基礎理論說明,第九章開始則針對 Visual Studio 提供的視覺化控制項進行逐步的設定示範說明,同時涵蓋 Windows Form 與 Web Form 。

第十章是全書的最後一章,討論 WCF 與 Entity Framework 的整合應用,為將來發展大型應用程式奠定良好的基礎。

這本書的內容與出版社希望出版的 Entity Framework 專書內容是有出入的,我希望整合 LINQ 進來,而出版社希望的是只討論 Entity Framework ,並來個實作專案,打造一個比較好的賣相。僅管出版過程有一些爭執,但妥協的話便與我寫書的理念衝突,因此我堅持了下來,就如同「LINQ 最佳實務講座」一書談了不少 C# 泛型原理(這一部份在此新版的書裏面也保留下來),我所希望的是讀者能在在我的書裏面,學到一項技術的完整輪廓,而非即學即用的實作手冊,Google 在這一方面比書要有用多了,事實上,系統化學習也是技術書籍還能勝過網路文件的僅存優勢了。

(註):是的,我希望這只是第一本,還能有續集,有太多進階的主題需要討論,例如多層式的 EF 商用程式開發就值得出一本專書了,不過在此市道之下,可想而知是一個難以達到的願望,即便這一本書的內容走向,在銷量上都很難達到出版社的目標,更何況更深入的主題?無論如何,盡人事了。XD

愈來愈熱的 Silverlight

Silverlight 4 目前中文版的工具還未釋出,不過應該快了,或許很多開發人員還在觀望,不過從目前各種跡像看來,值得我們為它睹上一把…

儘管微軟亦將全力擁抱開放的標準技術 HTML 5 ,不過,傳統 AP 開發人員在轉向以瀏覽器為主的 AP 開發時,所要面對的並非 HTML 5 或是 Flash 所強調的向量技術或多媒體串流,相反的,我們所在意的是包含後端資料來源的串接功能與前端資料處理操作介面的設計,還有開發 AP 所需的各種 API 。而這些均是
Silverlight 優於其它技術的地方。


Silverlight 有一整套完整的 .NET 函式庫,相同的開發模型,幾乎熟練的 .NET 開發人員不需要花費太大的力氣就可以從傳統的 Windows Form 轉換至 Silverlight ,而微軟對其發展亦展現了相當大的企圖心,從 Silverlight 成為 Windows Phone 7 的唯二官方支援開發技術(另外一個是 XNA)看來,就可以見出端倪。

Silverlight 不僅可以外掛於瀏覽器,同時亦支援離線的獨立運作模式,這些特性讓它可以通吃各種不同的平台,我們可以僅透過 Silverlight 來開發各種不同的 AP ,甚至轉換舊的 Client-Server 架構到瀏覽器上。

事實上這些轉移已漸漸在發生了,我們接觸的案子裏,一些原先以 Windows Form 為 UI 的 Client-Server 系統,已指定透過 Silverlight 取代原來的視窗介面,當然這些轉變很容易理解,因為以 Silverlight 建構的系統不需要再安裝 Client 端的軟體,在維護上可以大幅降低軟體維護的負擔,而且只要有瀏覽器,就可以隨時執行應用程式。

因為 iPhone 的熱賣,世界的目光都集中在行動裝置與相關軟體的開發,事實上舊有的系統轉移是更大的市場,全球一年要出貨的 PC+NB 就有五億台之多,而且還在成長,而智慧型手機再多也是數千萬台之譜,最重要的是,電腦平台是企業運作的必要環境,智慧型手機再怎麼說也只是消費性電子產品,對我個人來說,專注在電腦平台是比較重要的投資。

傳統的 AP ,例如會計軟體、進銷存、人事等系統等等,未來都會朝向網路型式發展,而這些均是 Silverlight 的主戰場,相關的系統軟體都不需要華麗的介面或是影音多媒體串流之類的功能,但是它們需要敏捷的操作介面以及不需安裝客戶端軟體就能執行的環境,或許你的老板或客戶會要求它們在任何可以上網的地方,能夠隨時存取公司報表, Silverlight 將是能夠讓你快速勝任相關開發任務的技術。

一張圖兩個重點瞭解 Entity Framework

在我十多年的程式語言學習生涯中,從來不相信什麼快快樂樂、 24 hr 的速成學習,不過有一點例外,那就是關鍵概念的瞭解,用點心很快就可以完成。投入任何新技術之前,我會先去找到關鍵的進入點,然後從這個點剖析技術的組成架構、設計的目的進而釐清整個技術的輪廓,接下來進入狀況就很快了。

這種方式的學習有一些個好處,面對層出不窮的新技術,可以比較容易篩選出那些技術值得投入學習,那些技術不值得浪費時間,甚至更進一步的,可以看出某些新技術事實上只是包裝舊技術、純粹行銷用的玩意。如此一來,我才能在有限的時間內,針對必要的技術投注學習資源避免無謂的消耗,人生苦短,工作與學習並非生活中唯一事,特別是對我們這種技術人員來說,很多時候,留下一些時間浪費在美好的事物上是很重要的事。

同樣的,我的書也是採用此種觀念的寫法,Entity Framework 新書亦不例外,在這本書中,我利用了以下的圖示來解釋什麼是 Entity Framework ,它的目標為何,列舉如下 :


有了這張圖,你很容易就能看出 Entity Framework 的整個架構,它不過就是透過實體資料模型(EDM)對應底層資料庫,然後提供 LINQ 或是 Entity SQL 讓開發人員撰寫資料存取邏輯,取代原來的 ADO.NET + SQL 的作法,因此想要進入 Entity Framework ,你必須學會 LINQ 與 如何建立 EDM 。

LINQ 需要一些學習成本,至於EDM,工具會幫我們完成。

最後,也最重要的, Entity Framwork 的目的為何,有兩個重點,首先是避免了 SQL 式的寫法(註) ,另外一個就是避免與底層資料庫形成緊密的耦合。這兩點我們在下一篇文章裏面進一步作說明。 

註:Entity Framework 其實還是提供了類 SQL 字串的語法 - Entity SQL,這讓你在需要以字串格式組織查詢條件時,特別的有用。

【Entity Framework & LINQ 開發實戰 】初現

【Entity Framework & LINQ 開發實戰】一書是個人前一本著作【LINQ 最佳實務講座】的改版,儘管書名不一樣,但是我將其定位在改版書而非新書。

相較於舊版,前三章沒變,只是作了合併,而為了將討論的內容重點放在關聯式資料庫的存取,刪除了所有與 XML 有關的章節,另外,LINQ to ADO.NET 的部份,則刪除了 LINQ 語法相關示範內容,著重在技術介紹,因為我們認為,有了前三章的基礎,這一部份應該不需要再談了,這樣可以讓書比較精簡,換句話說,便宜一點。

至於 Entity Framwork ,總共談了五章入門,整本書的排版比較密,字也比較小,頁數將近 500 頁,依然維持第一版小書的風格。

CH01|Entity Framework 與 LINQ 概觀

Part 01 LINQ to object
CH02|LINQ 與 C#
CH03|LINQ 與擴充方法


Part 02 LINQ to ADO.NET
CH04|LINQ to SQL
CH05|LINQ to DataSet


Part 03 Entity Framework
CH06|探索 Entity Framework
CH07|資料物件搜尋
CH08|資料物件編輯
CH09|視覺化介面設計整合
CH10|WCF服務與實體資料模型

附錄A Entity Framework 中英詞彙
附錄B Entity Framework命名空間與類別
附錄C 切割實體資料模型專案

關於 Silverlight

Silverlight 是目前我們工作研究的重點,不是為了寫書,而是為了專案開發。

我一直認為, RIA 的主戰場將會在 Silverlight ,其它兩種競爭技術, Flash 與 HTML 5 ,前者不用多說,至少在 AP 開發這一塊領域差不多已經出局了,至於 HTML 5 ,還 …久的咧,儘管是標準的開放技術,但是真正的規格要底定至少還有 3~5 年,新規格的技術要讓企業放心導入都是正式版本成熟之後的事,更何況一個沒有正式規格的 HTML 5 。

而要讓主流瀏覽器全面支援,有完備的開發工具,就更遙遠了,就算這些都齊備了,各家廠商對其支援是否一致還是很大的問題,或許它真的是 Web AP 的未來,然而短期內想要依賴開發 RIA 討生活,擁抱 Silverlight 是比較合適的選擇,更重要的是,未來幾年, HTML 5 成熟之前,Silverlight 還會持續進化,除非 MS 腦袋壞了突然不想發展了,否則的話未來只會愈來愈容易使用,至少目前的 Silverlight 4 該有的功能都已經完備了。

Silverlight 4 幾乎已經是輕量版的 Win Form 開發工具了,只是它同時可以在瀏覽器上面跑,用開發視窗 AP 來看待 Silverlight 反而比較容易進入狀況,今年,工作室有兩項小小的專案,會嘗試利用 Silverlight 開發,屆時有成果再上來分享。

針對 Silverlight 4 ,我們從幾個面向下去研究:
  • XAML 與視覺化介面設計
  • .NET 類別庫
  • 資料存取技術
  • WCF RIA Service
  • 應用程式開發設計

未來有機會我們會考慮以小書的方式,出版各種主題的 Silverlight 專書,每一本大約 250~300 頁左右(我其實打算一次出十本XD),讓讀者能根據自己的程度需求,買到合適主題的 Silverlight 專書,當然,此種出版模式成本會比較高,同時量也不會很多就是了。

網誌存檔