關(guān)于我們
書(shū)單推薦
新書(shū)推薦
|
WCF服務(wù)編程
"本書(shū)介紹了基于WCF開(kāi)發(fā)面向服務(wù)應(yīng)用程序的主題和技能;闡述了如何使用其內(nèi)置的特性,如服務(wù)托管、實(shí)例管理、并發(fā)管理、事物、無(wú)連接隊(duì)列調(diào)用、安全和Windows Azure AppFabric 服務(wù)總線;介紹了.NET 4.6 和Service Fabric知識(shí)。此外,本書(shū)還包含許多有用的代碼、工具和幫助類(lèi),收集在名為ServiceModelEx里。它們可以用來(lái)提高代碼生成率和WCF服務(wù)的質(zhì)量。本書(shū)不僅介紹了WCF編程和相關(guān)系統(tǒng)的知識(shí),還介紹了相關(guān)的設(shè)計(jì)原則、提示、最佳實(shí)踐和誤區(qū),重點(diǎn)關(guān)注WCF的實(shí)際應(yīng)用。本書(shū)是一本關(guān)于現(xiàn)代軟件工程的圖書(shū),不僅會(huì)讓你成為一個(gè)WCF專(zhuān)家,更會(huì)讓你成為一名出色的軟件工程師。
"
適讀人群 :計(jì)算機(jī)程序員和計(jì)算機(jī)程序設(shè)計(jì)架構(gòu)師
本書(shū)介紹了關(guān)于WCF深入、詳細(xì)、系統(tǒng)的知識(shí),可以幫助我們學(xué)習(xí)并構(gòu)建可維護(hù)、可擴(kuò)展、可復(fù)用的應(yīng)用系統(tǒng)。本書(shū)通過(guò)告訴我們“為什么”以及“如何”使用WCF進(jìn)行開(kāi)發(fā)來(lái)幫助我們精通WCF編程,讓我們成長(zhǎng)為一名出色的軟件工程師。
在軟件歷史的長(zhǎng)河中,WCF逐漸成為前輩框架。2001年8月,我第一次了解到微軟公司在使用托管代碼重寫(xiě)COM+的工作細(xì)節(jié)。在2002年7月重新審訂C# 2.0戰(zhàn)略的時(shí)候,Remoting的經(jīng)理提出要以一種開(kāi)發(fā)人員實(shí)際使用的方式重寫(xiě)Remoting代碼。與此同時(shí),微軟公司也在忙于把新的Web Service安全規(guī)范引入ASMX堆棧,并且與其他公司一起積極起草新的Web Service規(guī)范。
2003年7月,我被授權(quán)參與一個(gè)新的事務(wù)性框架的研發(fā)工作,這個(gè)框架用來(lái)改進(jìn).NET事務(wù)編程。當(dāng)時(shí),還沒(méi)有一個(gè)高耦合的編程模型可以統(tǒng)一這些千差萬(wàn)別的技術(shù)。直到2003年年末,我接到一個(gè)私人邀請(qǐng),加入一個(gè)由許多行業(yè)專(zhuān)家組成的團(tuán)隊(duì)來(lái)參與審訂Indigo平臺(tái)的戰(zhàn)略設(shè)計(jì)。我所知道的一些最優(yōu)秀的人都是這個(gè)團(tuán)隊(duì)的成員。在此后的兩三年里,Indigo經(jīng)歷了三代編程模型。最終聲明式、終結(jié)點(diǎn)驅(qū)動(dòng)的對(duì)象模型于2005年初才初露端倪,2005年8月就基本定型,命名為Windows Communication Foundation(WCF)。WCF在2006年作為.NET 3.0的一部分發(fā)布出來(lái)。
在軟件集成領(lǐng)域,WCF就是巨人。它包含所有構(gòu)建現(xiàn)代軟件需要的正確元素、所有現(xiàn)代軟件需要的基礎(chǔ)模式,可擴(kuò)展、基于攔截的管道;它是未來(lái)Azure Service Fabric的基石,而且與Service Fabric完美集成。實(shí)際上,之前三個(gè)版本的圖書(shū)已經(jīng)介紹了實(shí)現(xiàn)Service Fabric的所有元素。因此,WCF至關(guān)重要。
WCF包含的幾方面內(nèi)容是今天唯一提供互操作性、生產(chǎn)效率和可擴(kuò)展性的技術(shù)。它就是終極互操作的解決方案,是一大串行業(yè)規(guī)范的集成。對(duì)分布式系統(tǒng)開(kāi)發(fā)人員來(lái)說(shuō),它是最容易實(shí)現(xiàn)遠(yuǎn)程調(diào)用和隊(duì)列調(diào)用的方式。對(duì)系統(tǒng)開(kāi)發(fā)人員來(lái)說(shuō),它是下一代面向生產(chǎn)力的代表,如事務(wù)和托管,它提供了許多現(xiàn)成的構(gòu)件。對(duì)應(yīng)用程序開(kāi)發(fā)人員來(lái)說(shuō),它就是結(jié)構(gòu)化應(yīng)用系統(tǒng)的聲明式的編程模型。對(duì)架構(gòu)師來(lái)說(shuō),它就是一個(gè)構(gòu)件面向服務(wù)應(yīng)用系統(tǒng)的工具。WCF事實(shí)上非常簡(jiǎn)單,它其實(shí)就是微軟各種通信技術(shù)的統(tǒng)一平臺(tái)。
個(gè)人認(rèn)為,WCF是下一代的開(kāi)發(fā)平臺(tái),并且被最大限度地集成到.NET中。拋開(kāi)應(yīng)用系統(tǒng)的類(lèi)型、大小或行業(yè)范圍,所有的.NET開(kāi)發(fā)人員都應(yīng)該使用WCF。WCF提供了一種方便、簡(jiǎn)潔的方式去生成符合設(shè)計(jì)原則的服務(wù)和應(yīng)用程序。設(shè)計(jì)WCF的目的是簡(jiǎn)化應(yīng)用程序的開(kāi)發(fā)和部署成本。WCF服務(wù)可用來(lái)構(gòu)建面向服務(wù)的應(yīng)用程序,從獨(dú)立的桌面應(yīng)用到基于Web的應(yīng)用和服務(wù),以及高端的企業(yè)應(yīng)用。
本書(shū)涵蓋了基于WCF開(kāi)發(fā)面向服務(wù)應(yīng)用程序的主題和技能,闡述了如何使用內(nèi)置的特性,如服務(wù)托管、實(shí)例管理、并發(fā)管理、事務(wù)、無(wú)連接隊(duì)列調(diào)用、安全和Windows Azure服務(wù)總線等。本書(shū)不僅告訴你如何使用這些特性,還告訴你為什么使用這些特性,以及特性設(shè)計(jì)背后的原因。你不僅會(huì)從中學(xué)習(xí)到WCF編程和相關(guān)系統(tǒng)的知識(shí),而且會(huì)了解相關(guān)的設(shè)計(jì)原則、提示、最佳實(shí)踐和誤區(qū)。我會(huì)從軟件工程的角度來(lái)介紹每個(gè)知識(shí)點(diǎn),因?yàn)槲业哪繕?biāo)不僅是讓你成為一個(gè)WCF專(zhuān)家,而且是讓你成為一名出色的軟件工程師。掌握了本書(shū)的精髓,你就可以開(kāi)發(fā)具有可維護(hù)性、可擴(kuò)展性、可復(fù)用性和高生產(chǎn)率的應(yīng)用程序。
《WCF服務(wù)編程》第四版也給了我一些機(jī)會(huì):首先,可以介紹WCF 4.6的新特性,如并行處理和配置簡(jiǎn)化;其次,可以介紹Azure Service Fabric,這是一個(gè)根本的顛覆性技術(shù),因?yàn)樗试S開(kāi)發(fā)人員構(gòu)建各種應(yīng)用,并統(tǒng)一開(kāi)發(fā)和運(yùn)營(yíng);最后,可以介紹我積累的多年的WCF編程技術(shù)、想法及幫助類(lèi),以及對(duì)前一版的一些改進(jìn)想法。我相信這些新的材料會(huì)使本書(shū)更具價(jià)值。
本書(shū)沒(méi)有介紹WCF的實(shí)現(xiàn)細(xì)節(jié),而是重點(diǎn)關(guān)注WCF的實(shí)際應(yīng)用:如何使用WCF技術(shù),如何在已有的設(shè)計(jì)和編程模型之間選擇。本書(shū)盡量介紹.NET 4.6和Service Fabric的知識(shí),當(dāng)然從某種程度上說(shuō)它也是一本高級(jí)C#編程書(shū)。
此外,本書(shū)還包含許多有用的代碼、工具和我編寫(xiě)的幫助類(lèi),收集在ServiceModelEx里。我的工具、幫助類(lèi)及屬性可以提高你的代碼生產(chǎn)率和WCF服務(wù)的質(zhì)量。ServiceModelEx是一個(gè)小的框架,寄宿于WCF內(nèi),它提供了一些監(jiān)測(cè)功能,簡(jiǎn)化了一些代碼工作。本書(shū)介紹的內(nèi)容主要是關(guān)于原生態(tài)WCF的工具、想法及技巧。我的框架也演示了如何擴(kuò)展WCF。許多讀者告訴我,除了本書(shū)的內(nèi)容介紹之外,ServiceModelEx是最有價(jià)值的部分。我的建議是,讀者不必使用ServiceModelEx全部的代碼。實(shí)際上,ServiceModelEx是一個(gè)WCF強(qiáng)大工具集,你可以獨(dú)立地使用其中每個(gè)輔助類(lèi)、工具或框架,它們之間的內(nèi)在聯(lián)系很少。
每個(gè)章節(jié)討論一個(gè)主題,并進(jìn)行深入分析。然而,每個(gè)章節(jié)都依賴(lài)于之前的章節(jié),所以建議你按照順序?qū)W習(xí)。
Juval Löwy是IDesign的創(chuàng)始人,也是專(zhuān)注于系統(tǒng)與項(xiàng)目設(shè)計(jì)的軟件架構(gòu)師。
Juval 已經(jīng)培養(yǎng)了全球各地?cái)?shù)百位架構(gòu)師,分享他在軟件架構(gòu)、項(xiàng)目設(shè)計(jì)、系統(tǒng)開(kāi)發(fā)領(lǐng)域的獨(dú)到見(jiàn)解和知識(shí)技巧。Juval是微軟硅谷的區(qū)域總監(jiān),參與過(guò)微軟內(nèi)部C#, WCF等相關(guān)技術(shù)的設(shè)計(jì)評(píng)審工作。微軟授予他“軟件傳奇” (Software Legend)稱(chēng)號(hào)以表彰其卓越的貢獻(xiàn),他是世界di.ji的.NET專(zhuān)家之一和行業(yè)領(lǐng)導(dǎo)者。
Michael Montgomery是IDesign的軟件架構(gòu)師,專(zhuān)注于.NET分布式系統(tǒng)設(shè)計(jì)與微服務(wù)架構(gòu)開(kāi)發(fā)技術(shù)。他指導(dǎo)過(guò)許多開(kāi)發(fā)者使用IDesign的方法成功按時(shí)、按預(yù)算、按質(zhì)量交付過(guò)系統(tǒng)。他發(fā)表了許多軟件架構(gòu)領(lǐng)域的文章,分享自己獨(dú)特的觀點(diǎn)。他還經(jīng)常在各種.NET技術(shù)大會(huì)上演講。
第1章 WCF基礎(chǔ) 1
什么是WCF 1
服務(wù) 2
服務(wù)的執(zhí)行邊界 3
WCF與位置透明度 4
地址 4
TCP地址 5
HTTP地址 6
IPC地址 6
MSMQ地址 6
WebSocket地址 7
UDP地址 7
契約 7
服務(wù)契約 8
托管 11
IIS托管 12
自托管 13
WAS托管 18
在IIS/WAS里自定義托管 18
選擇宿主 19
綁定 20
常用綁定 21
選擇綁定 22
其他綁定 23
使用綁定 25
終結(jié)點(diǎn) 25
以管理方式配置終結(jié)點(diǎn) 26
以編程方式配置終結(jié)點(diǎn) 30
默認(rèn)終結(jié)點(diǎn) 31
Configure()方法 34
元數(shù)據(jù)交換 36
基于HTTP-GET的元數(shù)據(jù) 37
元數(shù)據(jù)交換終結(jié)點(diǎn) 40
元數(shù)據(jù)瀏覽器 46
行為配置的更多內(nèi)容 48
客戶端編程 49
生成代理 50
以管理方式配置客戶端 54
以編程方式配置客戶端 59
WCF提供的測(cè)試客戶端 60
編程方式配置VS管理方式配置 62
配置策略 63
WCF體系結(jié)構(gòu) 63
宿主體系結(jié)構(gòu) 64
使用通道 65
InProcFactory類(lèi) 67
傳輸會(huì)話層 70
傳輸會(huì)話與綁定 71
傳輸會(huì)話終止 71
可靠性 72
綁定、可靠性和有序消息 73
配置可靠性 73
必備有序傳遞 75
第2章 服務(wù)契約 77
操作重載 77
契約繼承 79
客戶端契約層級(jí) 80
服務(wù)契約分解與設(shè)計(jì) 84
契約分解 84
分解準(zhǔn)則 86
契約查詢 88
以編程方式處理元數(shù)據(jù) 88
第3章 數(shù)據(jù)契約 95
序列化 95
.NET序列化 96
序列化的數(shù)據(jù)契約 100
數(shù)據(jù)契約特性 101
導(dǎo)入數(shù)據(jù)契約 104
數(shù)據(jù)契約與Serializable特性 106
推斷數(shù)據(jù)契約 107
組合數(shù)據(jù)契約 109
數(shù)據(jù)契約事件 110
共享數(shù)據(jù)契約 112
數(shù)據(jù)契約層級(jí) 113
已知類(lèi)型 114
服務(wù)已知類(lèi)型 116
多個(gè)已知類(lèi)型 117
配置已知類(lèi)型 118
數(shù)據(jù)契約解析器 119
Objects與接口 129
數(shù)據(jù)契約等效性 131
序列化順序 132
版本控制 134
新增成員 135
缺失成員 135
版本控制往返 139
數(shù)據(jù)契約分解與設(shè)計(jì) 141
數(shù)據(jù)契約設(shè)計(jì) 142
數(shù)據(jù)契約分解 142
操作分解 151
數(shù)據(jù)傳輸對(duì)象(DTO)模式 153
務(wù)實(shí)的模式使用 154
枚舉 154
委托與數(shù)據(jù)契約 156
泛型 157
集合 160
具體集合類(lèi)型 161
自定義集合 163
CollectionDataContract特性 163
引用集合 165
字典集合 165
第4章 實(shí)例管理 169
行為 169
單調(diào)服務(wù) 170
單調(diào)服務(wù)的優(yōu)勢(shì) 171
配置單調(diào)服務(wù) 172
單調(diào)服務(wù)與傳輸會(huì)話 173
設(shè)計(jì)單調(diào)服務(wù) 173
選擇單調(diào)服務(wù) 176
會(huì)話服務(wù) 176
配置私有會(huì)話 176
會(huì)話與可靠性 181
會(huì)話ID 182
會(huì)話終止 183
單例服務(wù) 184
初始化單例服務(wù) 185
選擇單例服務(wù) 188
操作分界 188
實(shí)例停止 190
配置為ReleaseInstanceMode.None 192
配置為ReleaseInstanceMode.BeforeCall 193
配置為ReleaseInstanceMode.AfterCall 193
配置為ReleaseInstanceMode.BeforeAndAfterCall 193
顯式停止 194
使用實(shí)例停止 195
持久化服務(wù) 195
持久化服務(wù)與實(shí)例管理模式 196
實(shí)例ID與持久化存儲(chǔ)區(qū) 196
顯式實(shí)例ID 197
消息頭里的實(shí)例ID 199
支持實(shí)例ID的上下文綁定 202
自動(dòng)持久化行為 207
限流 213
配置限流 215
第5章 操作 221
請(qǐng)求/應(yīng)答操作 221
單向操作 221
配置單向操作 222
單向操作與可靠性 223
單向操作與會(huì)話服務(wù) 223
單向操作和異常 224
回調(diào)操作 225
回調(diào)契約 226
客戶端回調(diào)設(shè)置 227
服務(wù)端的回調(diào)調(diào)用 230
回調(diào)連接管理 233
雙向代理與類(lèi)型安全 235
回調(diào)契約層級(jí) 240
事件 241
流操作 245
I/O流 245
流操作與綁定 246
流操作與傳輸 247
第6章 錯(cuò)誤 249
錯(cuò)誤隔離和解耦 249
錯(cuò)誤屏蔽 249
通道故障 250
錯(cuò)誤傳播 254
錯(cuò)誤契約 256
錯(cuò)誤調(diào)試 259
錯(cuò)誤與回調(diào) 265
錯(cuò)誤處理擴(kuò)展 268
提供錯(cuò)誤 269
處理錯(cuò)誤 272
安裝錯(cuò)誤處理擴(kuò)展 274
宿主與錯(cuò)誤擴(kuò)展 277
回調(diào)與錯(cuò)誤擴(kuò)展 280
第7章 事務(wù) 283
恢復(fù)的挑戰(zhàn) 283
事務(wù) 284
事務(wù)資源 284
事務(wù)屬性 285
事務(wù)管理 286
資源管理器 289
事務(wù)傳播 289
事務(wù)流與綁定 289
事務(wù)流與操作契約 290
單調(diào) 292
事務(wù)協(xié)議與管理器 293
協(xié)議與綁定 293
事務(wù)管理器 294
事務(wù)管理器提升 296
Transaction類(lèi) 297
環(huán)境事務(wù) 298
本地事務(wù)VS分布式事務(wù) 298
服務(wù)事務(wù)編程 299
設(shè)置環(huán)境事務(wù) 299
事務(wù)傳播模式 301
投票與提交 308
事務(wù)隔離 311
事務(wù)超時(shí) 313
明確使用事務(wù)編程 314
TransactionScope類(lèi) 314
事務(wù)流管理 316
非服務(wù)客戶端 323
服務(wù)狀態(tài)管理 324
事務(wù)邊界 325
實(shí)例管理與事務(wù) 325
單調(diào)事務(wù)服務(wù) 326
會(huì)話事務(wù)服務(wù) 329
事務(wù)持久化服務(wù) 342
事務(wù)行為 344
事務(wù)單例服務(wù) 349
實(shí)例模式與事務(wù) 352
回調(diào) 353
回調(diào)事務(wù)模式 354
回調(diào)投票 356
使用事務(wù)型回調(diào) 356
第8章 并發(fā)管理 359
實(shí)例管理與并發(fā) 359
服務(wù)并發(fā)模式 360
ConcurrencyMode.Single 360
ConcurrencyMode.Multiple 361
ConcurrencyMode.Reentrant 364
實(shí)例與并發(fā)訪問(wèn) 366
單調(diào)服務(wù) 366
會(huì)話與單例服務(wù) 367
資源與服務(wù) 368
訪問(wèn)死鎖 368
避免死鎖 369
資源同步上下文 370
.NET同步上下文 370
UI同步上下文 373
服務(wù)同步上下文 378
托管在UI線程上 379
作為服務(wù) 384
UI線程與并發(fā)管理 387
自定義服務(wù)同步上下文 389
線程池同步化器 389
替換I/O完成線程池 394
線程關(guān)聯(lián)性 395
優(yōu)先級(jí)處理 397
回調(diào)與客戶端安全 400
使用ConcurrencyMode.Single回調(diào) 401
使用ConcurrencyMode.Multiple回調(diào) 402
使用ConcurrencyMode.Reentrant回調(diào) 402
回調(diào)與同步上下文 403
回調(diào)與UI同步上下文 403
回調(diào)自定義上下文 406
異步調(diào)用 410
異步機(jī)制的需求 410
基于代理的異步調(diào)用 411
異步調(diào)用 413
輪詢或等待完成 415
延續(xù) 417
延續(xù)與線程安全 420
延續(xù)同步上下文 421
單向異步調(diào)用 427
異步錯(cuò)誤處理 430
異步調(diào)用與事務(wù) 433
同步與異步調(diào)用 433
異步服務(wù)操作 434
第9章 隊(duì)列服務(wù) 455
無(wú)連接的服務(wù)與客戶端 455
隊(duì)列調(diào)用 456
隊(duì)列調(diào)用架構(gòu) 456
隊(duì)列契約 457
配置與安裝 458
事務(wù) 464
傳遞與回放 464
事務(wù)配置 466
非事務(wù)性隊(duì)列 469
實(shí)例管理 469
單調(diào)隊(duì)列服務(wù) 470
會(huì)話隊(duì)列服務(wù) 471
單例服務(wù) 475
并發(fā)管理 476
限流 476
傳送失敗 477
死信隊(duì)列 478
生存時(shí)間 478
配置死信隊(duì)列 479
處理死信隊(duì)列 480
回放失敗 484
有害消息 485
里的有害消息處理 486
隊(duì)列調(diào)用與連接調(diào)用 490
要求隊(duì)列化 491
應(yīng)答服務(wù) 492
設(shè)計(jì)應(yīng)答服務(wù)契約 493
客戶端編程 496
隊(duì)列服務(wù)端編程 499
應(yīng)答服務(wù)端編程 501
事務(wù) 502
HTTP橋 505
設(shè)計(jì)橋 505
事務(wù)配置 506
服務(wù)端配置 506
客戶端配置 508
第10章 安全 511
驗(yàn)證 511
授權(quán) 512
傳輸安全 512
傳輸安全模式 513
傳輸安全模式配置 514
Transport安全和憑據(jù) 517
Message安全和憑據(jù) 517
身份標(biāo)識(shí)管理 518
整體策略 518
場(chǎng)景驅(qū)動(dòng)方法 519
Intranet應(yīng)用場(chǎng)景 520
保護(hù)Intranet綁定 520
約束消息保護(hù) 526
身份驗(yàn)證 528
身份標(biāo)識(shí) 530
安全調(diào)用上下文 531
模擬 533
授權(quán) 540
身份標(biāo)識(shí)管理 545
回調(diào) 546
Internet應(yīng)用場(chǎng)景 547
安全I(xiàn)nternet綁定 547
消息保護(hù) 549
驗(yàn)證 553
使用Windows憑據(jù) 555
使用ASP.NET provider 556
標(biāo)識(shí)管理 564
B2B應(yīng)用場(chǎng)景 565
保護(hù)B2B綁定 565
驗(yàn)證 566
授權(quán) 568
身份標(biāo)識(shí)管理 569
宿主安全配置 570
匿名應(yīng)用場(chǎng)景 570
確保匿名綁定的安全 571
驗(yàn)證 571
授權(quán) 571
標(biāo)識(shí)管理 571
回調(diào) 572
無(wú)安全場(chǎng)景 572
無(wú)安全的綁定 572
驗(yàn)證 573
授權(quán) 573
標(biāo)識(shí)管理 573
回調(diào) 573
場(chǎng)景總結(jié) 574
聲明式安全框架 574
SecurityBehaviorAttribute 575
宿主端的聲明式安全 582
客戶端的聲明式安全 583
安全審計(jì) 590
配置安全審計(jì) 591
聲明式安全審計(jì) 593
第11章 Azure Service Fabric微服務(wù)平臺(tái) 595
為什么需要Azure Service Fabric 595
集成平臺(tái) 596
設(shè)計(jì)一致性 596
編程模型一致性 596
未來(lái)兼容 596
為Service Fabric作準(zhǔn)備 598
ServiceModelEx.ServiceFabric 598
配置Service Fabric 599
IT運(yùn)維 599
部署 600
兩者兼?zhèn)?601
編寫(xiě)Service Fabric 606
服務(wù)編程模型 606
可靠服務(wù) 607
可靠角色 614
狀態(tài)管理 617
托管 623
客戶端編程模型 624
建模Service Fabric 633
建模方法 633
建?煽糠⻊(wù) 635
建?煽拷巧 637
建模托管宿主 645
測(cè)試 646
附錄A 面向服務(wù)概述 653
附錄B 消息頭與上下文 665
附錄C 服務(wù)發(fā)現(xiàn) 687
附錄D 發(fā)布-訂閱服務(wù) 741
附錄E 通用攔截器 765
附錄F WCF編碼規(guī)范 781
附錄G ServiceModelEx分類(lèi)
你還可能感興趣
我要評(píng)論
|