出版時間:2011-10 出版社:清華大學出版社 作者:[美]Pablo Cibraro,Kurt Claeys,Fabio Cozzolino 頁數(shù):423 譯者:吳文國
Tag標簽:無
內容概要
本書討論基于.NET 4.0架構的WCF(Windows Communication
Foundation)J]艮務編程技術。WCF是.NET架構中的技術,用來創(chuàng)建面向服務的應用程序、交換不同通信方案中的消息,以及執(zhí)行由服務操作生成的工作流。通過學習本書,讀者將掌握面向服務的基本原理,學習通信模式和發(fā)現(xiàn)如何顯式定義業(yè)務流程。讀者還將學習如何使用這些技術的不同部分來實現(xiàn)上述功能,并清晰地理解WCF
4的不同組件是如何相互支撐、協(xié)作,成為一個綜合框架的,進而支持企業(yè)級分布式應用程序的各個方面。除了介紹WCF技術外,本書還采取了一種實用的講法,介紹了3個案例(面向服務、通信和業(yè)務流程)并逐步實現(xiàn)了它們。本書將引導讀者如何將WCF和Visual
Studi0工具用于實際開發(fā)的各個方面。
在構建WCF 4知識體系的過程中,讀者將掌握如何有效地利用Visual Studi0
2010,以構建能夠最大化利用WCF 4新增功能的解決方案。
讀者將學習如何創(chuàng)建應用程序(作為開發(fā)人員和架構師),如何把這些應用程序集成為WCF
4中新的編程范式。讀者將學習如何用建立在WCF技術和.NET服務之上的新架構模式創(chuàng)建一個解決方案,將學習如何解決在實現(xiàn)WCF
4項目所需要的新編程范式和新結構風格的過程中遇到的實際問題。本書中介紹的實例決不是簡單的“hello
world”示例,而是引導讀者如何建立架構正確的解決方案,并向讀者展示最佳的編程風格。
本書4位作者都具有豐富的實際開發(fā)經(jīng)驗。在日常的開發(fā)工作中他們都曾遇到過這些問題,并用最佳的指導和實踐提出了切實可行的解決方法。他們把各自的實際經(jīng)驗融入到了本書中。
作者簡介
作者:(美國)西布拉奧(Pablo Cibraro) (美國)克萊斯(Krut Claeys) (美國)科佐利諾(Fabio Cozzolino) (美國)格拉布納(Johann Grabner) 譯者:吳文國 西布拉奧(Cibraro P.),是一位企業(yè)架構師、Tellago地區(qū)的CTO。 克萊斯(Claeys K.),是.NET企業(yè)級應用程序架構師和培訓師,熱衷于用WCF實現(xiàn)集成,擁有MCT、MCSD認證。 科佐利諾(Cozzolino F.),是FimeSan公司的軟件架構師、分析師和開發(fā)人員。 格拉布納(Grabner J.)是微軟Learning Partners項目的自由培訓師。
書籍目錄
目 錄
第1章 設計原理與設計模式1
1.1 SOA簡介1
1.2 SOA架構的4條原則3
1.2.1 邊界顯式定義3
1.2.2 服務自動化3
1.2.3 服務共享的是模式和契約,
而不是類3
1.2.4 基于策略的服務兼容性4
1.3 服務的內部結構4
1.4 組織業(yè)務流程中的服務7
1.5 SOA的底層技術7
1.5.1 SOAP8
1.5.2 WS -* Protocols8
1.5.3 WSDL8
1.6 契約優(yōu)先原則9
1.7 WCF和.NET服務如何
實現(xiàn)SOA模式10
1.7.1 模式10
1.7.2 解耦契約:接口與實現(xiàn)10
1.7.3 代理模式11
1.7.4 OperationContext模式11
1.7.5 并發(fā)契約11
1.7.6 數(shù)據(jù)保密性12
1.7.7 Web服務原子事務12
1.7.8 會話外觀12
1.7.9 異常保護12
1.8 通信與集成模式13
1.8.1 集成模式14
1.8.2 消息交換模式16
1.8.3 消息模式22
1.9 業(yè)務流程模式26
1.9.1 流程管理器26
1.9.2 在工作流聲明中的模式28
第2章 服務契約與數(shù)據(jù)契約31
2.1 服務契約32
2.2 數(shù)據(jù)契約32
2.3 消息契約32
2.4 契約與代碼32
2.5 汽車租賃服務——實現(xiàn)示例33
2.5.1 步驟1:定義服務契約33
2.5.2 步驟2:提取服務元數(shù)據(jù)34
2.3.3 步驟3:服務的實現(xiàn)38
2.5.4 步驟4:生成客戶端代碼39
2.5.5 [ServiceContract]和
[OperationContract]特性40
2.6 數(shù)據(jù)契約42
2.6.1 數(shù)據(jù)契約詳解47
2.6.2 KnownTypes特性49
2.7 服務契約與數(shù)據(jù)契約的
版本控制52
2.7.1 數(shù)據(jù)契約的版本控制52
2.7.2 雙向版本控制54
2.7.3 服務契約版本控制的
最佳實踐56
2.7.4 數(shù)據(jù)契約版本控制的
最佳實踐56
2.8 消息契約57
第3章 綁定63
3.1 綁定的工作原理64
3.2 地址66
3.3 行為67
3.3.1 服務行為67
3.3.2 操作行為70
3.3.3 終結點行為71
3.3.4 契約行為74
3.4 綁定75
3.4.1 basicHttpBinding和
wsHttpBinding76
3.4.2 netTcpBinding77
3.4.3 netMsmqBinding77
3.4.4 基于上下文的綁定77
3.4.5 如何選擇要使用的綁定78
3.5 配置綁定79
3.5.1 基址80
3.5.2 默認配置82
3.5.3 設置多綁定85
3.6 修改綁定86
3.6.1 綁定的屬性86
3.6.2 創(chuàng)建自定義綁定88
3.6.3 重用自定義綁定90
3.7 持久雙工服務93
3.8 PollingDuplexHttpBinding綁定:
HTTP輪詢95
第4章 客戶端97
4.1 Basic Profile 1.1標準98
4.2 .NET客戶端98
4.2.1 共享WSDL-契約98
4.2.2 共享WSDL契約和數(shù)據(jù)
契約-DLL101
4.2.3 共享接口和數(shù)據(jù)
契約-DLL102
4.3 REST104
4.3.1 REST與WCF106
4.3.2 使用REST客戶端112
4.3.3 使用REST Starter Kit
工具113
4.4 AJAX與WCF的關系114
4.5 WCF 4與Silverlight118
第5章 實例化121
5.1 實例上下文模式122
5.1.1 PerlCall模式122
5.1.2 Single模式125
5.1.3 PerSession模式127
5.2 服務的生命周期131
5.3 性能137
5.3.1 限流137
5.3.2 最佳做法144
5.3.3 負載均衡144
第6章 工作流服務147
6.1 剖析工作流服務148
6.2 聲明式服務149
6.3 接收與發(fā)送活動152
6.3.1 接收活動152
6.3.2 發(fā)送活動155
6.3.3 SendAndReceiveReply和
ReceiveAndSendReply
活動157
6.4 實現(xiàn)工作流服務的第一個
示例157
6.5 配置工作流服務161
6.6 實現(xiàn)消息的關聯(lián)164
6.7 托管工作流服務174
第7章 理解WCF安全177
7.1 Web服務安全的歷史演變177
7.2 Web服務安全的基本原則178
7.2.1 驗證178
7.2.2 授權179
7.2.3 消息的完整性179
7.2.4 消息的機密性179
7.3 傳輸安全與消息安全180
7.3.1 傳輸安全180
7.3.2 消息安全180
7.4 WCF安全概述182
第8章 WCF安全實戰(zhàn)195
8.1 驗證的起步195
8.2 基于聲明的身份驗證模型196
8.3 驗證實戰(zhàn)199
8.3.1 建立在消息安全之上的
用戶驗證199
8.3.2 建立在傳輸安全之上的
用戶名驗證209
8.3.3 利用消息安全實現(xiàn)X509
證書的相互驗證213
8.3.4 建立在消息安全之上的
Kerberos驗證221
8.4 聲明轉換與安全上下文的
初始化226
8.5 服務授權228
8.5.1 基于角色的授權228
8.5.2 基于聲明的驗證和驗證
上下文232
8.5.3 授權管理器233
第9章 WCF聯(lián)合驗證237
9.1 聯(lián)合驗證237
9.1.1 STS服務簡介238
9.1.2 多域之間的聯(lián)合驗證238
9.1.3 SAML語言239
9.2 WIF架構241
第10章 Windows Azure Platform
AppFabric255
10.1 服務總線和訪問控制簡介256
10.2 使用服務總線259
10.3 中繼服務264
10.4 WCF中繼綁定265
10.4.1 netOneWayRelayBinding
綁定266
10.4.2 netEventRelayBinding
綁定268
10.4.3 netTcpRealyBinding
綁定270
10.4.4 HTTP中繼綁定272
10.5 使用訪問控制服務(ACS)274
10.5.1 服務名稱空間275
10.5.2 作用域276
10.5.3 發(fā)送者276
10.5.4 規(guī)則276
10.5.5 把第一個服務集成到
訪問控制中277
第11章 創(chuàng)建一個SOA案例285
11.1 需求分析285
11.2 建立解決方案286
11.3 創(chuàng)建接口288
11.3.1 創(chuàng)建CarManagement
接口291
11.3.2 創(chuàng)建Customer接口292
11.3.3 創(chuàng)建Rental接口293
11.3.4 創(chuàng)建External接口294
11.4 創(chuàng)建服務296
11.5 創(chuàng)建宿主程序298
11.6 創(chuàng)建數(shù)據(jù)庫306
11.7 實現(xiàn)服務306
11.7.1 為CustomerService和
RentalService服務創(chuàng)建
數(shù)據(jù)庫訪問307
11.7.2 創(chuàng)建CarManagement
服務308
11.8 公開元數(shù)據(jù)310
11.9 創(chuàng)建CarManagement
客戶端313
11.10 創(chuàng)建RentalApplication
應用程序320
11.11 添加錯誤處理功能325
11.12 模擬客戶端328
11.13 擴展CarManagement接口
以接受汽車子類328
11.14 實現(xiàn)ExternalInterface-
Facade330
11.14.1 調用ExternalInterface-
Facade331
11.14.2 給參與事務的方法設置
事務支持333
11.14.3 為servicehost配置
額外的終結點333
第12章 創(chuàng)建通信和集成案例335
12.1 需求分析335
12.2 建立解決方案337
12.3 創(chuàng)建HQOrderEntryService-
Interface接口項目338
12.4 創(chuàng)建HelperLib類庫340
12.5 創(chuàng)建HQOrderEntry-
Implementation項目341
12.6 創(chuàng)建HQOrderEntryServiceHost
項目342
12.7 創(chuàng)建OrderEntryApplication
項目343
12.8 創(chuàng)建LocalOrderEntryInterface
接口項目345
12.9 繼續(xù)HQOrderEntry-
Implementation項目346
12.10 創(chuàng)建HQProductServiceASMX
項目348
12.10.1 創(chuàng)建Web服務348
12.10.2 把HQProductService-
ASMX作為服務引用
添加到OrderEntryService-
Implementation項目中349
12.10.3 為CheckIfOrderIsValid
方法編寫代碼350
12.10.4 為TranslateProduct-
Description方法編寫
代碼351
12.10.5 為ConvertOrderEntry-
Schema方法編寫
代碼351
12.11 創(chuàng)建HQLocalizationService
服務352
12.12 為RouteOrderEntry方法
編寫代碼354
12.13 創(chuàng)建RealTimeOrderTracking-
Application應用程序355
12.13.1 為RealTimeOrder-
TrackingApplication
方法編寫代碼355
12.13.2 添加IsubscribeToOrder-
TrackingInfo 接口356
12.13.3 實現(xiàn)SubscribeService
方法356
12.13.4 在訂單處理時調用
訂閱服務357
12.13.5 打開SubscribeService
服務358
12.13.6 訂閱來自RealTimeOrder-
TrackingApplication的
事件359
12.13.7 配置HQOrderEntry-
ServiceHost宿主359
12.14 創(chuàng)建路由360
12.15 配置HQOrderEntry-
ServiceHost宿主362
第13章 創(chuàng)建業(yè)務流程365
13.1 需求分析365
13.2 建立解決方案366
13.3 創(chuàng)建數(shù)據(jù)契約367
13.4 創(chuàng)建CalculateReferenceID-
Service服務369
13.5 創(chuàng)建ReceiveApprovedHoliday-
RequestsService項目370
13.6 給HolidayRequestActivity-
Library項目添加服務引用373
13.6.1 添加CalculateReferenceID-
Service項目373
13.6.2 添加對ReceiveApproved-
HolidayRequestsService
服務的引用374
13.6.3 開發(fā)HolidayRequestProcess
項目375
13.6.4 添加工作流375
13.6.5 創(chuàng)建變量376
13.6.6 配置Receive活動378
13.6.7 配置Send活動379
13.6.8 配置ApproveRequest操作
的ReceiveAndSendReply
活動383
13.7 開發(fā)HolidayRequest-
ProcessHost項目388
13.8 測試這個服務宿主能否正確
公開元數(shù)據(jù)389
13.9 開發(fā)ManagersHoliday-
RequestApprovalApplication
項目391
13.10 創(chuàng)建SqlWorkflowInstance-
Store項目391
第14章 托管服務393
14.1 自托管394
14.1.1 ServiceHost和ServiceHost-
Base394
14.1.2 實現(xiàn)一個自定義的
ServiceHost397
14.2 IIS托管399
14.2.1 ServiceHostFactory與
ServiceHostFactoryBase401
14.2.2 使用CustomService-
HostFactory類401
14.2.3 不通過svc文件承載
服務402
14.2.4 Windows激活服務403
14.3 用Windows AppFabric管理
和跟蹤終結點406
14.3.1 建立Windows Server
AppFabric407
14.3.2 使用AppFabric監(jiān)視
服務409
14.3.3 啟動事件查看器412
14.4 路由服務413
14.4.1 基于內容的路由413
14.4.2 協(xié)議和安全橋接417
14.4.3 錯誤處理418
14.5 云托管419
14.5.1 在Windows Azure中
托管WCF服務420
14.5.2 Windows Azure Platform
AppFabric服務總線420
14.5.3 通過云中繼服務421
章節(jié)摘錄
版權頁: 插圖: 在這個架構中,讀者可以看到是由代理把消息插入到通道中。在通道中,消息在傳遞給服務之前,要經(jīng)過其他層,如協(xié)議層和編碼層等。在服務端,消息由一個相應的通道棧接收,接收后把消息通過相應的層向上傳遞,經(jīng)過編碼層、協(xié)議層,再由分配器接收,分配器對消息進行分析,然后確定要調用哪個方法。 2.內容富集器 內容富集器是運行在功能層的一個模式。當應用程序發(fā)送數(shù)據(jù),而數(shù)據(jù)并不包含接收者所需要的全部信息時,便需要一個內容富集器。 信息缺失的原因可能是歷史因素——可能是在設計的時候還不需要這些信息作為消息的一部分,因為這些信息總是出現(xiàn)在數(shù)據(jù)庫中。但是在分布式環(huán)境中,并非所有服務都可以訪問數(shù)據(jù)庫。在發(fā)送者與接收者之間,另一個服務需要讀取這個消息,對它進行分析,并添加必要的信息。對這個額外信息的查詢可以通過查詢數(shù)據(jù)庫、執(zhí)行業(yè)務規(guī)則或直接使用硬編碼來實現(xiàn)。 富集數(shù)據(jù)可以說是一個服務操作的執(zhí)行過程。富集內容意味著數(shù)據(jù)契約的動態(tài)變化。這種富集數(shù)據(jù)的行為會導致給數(shù)據(jù)契約增加額外的屬性,并賦給這個新增的屬性某些值,然后把修改后的數(shù)據(jù)契約發(fā)送給其他服務。 用通用方法執(zhí)行這個操作,意味著WCF需要采用一種方式,來接收還沒有在操作簽名中定義數(shù)據(jù)契約的消息,并用代碼未知的數(shù)據(jù)契約發(fā)送此消息。大多數(shù)時候,富集器只是一些通用函數(shù),它們以通用格式(XML)接收數(shù)據(jù),改變格式后再把這個數(shù)據(jù)發(fā)送給其他服務。 WCF支持使用消息類接收無類型數(shù)據(jù)。使用函數(shù)接收消息類的一個參數(shù),并用一個消息響應這個調用。女口果是一個單向無返回值的方法,則不發(fā)送任何響應消息。消息類是一類包羅萬象的數(shù)據(jù)契約。在一個以消息類為輸入?yún)?shù)的方法中,每一個還沒有映射到另一個操作的消息都可以接收。因此建立通用型的內容富集器可以通過創(chuàng)建一個如下這樣的服務來實現(xiàn):此服務中有一個使用消息參數(shù)的操作。 當然,這樣的代碼不能直接訪問這個數(shù)據(jù)契約,因為它并不知道數(shù)據(jù)契約的細節(jié)。但是這樣的代碼可以讀取XML數(shù)據(jù),可以修改數(shù)據(jù)內容,還可以在需要時添加XML結點。 3.消息路由 在許多情況下,消息的發(fā)送者并不知道消息最終要發(fā)送到哪里,客戶端也不知道消息的實際接收者,因此需要一個路由方法來決定終結點的實際地址。在路由過程中,可以執(zhí)行不同類型的處理。 這個決定要受消息內容和一組事務規(guī)則的影響,或者實際的終結點本來就只是一個硬編碼的字符串。所有這些情況,基本思想都是用一種靈活的方式解除發(fā)送者與接收者之間的耦合關系。
編輯推薦
《WCF 4高級編程》共14章節(jié),內容包括設計原理與設計模式、服務契約與數(shù)據(jù)契約、綁定、客戶端等?!禬CF 4高級編程》專門針對中級.NET開發(fā)人員和解決方案架構師。他們對用WCF4創(chuàng)建面向服務的應用程序、實現(xiàn)可靠的通信、宿主業(yè)務流程、在云計算中實現(xiàn)安全及可擴展的集成應用比較感興趣。
圖書封面
圖書標簽Tags
無
評論、評分、閱讀與下載