Foreword |
|
xvii | |
About the Authors |
|
xix | |
About the Technical Reviewers |
|
xxiii | |
Acknowledgments |
|
xv | |
Introduction |
|
xxvii | |
|
PART 1 Introducing Windows Communication Foundation |
|
|
|
Introducing Service-Oriented Architecture |
|
|
3 | (22) |
|
What Is Service-Oriented Architecture? |
|
|
4 | (2) |
|
Disadvantages of Integrating Multiple Applications on Disparate Networks |
|
|
5 | (1) |
|
Advantages of Using Messaging |
|
|
5 | (1) |
|
Understanding Service-Oriented Architecture |
|
|
6 | (15) |
|
|
7 | (4) |
|
Web Services As a Key Enabling Technology for a Service-Oriented Architecture |
|
|
11 | (2) |
|
|
13 | (5) |
|
SOAP Implementations by Major Software Vendors |
|
|
18 | (1) |
|
Web Services Description Language: Describing Service Endpoints |
|
|
18 | (3) |
|
Dynamically Discovering Web Services |
|
|
21 | (1) |
|
Sending Messages Between Loosely Coupled Systems |
|
|
22 | (2) |
|
|
24 | (1) |
|
|
25 | (26) |
|
Introducing the Microsoft Remote Object Invocation Model |
|
|
25 | (3) |
|
|
26 | (1) |
|
Introducing .NET Remoting |
|
|
27 | (1) |
|
Why Are Web Services the Preferred Option? |
|
|
28 | (8) |
|
|
29 | (1) |
|
Unification of Existing Technologies |
|
|
30 | (1) |
|
Interoperability Across Platforms |
|
|
31 | (2) |
|
WCF As a Service-Oriented Development Tool |
|
|
33 | (3) |
|
Exploring New Features in WCF |
|
|
36 | (1) |
|
|
36 | (1) |
|
Attribute-Based Development |
|
|
36 | (1) |
|
Coexisting with Existing Technology |
|
|
37 | (7) |
|
|
37 | (1) |
|
Migration/Integration with Existing Technology |
|
|
38 | (1) |
|
|
39 | (2) |
|
Support of Visual Studio 2005 |
|
|
41 | (1) |
|
One Service, Multiple Endpoints |
|
|
42 | (1) |
|
|
43 | (1) |
|
Unifying Distributed Technologies |
|
|
44 | (4) |
|
|
44 | (1) |
|
|
45 | (1) |
|
|
46 | (1) |
|
|
47 | (1) |
|
How Do You Unify All These Technologies? |
|
|
48 | (2) |
|
|
50 | (1) |
|
Exploring the WCF Programming Model |
|
|
51 | (48) |
|
Introducing the Technical Architecture |
|
|
52 | (1) |
|
Introducing the Programming Approach |
|
|
53 | (1) |
|
|
53 | (13) |
|
|
54 | (3) |
|
|
57 | (2) |
|
|
59 | (7) |
|
Looking at the WCF Layers ``Inside'' |
|
|
66 | (3) |
|
What Is the Messaging Layer? |
|
|
66 | (3) |
|
What Is the Service Model Layer? |
|
|
69 | (1) |
|
Using ServiceHost and ChannelFactory |
|
|
69 | (14) |
|
|
69 | (7) |
|
|
76 | (6) |
|
|
82 | (1) |
|
|
82 | (1) |
|
|
83 | (7) |
|
|
84 | (2) |
|
|
86 | (1) |
|
|
87 | (1) |
|
|
88 | (1) |
|
Service Metadata Behavior |
|
|
88 | (2) |
|
Using the Configuration Tool |
|
|
90 | (1) |
|
|
91 | (4) |
|
Configuring Instrumentation |
|
|
95 | (1) |
|
|
96 | (3) |
|
PART 2 Programming with WCF |
|
|
|
Installing and Creating WCF Services |
|
|
99 | (46) |
|
Understanding the Requirements |
|
|
99 | (3) |
|
|
99 | (1) |
|
|
100 | (2) |
|
Installing the .NET 3.0 Development Components |
|
|
102 | (1) |
|
Understanding Service Contracts |
|
|
103 | (24) |
|
Contract First or Code First? |
|
|
105 | (1) |
|
|
106 | (1) |
|
|
107 | (1) |
|
|
107 | (3) |
|
``Hello, World'' with Interfaces |
|
|
110 | (6) |
|
|
116 | (3) |
|
ServiceContract Attribute |
|
|
119 | (4) |
|
OperationContract Attribute |
|
|
123 | (3) |
|
ServiceBehavior Attribute |
|
|
126 | (1) |
|
OperationBehavior Attribute |
|
|
127 | (1) |
|
Understanding Data Contracts |
|
|
127 | (16) |
|
|
127 | (7) |
|
|
134 | (3) |
|
|
137 | (6) |
|
|
143 | (2) |
|
Hosting and Consuming WCF Services |
|
|
145 | (34) |
|
Exploring Your Hosting Options |
|
|
145 | (4) |
|
Hosting Environment Features |
|
|
147 | (1) |
|
Hosting Environment Requirements |
|
|
148 | (1) |
|
Self-Hosting Your Service |
|
|
149 | (1) |
|
Hosting in Windows Services |
|
|
150 | (6) |
|
Hosting Using Internet Information Services |
|
|
156 | (16) |
|
Core IIS 5.1 and 6.0 Features |
|
|
157 | (2) |
|
Hosting WCF Services in IIS |
|
|
159 | (1) |
|
Configuring WCF Services in IIS |
|
|
160 | (1) |
|
Accessing ServiceHost in IIS |
|
|
161 | (2) |
|
|
163 | (1) |
|
ASP.NET Compatibility Model |
|
|
164 | (2) |
|
|
166 | (1) |
|
Windows Server 2003 and IIS 6.0 |
|
|
167 | (1) |
|
|
167 | (3) |
|
Windows Activation Services |
|
|
170 | (2) |
|
|
172 | (1) |
|
|
172 | (5) |
|
|
173 | (1) |
|
|
174 | (2) |
|
Command-Line Implementation |
|
|
176 | (1) |
|
|
177 | (2) |
|
|
179 | (34) |
|
Exploring the Business Drivers |
|
|
180 | (1) |
|
Building Custom Code to Monitor Activity |
|
|
181 | (7) |
|
Using Configuration Files |
|
|
188 | (2) |
|
Configuration Editor: SvcConfigEditor.exe |
|
|
189 | (1) |
|
Using Tracing and Message Logging Capabilities |
|
|
190 | (5) |
|
|
190 | (1) |
|
|
191 | (2) |
|
|
193 | (1) |
|
|
194 | (1) |
|
Utilizing WCF Performance Counters |
|
|
195 | (12) |
|
Enabling Built-in WCF Performance Counters |
|
|
196 | (3) |
|
Creating Custom Performance Counters |
|
|
199 | (8) |
|
Using Windows Management Instrumentation |
|
|
207 | (3) |
|
|
210 | (3) |
|
PART 3 Advanced Topics in WCF |
|
|
|
Implementing WCF Security |
|
|
213 | (36) |
|
Introducing the Business Drivers |
|
|
214 | (1) |
|
Introducing the WCF Security Features |
|
|
215 | (31) |
|
Security Features of Bindings |
|
|
215 | (1) |
|
|
216 | (1) |
|
|
217 | (5) |
|
|
222 | (3) |
|
|
225 | (5) |
|
|
230 | (2) |
|
Federated Security Model in WCF |
|
|
232 | (2) |
|
|
234 | (6) |
|
Auditing for Security Features in WCF |
|
|
240 | (2) |
|
|
242 | (4) |
|
|
246 | (3) |
|
Implementing Reliable Messaging and Queue-Based Communications |
|
|
249 | (28) |
|
The Need for Reliable Messaging |
|
|
250 | (1) |
|
Challenges of Implementing Reliable Messaging |
|
|
251 | (1) |
|
|
251 | (1) |
|
|
252 | (1) |
|
|
252 | (7) |
|
Enabling WCF Web Service with Reliable Sessions |
|
|
254 | (3) |
|
ReliableSessionBindingElement Class |
|
|
257 | (1) |
|
Some Pointers on Reliable Messaging |
|
|
257 | (2) |
|
|
259 | (16) |
|
|
260 | (2) |
|
Microsoft Message Queues in Windows Server 2007 |
|
|
262 | (2) |
|
|
264 | (6) |
|
|
270 | (4) |
|
Some Pointers on Using MSMQ |
|
|
274 | (1) |
|
|
275 | (2) |
|
Using Transactions in WCF |
|
|
277 | (24) |
|
|
278 | (2) |
|
Understanding the Types of Transactions in WCF |
|
|
280 | (2) |
|
Defining Transactions in WCF |
|
|
282 | (13) |
|
Using the TransactionFlow Attribute |
|
|
283 | (1) |
|
Using the ServiceBehavior Attribute and the OperationBehavior Attribute |
|
|
283 | (3) |
|
Defining Transactions in QuickReturns Ltd |
|
|
286 | (9) |
|
Working with Transactions and Queues |
|
|
295 | (4) |
|
|
299 | (2) |
|
|
301 | (34) |
|
|
302 | (1) |
|
Running a COM+ Application As a WCF Service |
|
|
302 | (22) |
|
Visual Basic 6 COM+ Component Sample Setup |
|
|
303 | (5) |
|
COM+ Application WCF Service Wrapper |
|
|
308 | (9) |
|
.NET Enterprise Services and COM+ Components |
|
|
317 | (7) |
|
Consuming WCF Services from COM+ |
|
|
324 | (10) |
|
QuickReturns Ltd. Quote Service |
|
|
325 | (7) |
|
Security Credentials with IChannelCredentials |
|
|
332 | (2) |
|
|
334 | (1) |
|
|
335 | (36) |
|
Understanding the Data Transfer Architecture |
|
|
335 | (1) |
|
Exploring the Serialization Options in WCF |
|
|
336 | (1) |
|
Introducing Data Contracts |
|
|
337 | (12) |
|
|
340 | (1) |
|
Data Contract Equivalence |
|
|
341 | (5) |
|
|
346 | (2) |
|
|
348 | (1) |
|
|
349 | (2) |
|
|
351 | (1) |
|
Introducing Message Contracts |
|
|
351 | (6) |
|
|
353 | (2) |
|
|
355 | (1) |
|
|
356 | (1) |
|
|
357 | (2) |
|
|
359 | (1) |
|
|
359 | (1) |
|
|
360 | (1) |
|
Best Practices for Versioning |
|
|
360 | (2) |
|
|
360 | (1) |
|
Without Schema Validation |
|
|
361 | (1) |
|
Putting It All Together: Quote Client Sample Application |
|
|
362 | (8) |
|
|
362 | (4) |
|
|
366 | (4) |
|
|
370 | (1) |
|
Developing Peer-to-Peer Applications with WCF |
|
|
371 | (30) |
|
Introducing Peer-to-Peer Computing |
|
|
371 | (21) |
|
|
372 | (1) |
|
|
373 | (1) |
|
P2P Development Life Cycle |
|
|
374 | (2) |
|
|
376 | (2) |
|
How Does a P2P Mesh Work? |
|
|
378 | (3) |
|
|
381 | (1) |
|
QuickReturnTraderChat Sample |
|
|
382 | (5) |
|
|
387 | (2) |
|
QuickReturnSecureTraderChat Sample |
|
|
389 | (3) |
|
|
392 | (6) |
|
|
393 | (1) |
|
|
394 | (1) |
|
|
395 | (1) |
|
|
396 | (1) |
|
|
396 | (2) |
|
|
398 | (2) |
|
|
400 | (1) |
|
Implementing SOA Interoperability |
|
|
401 | (24) |
|
Achieving Java/J2EE Interoperability |
|
|
401 | (17) |
|
Non-Microsoft SOA Platforms |
|
|
402 | (1) |
|
Interoperability with WS-I Basic Profile |
|
|
403 | (3) |
|
Sending Binary Data Over Web Services |
|
|
406 | (12) |
|
Using WS-ReliableMessaging |
|
|
418 | (4) |
|
WS-ReliableMessaging Example |
|
|
419 | (2) |
|
Platform Support of WS-ReliableMessaging |
|
|
421 | (1) |
|
|
422 | (3) |
|
|
|
Appendix A QuickReturns Ltd. |
|
|
425 | (6) |
|
|
426 | (1) |
|
Services and Collaboration |
|
|
426 | (2) |
|
|
426 | (1) |
|
|
427 | (1) |
|
|
427 | (1) |
|
|
428 | (1) |
|
|
428 | (3) |
|
|
428 | (1) |
|
|
428 | (1) |
|
|
429 | (1) |
|
|
429 | (1) |
|
|
430 | (1) |
|
Appendix B History of Microsoft Web Service Implementations |
|
|
431 | (10) |
|
|
431 | (1) |
|
Web Services Enhancements (WSE) |
|
|
432 | (6) |
|
|
435 | (1) |
|
|
435 | (1) |
|
|
436 | (2) |
|
|
438 | (1) |
|
|
438 | (1) |
|
|
439 | (1) |
|
|
439 | (1) |
|
|
440 | (1) |
|
Appendix C WCF and .NET Framework Installation Steps |
|
|
441 | (14) |
|
Installing Internet Information Services |
|
|
441 | (1) |
|
|
441 | (1) |
|
|
442 | (1) |
|
Installing Visual Studio 2005 or the .NET 2.0 SDK |
|
|
442 | (3) |
|
|
442 | (1) |
|
.NET 2.0 Runtime Installation |
|
|
443 | (1) |
|
.NET 2.0 SDK Installation |
|
|
443 | (1) |
|
|
444 | (1) |
|
|
445 | (2) |
|
Installing .NET Framework 3.0 Runtime Components for XP and Windows 2003 |
|
|
447 | (1) |
|
|
447 | (1) |
|
Installing Microsoft Windows SDK for Windows Vista |
|
|
448 | (2) |
|
Installing Windows SDK for All Platforms |
|
|
448 | (2) |
|
Installing .NET Framework 3.0 Development Tools |
|
|
450 | (1) |
|
Making Windows Firewall Changes |
|
|
451 | (3) |
|
|
452 | (1) |
|
|
452 | (2) |
|
|
454 | (1) |
Index |
|
455 | |