预购商品
书目分类
特别推荐
複雜工程問題的解決要求學生具備整合運用用戶端開發技能棧、伺服器端開發技能棧、軟體工程技能棧、人機交互技能棧等多個技能棧的能力。為培養學生多技能棧整合運用的能力,本書介紹基於Xamarin.Forms框架的面向iOS、Android,以及Windows平臺的用戶端伺服器端Xamarin全棧開發技術,涵蓋語言特性、設計思想、技術技巧、測試方法等內容,並通過一個完整的實例連接知識與技能。本書尤其注重多種技術棧的有機融合,為培養解決複雜工程問題的能力提供完整的支持。 本書面向具有電腦專業課基礎的讀者。本書讀者應至少掌握一門程式設計語言,並能獨立完成簡單的開發任務。本書可作為全棧開發技術相關課程的本科生教材,也可以作為基於Xamarin.Forms框架的全棧開發入門參考書。
第一部分 基礎與用戶 第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 Xamarin全棧開發技術與實踐(微課版)目錄第二部分框架與方法 第7章 踏上軟體架構之路53 7.1ModelViewViewModel架構模式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: 使用MasterDetail專案範本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.1MasterDetail範本的頁面導航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 iViewModel215 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實現收藏IService250 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.5Web服務: 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
張引 男,1985年5月生於遼寧瀋陽。現就職東北大學電腦科學與工程學院。資訊搜索領域副教授,主要從事搜索學習相關研究。發表SCI論文近十篇。獲遼寧省科技進步二等獎一次。
客服公告
热门活动
订阅电子报