Xamarin 全棧開發技術與實踐 (微課版)

張引、趙玉麗、張斌、高克寧

  • 出版商: 清華大學
  • 出版日期: 2021-12-01
  • 售價: $474
  • 貴賓價: 9.5$450
  • 語言: 簡體中文
  • 頁數: 344
  • 裝訂: 平裝
  • ISBN: 7302591539
  • ISBN-13: 9787302591535
  • 相關分類: Cross-Platform軟體工程
  • 立即出貨

  • Xamarin 全棧開發技術與實踐 (微課版)-preview-1
  • Xamarin 全棧開發技術與實踐 (微課版)-preview-2
  • Xamarin 全棧開發技術與實踐 (微課版)-preview-3
Xamarin 全棧開發技術與實踐 (微課版)-preview-1

買這商品的人也買了...

商品描述

復雜工程問題的解決要求學生具備整合運用客戶端開發技能棧、服務器端開發技能棧、軟件工程技能棧、人機交互技能棧等多個技能棧的能力。為培養學生多技能棧整合運用的能力,本書介紹基於Xamarin.Forms框架的面向iOS、Android,以及Windows平臺的客戶端服務器端Xamarin全棧開發技術,涵蓋語言特性、設計思想、技術技巧、測試方法等內容,並通過一個完整的實例連接全部知識與技能。本書尤其註重多種技術棧的有機融合,為培養解決復雜工程問題的能力提供完整的支持。 本書面向具有一定電腦專業課基礎的讀者。本書讀者應至少掌握一門編程語言,並能獨立完成簡單的開發任務。本書可作為全棧開發技術相關課程的本科生教材,也可以作為基於Xamarin.Forms框架的全棧開發入門參考書。

作者簡介

張引,男,1985年5月生於遼寧瀋陽。現就職東北大學計算機科學與工程學院。信息搜索領域副教授,主要從事搜索學習相關研究。發表SCI論文近十篇。獲遼寧省科技進步二等獎一次。

目錄大綱

第一部分基礎與用戶
第1章馬上開始3
1.1系統要求(簡化版)3
1.2下載Visual Studio Community3
1.3安裝Visual Studio Community4
1.4註冊、下載並安裝ReSharper4
1.5安裝Android Studio5
1.6Hello World!6
1.7背景與概念8
1.8系統要求(完整版)9
1.9動手做10

第2章認識一批控件11
2.1網格佈局控件Grid11
2.2線性佈局控件StackLayout13
2.3滾動視圖控件ScrollView14
2.4超鏈接按鈕HyperlinkButton14
2.5彈出信息DisplayAlert16
2.6開關控件Switch16
2.7滑塊控件Slider17
2.8控件使用的一般規律18
2.9動手做19

第3章尋找用戶20
3.1重視項目問題的質量20
3.2“認真地”觀察用戶: 使用5W方法22
3.3進一步了解用戶: 面對面訪談24
3.4同理心25
3.5奶爸F的觀察與訪談總結25
3.6動手做26
3.7給PBL教師的建議26

第4章再認識一批控件28
4.1響應式設計與VisualStateManager28
4.2列表視圖控件ListView31
4.3動手做34
4.4給PBL教師的建議34

第5章提出並評價界面設計36
5.1繪製界面設計36
5.2形成操作動線38
5.3評價界面設計39
5.4動手做40

第6章開啟數據管理之門41
6.1管理少量本地數據: 偏好存儲42
6.2管理大量本地數據: 數據庫42
6.3訪問遠程數據: Web服務46
6.4是否優雅47
6.5動手做49

第二部分框架與方法
第7章踏上軟件架構之路53
7.1ModelViewViewModel架構模式53
7.2View54
7.3ViewModel55
7.3.1屬性56
7.3.2Command(命令)58
7.4ViewModelLocator59
7.5App.xaml61
7.6再次審視MVVM模式62
7.7動手做63

第8章MVVM + IService架構64
8.1Model64
8.2IService65
8.3在ViewModel中使用IService66
8.4實現IService68
8.5在ViewModel中獲得IService實例69
8.6審視MVVM + IService架構71
8.7動手做72
8.8給PBL教師的建議72

第9章編碼規範73
9.1命名規範73
9.2排版規範75
9.3文檔註釋規範76
9.4動手做78
9.5給PBL教師的建議78

第10章重新審視數據庫79
10.1開啟Dpx: 使用MasterDetail項目模板79
10.2選擇“好的”數據庫81
10.3提出“好的”數據庫設計83
10.4詩詞數據Model: Poetry類84
10.5詩詞數據管理IService: IPoetryStorage86
10.6實現IPoetryStorage87
10.6.1連接到數據庫: 通過Connection屬性87
10.6.2實現GetPoetryAsync函數: 語言集成查詢LINQ88
10.6.3實現GetPoetriesAsync函數: LINQ翻頁89
10.6.4實現InitializeAsync函數: 嵌入式資源90
10.6.5實現Initialized函數91
10.7反思數據庫91
10.8動手做92
10.9給PBL教師的建議92

第11章測試代碼94
11.1Hello Unit Test World!94
11.2Mocking: 模擬任意接口的實現96
11.3決定測試內容97
11.4測試PoetryStorage98
11.5為測試優化設計99
11.6再次測試PoetryStorage101
11.6.1測試Initialized函數: 驗證Mocking調用101
11.6.2測試InitializeAsync函數: 清除副作用102
11.6.3測試GetPoetryAsync函數: 再次調整設計103
11.6.4測試GetPoetriesAsync函數: 初識動態LINQ105
11.7反思單元測試106
11.8動手做107
11.9給PBL教師的建議107

第12章實戰級數據庫View與ViewModel109
12.1搜索結果頁View: 設計時數據109
12.2搜索結果頁ViewModel111
12.2.1無限滾動與InfiniteScrollCollection111
12.2.2重置搜索結果與PageAppearingCommand114
12.3單元測試搜索結果頁ViewModel115
12.3.1為ViewModel準備IService115
12.3.2測試Command: 使用Command函數117
12.3.3測試可綁定屬性: 監聽PropertyChanged事件118
12.4連接View與ViewModel119
12.4.1ViewModelLocator與App.xaml120
12.4.2擴展控件的功能: 使用Behavior121
12.5實戰的反思123
12.6動手做124
12.7給PBL教師的建議124

第13章源代碼管理、分支開發與Git125
13.1準備工作125
13.2將項目發佈到Gitee125
13.3同步更改127
13.4解決衝突128
13.5撤銷更改130
13.6分支開發131
13.7關於Git133

第14章今日推薦頁ViewModel與IService: 從需求到設計135
14.1確定ViewModel的數據與功能135
14.2審視相關的頁面137
14.3設計IService138
14.4反思設計140
14.5動手做141
14.6給PBL教師的建議141

第15章實戰分支開發142
15.1今日推薦頁View分支142
15.1.1實踐VisualStateManager142
15.1.2顯示背景圖片: 使用綁定值轉換器IValueConverter143
15.1.3用戶界面的平台差異: 使用OnPlatform146
15.2今日推薦頁ViewModel分支147
15.2.1初始化ViewModel: 使用PageAppearingCommand147
15.2.2背景圖片與詩詞推薦的同步初始化: 並行執行代碼150
15.3單元測試今日推薦頁ViewModel: 測試並行執行的代碼152
15.4反思分支開發153
15.5動手做154
15.6給PBL教師的建議154

第16章實戰級Web服務客戶端155
16.1今日詩詞Web服務客戶端155
16.1.1構建穩定的Web服務客戶端: 使用using與異常處理155
16.1.2警告服務IAlertService: 為IService服務的IService157
16.1.3實現警告服務IAlertService: MVVM + IService架構的分層視圖158
16.1.4緩存訪問Token: 內存存儲兩級緩存策略161
16.1.5設置訪問Token: 使用HttpRequestHeaders163
16.1.6準備備份方案163
16.2模仿Web服務165
16.3單元測試Web服務客戶端167
16.4反思Web服務客戶端168
16.5動手做168
16.6給PBL教師的建議168

第17章依賴注入170
17.1新建對象的迷思170
17.2使用工廠函數創建對象172
17.3使用依賴注入容器創建對象174
17.4反思依賴注入176

第三部分深入客戶端
第18章文件的下載與緩存179
18.1下載文件179
18.2檢查文件更新180
18.3設計文件緩存182
18.4實現文件緩存184
18.5文件的單元測試186
18.6反思文件操作187

第19章頁面導航189
19.1MasterDetail模板的頁面導航189
19.1.1主從列表導航190
19.1.2主從菜單導航191
19.2設計導航服務194
19.3實現導航服務195
19.3.1實現內容導航服務195
19.3.2實現內容頁面激活服務: 使用字典緩存對象197
19.3.3實現根頁面激活服務: 工廠函數的優勢199
19.3.4實現根導航服務: 重置導航歷史199
19.4添加並導航到推薦詳情頁201
19.4.1推薦詳情頁ViewModel: 共用ViewModel201
19.4.2推薦詳情頁View202
19.5反思頁面導航204
19.6動手做204
19.7給PBL教師的建議204

第20章帶參數的頁面導航206
20.1添加詩詞詳情頁206
20.2實現帶參數導航207
20.2.1自定義可綁定屬性209
20.2.2綁定到自定義屬性210
20.2.3賦值到自定義屬性211
20.3導航到詩詞詳情頁212
20.3.1確定ListView的點擊項: 使用事件參數轉換器212
20.3.2傳遞點擊項到Command: 使用帶參數的Command213
20.4反思帶參數導航214

第21章ViewModel in ViewModel215
21.1來自詩詞搜索頁的挑戰: “大小”ViewModel215
21.1.1“小”ViewModel216
21.1.2“大”ViewModel218
21.2單元測試“大小ViewModel”: 使用虛函數220
21.3添加詩詞搜索頁221
21.4動手做222
21.5給PBL教師的建議222

第22章LINQ與動態查詢223
22.1深入LINQ223
22.2再識動態LINQ225
22.2.1從FilterViewModel生成查詢條件226
22.2.2組合多個查詢條件227
22.3單元測試動態LINQ: 截獲模仿函數的參數228
22.4更新搜索結果頁230
22.5反思LINQ230
22.6動手做231

第23章頁面導航的更多細節232
23.1傳遞搜索條件的第二種方案232
23.1.1更新推薦詳情頁ViewModel233
23.1.2更新詩詞搜索頁234
23.2更新菜單頁235
23.3初始化頁236
23.3.1添加初始化頁236
23.3.2導航到初始化頁238
23.4動手做239
23.5給PBL教師的建議239

第24章消息機制240
24.1使用返回值傳遞信息240
24.2使用事件傳遞信息241
24.2.1定義事件241
24.2.2關聯事件處理函數242
24.2.3觸發事件242
24.3使用消息機制傳遞信息244
24.3.1定義消息244
24.3.2監聽消息244
24.3.3發布消息245
24.4使用消息機制更新導航菜單245
24.4.1定義根導航消息245
24.4.2監聽根導航消息245
24.4.3發布根導航消息246
24.5反思消息機制246
24.6動手做247
24.7給PBL教師的建議247

第25章跨頁面同步數據248
25.1收藏Model與IService248
25.1.1設計收藏Model248
25.1.2設計收藏IService249
25.1.3實現收藏IService

250
25.2詩詞收藏頁ViewModel與View250
25.3更新詩詞詳情頁252
25.3.1讀取詩詞收藏狀態253
25.3.2更新詩詞收藏狀態254
25.4同步詩詞詳情頁與詩詞收藏頁256
25.4.1定義收藏存儲已更新事件256
25.4.2處理收藏存儲已更新事件257
25.4.3觸發收藏存儲已更新事件258
25.5反思跨頁面同步數據258
25.6動手做259
25.7給PBL教師的建議259

第26章面向數據同步的設計260
26.1數據同步260
26.2為同步修改設計261
26.2.1修改Model261
26.2.2修改IService與ViewModel261
26.3同步IService263
26.3.1設計同步IService263
26.3.2實現同步IService266
26.4反思數據同步269
26.5給PBL教師的建議270

第27章與OneDrive同步271
27.1為什麼是OneDrive271
27.2準備工作272
27.2.1釐清概念272
27.2.2註冊客戶端ID273
27.2.3準備集成Azure AD身份驗證273
27.3實現OneDrive遠程收藏存儲274
27.3.1登錄與註銷274
27.3.2上傳與下載275
27.4實現數據同步頁277
27.4.1數據同步頁ViewModel277
27.4.2數據同步頁View278
27.5再次反思設計278
27.6給PBL教師的建議279

第四部分服務器端開發
第28章選擇服務器端技術方案283
28.1自有服務器 VS 雲服務器: 選擇基礎設施283
28.2自建平台 VS 雲平台: 選擇開發與部署平台284
28.3更加簡便的方法285
28.4其他可選項286
28.5Hello Functions287
28.6反思服務器端技術選型288
28.7動手做288
28.8給PBL教師的建議288

第29章服務器端身份驗證289
29.1選擇服務器端身份驗證方案289
29.2Auth0的身份驗證過程290
29.3服務器端身份驗證IService292
29.3.1設計身份驗證IService292
29.3.2實現身份驗證IService292
29.4設計遠程收藏存儲Web服務294
29.5首個Web服務: Ping295
29.6動手做296

第30章客戶端身份驗證297
30.1設計客戶端身份驗證IService297
30.2實現客戶端身份驗證IService298
30.3添加Azure收藏存儲299
30.3.1實現SignInAsync函數299
30.3.2實現SignOutAsync函數300
30.3.3實現IsSignedInAsync函數300
30.4更新數據同步頁303
30.5繼續實現客戶端身份驗證IService303
30.6反思客戶端身份驗證304
30.7動手做305

第31章服務器端授權306
31.1設計服務器端授權IService306
31.2為遠程收藏存儲Web服務選擇數據庫307
31.2.1要存儲的數據307
31.2.2可用的存儲服務307
31.3實現授權IService: 使用Azure Table Storage308
31.3.1編輯Table Storage數據308
31.3.2連接到Table Storage308
31.3.3讀取Table Storage數據309
31.3.4為Ping Web服務添加授權310
31.4反思服務器端授權310
31.5動手做311

第32章緩存訪問Token312
32.1設計Token緩存IService312
32.2實現Token緩存IService313
32.2.1實現GetAsync函數313
32.2.2實現SetAsync函數314
32.3更新AuthenticationService315
32.4動手做315

第33章上傳與下載Web服務316
33.1服務器端收藏存儲316
33.1.1設計服務器端收藏存儲IService316
33.1.2實現服務器端收藏存儲IService317
33.2下載Web服務318
33.3上傳Web服務320
33.4更新客戶端AzureFavoriteStorage321
33.5清理工作323

第34章下一步的學習324