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