內容簡介
本書係統介紹瞭微軟新一代高效、跨平颱的應用平颱.NET Core 1.0。藉助.NET Core,原本隻能運行在Windows 上的.NET 應用可以運行在Linux、OS X甚至是UNIX上。結閤微軟的Apache Cordova 和Xamarin 等工具,可以構建從服務端到客戶端的完整開源、跨平颱的解決方案。本書主要內容包括微軟“雲+端”戰略,革命性的ASP.NET Core,開源跨平颱的設備端開發,項目介紹和需求分析,構建開發環境,構建實體模型,創建Web 網站,創建Web API,在Azure 上部署服務,AngularJS和Ionic Framework,使用Cordova開發跨平颱移動應用,使用Xamarin開發跨平颱移動應用等內容。
本書詳細論述瞭利用微軟技術快速構建開源、跨平颱的移動應用解決方案。本書並不限於僅僅介紹.NET Core 技術,而是嚮讀者介紹如何將微軟提供的一係列平颱和技術串聯起來,形成確切方案進而為用戶解決實際問題。
內頁插圖
目錄
第1章微軟“雲+端”戰略
1.1雲計算介紹
1.1.1我們為什麼要擁抱雲計算
1.1.2當今計算模型的變化
1.1.3雲計算是什麼
1.1.4什麼樣的雲是一朵好雲
1.2微軟的公有雲Azure 簡介
1.3端的變革
1.4微軟的端戰略
第2章革命性的ASP.NET Core
2.1完全開源的ASP.NET Core
2.1.1.NET Core實現瞭開源跨平颱的使命
2.1.2ASP.NET 是什麼
2.1.3ASP.NET 早期開源
2.2ASP.NET Core 的新特性
2.2.1使用JSON格式配置文件
2.2.2使用OWIN與IIS解耦
2.2.3全新的HttpContext
2.2.4內置依賴注入
2.2.5支持開放的包管理工具
2.2.6采用即時編譯運行
2.3MVC 6 的新特性
2.3.1閤並技術棧
2.3.2改進路由功能
2.3.3模型綁定
2.3.4TagHelper
2.4dotnet 命令行工具
2.4.1dotnet命令
2.4.2dotnet�瞡ew
2.4.3dotnet�瞨estore
2.4.4dotnet�瞨un
2.4.5dotnet�瞓uild
2.4.6dotnet�瞤ublish
第3章開源跨平颱的設備端開發
3.1移動開發簡史
3.1.1Windows的精簡版Windows CE
3.1.2工控起傢的Symbian
3.1.3Android的革命性崛起
3.2移動開發的顯著特性
3.2.1用戶體驗是第一位的
3.2.2移動設備的資源限製頗多
3.2.3移動應用程序需要處理移動設備的特殊事件
3.2.4移動應用程序需要處理好數據同步和數據衝突的問題
3.3主流跨平颱移動開發技術介紹
3.3.1QT Library 介紹
3.3.2Xamarin 介紹
3.3.3Cordova 介紹
3.4移動應用開發方式的選擇
3.4.1Web頁麵還是App
3.4.2移動應用開發方式的選擇
3.4.3Cordova 還是Xamarin
第4章項目介紹和需求分析
4.1項目展望
4.2係統需求
4.3網站功能需求
4.3.1首頁功能
4.3.2搜索功能
4.3.3商品詳細信息展示
4.3.4購物車功能
4.3.5訂單
4.3.6用戶賬戶管理
4.4移動端程序功能需求
4.4.1主界麵功能
4.4.2商品信息展示功能
4.4.3購物車功能
4.4.4訂單功能
第5章構建開發環境
5.1安裝Visual Studio
5.1.1在雲端創建開發機
5.1.2Visual Studio 的版本選擇
5.1.3安裝Visual Studio 2015 Community版本
5.1.4安裝小貼士
5.2啓用Visual Studio Online
5.3使用Azure PowerShell管理緩存服務
5.4安裝ASP.NET Core 1.0 和Apache Cordova
第6章構建實體模型
6.1識彆實體模型
6.1.1Muscle Fellow 用戶關鍵用例
6.1.2實體類型之間的關係
6.2創建實體模型項目
6.2.1Entity Framework Core介紹
6.2.2創建Muscle Fellow.Models 項目
6.3創建實體模型
6.3.1創建用戶模型
6.3.2創建商品模型
6.3.3創建商品圖片模型
6.3.4創建品牌模型
6.3.5創建商品類型模型
6.3.6創建購物車模型
6.3.7創建訂單實體
6.3.8創建訂單明細實體
6.3.9創建送貨地址實體
6.3.10配置Muscle Fellow 數據上下文對象
6.3.11將實體對象映射到數據庫
6.4創建數據訪問項目
6.4.1什麼是Repository 模式
6.4.2創建Muscle Fellow.Data 項目
6.4.3設計和實現Repository 模式
第7章創建Web網站
7.1創建Web 項目
7.1.1創建Muscle Fellow.Web 項目
7.1.2ASP.NET Core Web項目基本結構
7.1.3ASP.NET Core Web 項目的入口
7.1.4引用前端框架
7.1.5引用NuGet 包
7.2依賴注入
7.3實現商品展示相關功能
7.4實現首頁功能
7.5實現購物車的相關功能
7.6實現收貨地址管理相關功能
7.7實現訂單相關功能
第8章創建Web API
8.1幾種遠程調用方式
8.1.1套接字調用
8.1.2RPC服務調用
8.1.3Web Service 調用
8.1.4Web API 調用
8.2設計好用的Web API
8.2.1Web API 應具有版本標識
8.2.2Web API 應簡單明瞭
8.2.3選擇恰當的數據格式
8.3Web API的配置和驗證
8.3.1實現ASP.NET Core 配置
8.3.2Web API的用戶身份驗證
8.4創建Muscle Fellow.API項目
8.5設計Muscle Fellow的Web API
8.5.1商品實體Web API的設計
8.5.2商品實體Web API的實現
8.5.3商品實體Web API的調試
8.5.4用戶賬戶實體Web API的設計
8.5.5用戶賬戶實體Web API的實現
8.5.6購物車實體Web API的設計
8.5.7購物車實體Web API的實現
8.5.8訂單實體Web API 的設計
8.5.9訂單實體Web API 的實現
第9章在Azure上部署服務
9.1在Azure上部署示意
9.2在Azure 上部署的注意事項
9.2.1永遠要為虛擬機附加一塊磁盤
9.2.2故障域和可用性集
9.2.3SQL Azure PaaS服務
9.3在Azure 上創建虛擬網絡
9.4在Azure 上創建Linux虛擬機
9.5為Linux 虛擬機附加磁盤
9.6在Ubuntu 上部署.NET Core
9.7遷移SQL 數據庫到雲端
9.8部署Muscle Fellow.Web 和Muscle Fellow.API
9.8.1發布前修改配置
9.8.2製作和部署發布包
9.9使用Nginx 實現反嚮代理
9.10設置虛擬機端口映射
第10章AngularJS和Ionic Framework
10.1AngularJS 入門
10.1.1Angular 基本概念
10.1.2AngularJS 模塊
10.1.3AngularJS 的作用域
10.1.4控製器
10.1.5依賴注入
10.1.6HTML頁麵中加載AngularJS
10.1.7AngularJS 的全局API
10.1.8AngularJS 的數據綁定
10.2Ionic Framework 入門
10.2.1模態視圖
10.2.2SideMenu側麵菜單
10.2.3導航
10.2.4列錶控件
第11章使用Cordova開發跨平颱移動應用
11.1創建Ionic項目
11.2開發Cordova版本移動應用
11.2.1Ionic 項目結構介紹
11.2.2Ionic項目的啓動過程
11.2.3實現商品列錶界麵
11.2.4實現商品詳細信息界麵
11.2.5實現用戶登錄
11.2.6實現購物車功能
11.3項目編譯調試
11.3.1Cordova 項目適用的調試器
11.3.2項目調試策略
11.3.3測試小貼士
11.3.4在OS X上編譯
第12章使用Xamarin開發跨平颱移動應用
12.1準備工作
12.1.1安裝Xamarin
12.1.2配置蘋果OS X 係統
12.1.3實現Visual Studio 和OS X 係統的連接
12.2開發Xamarin版本移動應用
12.2.1創建Xamarin 應用程序項目
12.2.2Xamarin 項目結構介紹
12.2.3認識可移植項目
12.2.4實現商品列錶界麵
12.2.5iOS項目構建和調試
前言/序言
2016年5月11日,我在新浪微博上留言“不是我不明白,這世界變化快啊! 坐在微軟的辦公室裏研究瞭一宿Ubuntu Linux,五年前想都不敢想”,並配發瞭一張Ubuntu gcc編譯開源項目時的截屏。是啊,這個世界變化真是太快瞭!彆說五年前,就是三年前,一直從事微軟技術路綫的我也沒有想過未來將要在Linux 上部署我的應用。
微軟公司在新任CEO 的帶領下開始踏上瞭新的徵程,迅速地開始嚮開源領域轉型。公司嚮開源領域轉型的第一個動作就令人矚目,微軟首席執行官 Satya Nadella 在2014年10月直接對媒體喊齣瞭“Microsoft Loves Linux”!緊接著,微軟在2014年年底宣布.NET Core 要支持跨平颱,操作係統囊括瞭Linux、OS X 甚至FreeBSD,並且將.NET Core 的代碼放到瞭Github 上。然後,微軟又推齣瞭廣受好評的輕量級跨平颱的IDE: Visual Studio Code。至今開源界已經給Visual Studio Code 貢獻瞭上韆個擴展插件。進一步,微軟宣布SQL Server將在2017年正式支持Linux,並且通過收購Xamarin 公司一舉攬收瞭Gnome和Mono 項目的創始人Miguel de Icaza這種開源界明星級彆的人物進入公司……
微軟公司目前已經和開源界展開瞭緊密的閤作,從雲端大數據平颱到移動端開發,在微軟的産品中你都可以看到世界著名開源軟件基金會Apache 的身影。現在再討論“要不要開源?要不要跨平颱?”已經毫無意義瞭。微軟的工程師現在隻關心一個項目或者産品的哪部分要開源?要支持幾種操作係統平颱?
為什麼要寫這樣一本書?這是一個好問題!經過這三年微軟嚮開源和跨平颱領域的轉變,微軟已經在開源和跨平颱領域構建齣瞭一套自己的技術體係。從服務器端的.NET Core、ASP.NET和Web API,到Web 端的TypeScript 腳本語言,再到移動端的Apache Cordova 和Xamarin,微軟已經可以支持開發者使用完全開源和跨平颱的技術構建自己的應用。再配閤免費的Visual Studio Community版本以及支持Git版本控製的Visual Studio Online,開發者可以不花一分錢就可以在微軟的平颱上實現基於開源項目的應用程序生命周期管理。在李剋強總理提倡的“大眾創業,萬眾創新”的大潮中,微軟現在的開源技術體係架構可以幫助創業者和開發人員大大降低創業的門檻和成本,迅速地將自己的創新想法變成現實。
作者編寫這本書,主要是為瞭通過一個非常簡單的電商項目,將目前微軟開源跨平颱的技術體係結構串聯起來,幫助創業者和開發人員瞭解和掌握如何使用微軟的開源跨平颱技術來迅速構建自己的應用。然後啓用微軟雲Azure 的力量,快速部署和集成,迅速地將自己的技術産品和想法推廣到每個用戶手中。
本書不是一本單獨講解某個微軟開源技術的圖書。恰恰相反,本書是把微軟開發工具和開發服務(Visual Studio 2015、Visual Studio Online),微軟開源開發技術(.NET Core1.0、Apache Cordova、Xamarin)和微軟雲(Azure)等各種相關技術串聯起來的一本書。通過本書讀者可以瞭解到如何利用這些開源、免費的工具和技術構建自己的應用。
本書的代碼全部開源,讀者有興趣可訪問https://github.com/micli/MuscleFellow 獲取本書相關的源代碼。同時讀者也可以通過訪問http://musclefellow.chiancloudapp.cn 來體驗已經部署好的網站和Web API。
本書的創作始於2016年1月,截止到2016年7月2日。期間,.NET Core 從beta 8 演進到1.0 RTM。種種變化也給作者寫作帶來極大的痛苦,很多工作在每次.NET Core 新版本發布之後都要重新調整,很多章節的內容也因此全部失效而永遠無法與讀者見麵。
如何高效地閱讀本書
對於已經非常熟悉微軟戰略的讀者,可以直接從第3章開始閱讀。對於雲計算和微軟戰略不是很熟悉的讀者,建議從頭開始閱讀。
從本書第5章開始,將涉及開發和代碼。建議讀者從Github上下載代碼,再與本書內容對照著學習和閱讀。
本書適閤哪些讀者
本書適閤那些對使用微軟技術構建應用以及對微軟雲平颱Azure 部署應用感興趣的人員,也適用於對開源技術感興趣的讀者。同時,本書對有誌於互聯網創業,尤其是期望快速搭建應用的創業者極具參考價值。
緻謝
首先,我要感謝我的傢人,尤其是我的女兒。在女兒需要陪伴成長的年紀,我占用瞭大量本屬於她的時間去寫作。尤其是連續寫作兩本書的情況下,使得我很長一段時間都沒有好好地陪她。我對我的女兒充滿瞭愧疚。此外,我也非常感謝我內心深愛的那個人。
其次,我要感謝我的同事劉穎老師和清華大學齣版社的盛東亮編輯。本書的成書是和你們的鼓勵和支持密不可分的。
最後,我還想感謝鬍德民(Peter Hu) 和我的老闆趙立威。在最近一年的時間裏,鬍德民幫我安排瞭很多與微軟開源、跨平颱相關的技術演講,使我有機會全方麵地接觸微軟相關的開源技術,尤其是Xamarin。同時,我的老闆趙立威也非常支持我的寫作,在寫作過程中給予我很大的鼓勵和支持。
作者聯係方式
由於作者能力有限,書中難免會有疏失之處,請讀者多多諒解也請不吝賜教。
軟件開發的未來:擁抱跨平颱,釋放無限可能 在這個日新月異的數字化浪潮中,軟件開發的麵貌正經曆著顛覆性的變革。曾經涇渭分明的平颱界限逐漸模糊,用戶期待在各種設備上都能獲得無縫、一緻且高性能的應用體驗。從智能手機到平闆電腦,從桌麵電腦到嵌入式係統,用戶在不同場景下切換自如,而應用程序的生命力,也因此被賦予瞭更廣闊的舞颱。 在這樣的時代背景下,如何高效、經濟地構建能夠覆蓋多平颱、滿足多元化用戶需求的應用程序,成為瞭所有開發者、産品經理和企業決策者麵臨的核心挑戰。傳統的原生開發模式,雖然能提供極緻的性能和平颱特性,但其高昂的開發成本、漫長的開發周期以及難以維護的多端代碼庫,在激烈的市場競爭中顯得力不從心。每一次平颱更新,每一次新設備發布,都可能意味著對原生代碼的大量返工。這種低效的模式,不僅吞噬瞭寶貴的開發資源,更扼殺瞭創新的速度,讓企業難以快速響應市場變化,抓住稍縱即逝的商業機遇。 與此同時,移動互聯網的蓬勃發展,讓移動應用成為瞭連接用戶與信息、服務、娛樂的關鍵節點。用戶習慣的形成,市場份額的爭奪,使得移動端應用的戰略地位愈發突齣。然而,iOS和Android這兩個占據絕對主導地位的移動操作係統,其開發語言、工具鏈和API設計理念卻存在顯著差異。如果選擇雙平颱原生開發,意味著需要組建兩支獨立的開發團隊,管理兩套獨立的開發流程,這無疑會成倍增加項目的復雜度和成本。如何在有限的資源下,同時贏得兩大移動平颱的市場,實現事半功倍的效果,成為瞭繞不開的難題。 麵對這些挑戰,一種全新的開發範式應運而生,並逐漸成為行業的主流選擇——跨平颱移動開發。它並非簡單地將代碼“一次編寫,到處運行”,而是通過一係列成熟的技術和框架,允許開發者使用一套相對統一的代碼庫,來構建能夠原生運行在不同平颱上的應用程序。這其中蘊含的不僅僅是技術上的革新,更是對開發流程、團隊協作以及産品迭代策略的深刻重塑。 跨平颱開發的核心價值在於其效率的躍升。開發者可以投入精力學習和掌握一套核心技術棧,而不是分散在多個原生平颱上。這意味著更快的開發速度,更短的産品上市時間,以及更低的開發成本。對於初創企業而言,這意味著可以用更少的資金快速驗證市場,迅速迭代産品;對於大型企業而言,這意味著可以整閤開發資源,提高整體開發效能,將更多精力投入到業務邏輯和用戶體驗的創新上。 除瞭效率,一緻性的用戶體驗也是跨平颱開發的重要優勢。雖然原生開發能提供最貼近平颱特性的UI/UX,但優秀的跨平颱框架通過精心的設計和抽象,能夠幫助開發者構建齣視覺風格統一、交互邏輯一緻的應用,無論用戶身處何種設備。用戶不再需要為適應不同平颱而調整使用習慣,從而獲得更加流暢、愉悅的使用體驗。這種一緻性,對於建立品牌形象、提升用戶忠誠度具有不可估量的價值。 更進一步,跨平颱開發帶來的代碼復用和維護的簡便性,直接解決瞭原生開發中的痛點。當需要修復bug、增加新功能或適配新平颱特性時,開發者隻需在一套代碼庫中進行修改,然後重新編譯打包即可。這大大降低瞭維護成本,減少瞭因平颱差異引入的錯誤,確保瞭所有平颱上的應用都能同步更新,保持同步的競爭力。 在這個日新月異的軟件開發世界中,掌握跨平颱開發的精髓,意味著掌握瞭麵嚮未來的開發能力。這不僅是一項技術技能的提升,更是對整個軟件開發生態的深刻理解和積極擁抱。從技術選型、架構設計,到團隊組建、項目管理,每一次決策都將影響到産品的成敗。 理解跨平颱開發的真正意義,在於洞察其背後所驅動的數字化轉型的宏大敘事。在這個過程中,開發者不再僅僅是代碼的編寫者,更是數字解決方案的設計師和構建者。他們需要具備更廣闊的視野,理解不同平颱的技術特點,權衡各種技術方案的優劣,並根據實際業務需求做齣明智的選擇。 從宏觀視角來看,跨平颱開發是整個軟件行業嚮著更高效率、更低成本、更優體驗方嚮演進的必然結果。它打破瞭平颱壁壘,讓創新不再受限於特定的技術棧,而是能夠以更快的速度、更低的門檻觸達更廣泛的用戶群體。無論是對於個人開發者尋求職業突破,還是對於企業尋求業務增長,掌握跨平颱開發都將成為一項至關重要的能力。 因此,深入理解並精通跨平颱開發技術,便是站在瞭軟件開發的前沿,成為瞭驅動未來數字世界發展的關鍵力量。這不僅僅是對現有技術的掌握,更是對未來趨勢的預判與實踐。 我們生活在一個充滿無限可能性的時代,而跨平颱開發,正是釋放這些可能性的重要途徑。它賦予開發者更大的自由度,更強的能力,去創造齣觸及每一個角落、服務每一個用戶的卓越數字産品。擁抱跨平颱,就是擁抱軟件開發的未來。