
ATL Server
High Performance C++ on .NET
By:Â Pranish Kumar, Eric Lee, Jasjit Singh Grewal
Paperback | 27 May 2003
At a Glance
524 Pages
24.13 x 17.78 x 3.18
Paperback
RRP $89.99
$88.99
or 4 interest-free payments of $22.25 with
 orÂShips in 5 to 7 business days
| Foreword | p. xvii |
| About the Authors | p. xix |
| Acknowledgments | p. xxi |
| Overview of ATL Server Features and Services | p. 1 |
| Introduction to ATL Server | p. 3 |
| What Is ATL Server? | p. 3 |
| Who ATL Server Is For | p. 4 |
| What About Web Services? | p. 4 |
| How ATL Server Compares with Traditional | |
| Solutions | p. 5 |
| CGI | p. 6 |
| ASP | p. 6 |
| ISAPI | p. 6 |
| Other Solutions | p. 6 |
| ATL Server | p. 7 |
| How ATL Server Works | p. 8 |
| SRF Basics | p. 11 |
| Application Basics | p. 12 |
| ISAPI Basics | p. 14 |
| Other Features of ATL Server | p. 15 |
| More on Performance | p. 17 |
| Basic Deployment | p. 18 |
| Debugging Web Applications | p. 19 |
| Attribute Basics | p. 19 |
| Conclusion | p. 20 |
| SRF Files | p. 21 |
| Flow Control | p. 22 |
| If/Else Statement | p. 23 |
| While Statement | p. 25 |
| Nesting Statements | p. 27 |
| Using More Than One Handler | p. 27 |
| Include Statements | p. 29 |
| Parameters | p. 29 |
| Why No Variables? | p. 31 |
| Advantages of ATL Server | p. 31 |
| Comment Tags | p. 32 |
| Conclusion | p. 32 |
| Request Handlers | p. 33 |
| Creating a Request Handler | p. 33 |
| Using Attributes | p. 36 |
| Web Jukebox 1.0 | p. 38 |
| Getting Started | p. 38 |
| Conclusion | p. 43 |
| Introduction to ISAPI Services | p. 45 |
| What to Put in Your ISAPI DLL | p. 45 |
| Designing Your ISAPI Services | p. 46 |
| Creating an ISAPI Service | p. 47 |
| Creating a Simple Counter | p. 48 |
| Exposing the Counter As a Service (from the ISAPI DLL) | p. 49 |
| Using the ISAPI Service | p. 51 |
| Conclusion | p. 53 |
| Inside the ATL Server Architecture | p. 55 |
| Key Components in ATL Server | p. 55 |
| Processing an Incoming Request | p. 57 |
| Key ATL Server Classes | p. 59 |
| Key ISAPI Classes | p. 59 |
| Key Request Handler (Application DLL) Classes | p. 60 |
| Key Classes in Web Service Requests | p. 62 |
| Key Web Service Client Classes | p. 62 |
| Key Web Service Server Classes | p. 63 |
| Conclusion | p. 64 |
| Getting User Input | p. 65 |
| Query Strings and Form Variables | p. 65 |
| The ValidateAndExchange Method | p. 68 |
| Validating Input | p. 72 |
| Exchanging Data Types | p. 74 |
| Using a Validation Context | p. 76 |
| Conclusion | p. 82 |
| Deploying an ATL Server Web Application | p. 83 |
| Understanding the Administration Tool | p. 83 |
| Virtual Directory Tab | p. 84 |
| Other Tabs | p. 85 |
| Modifying Your ISAPI DLL | p. 87 |
| Understanding the Visual Studio .NET Deployment Utility | p. 88 |
| Conclusion | p. 91 |
| Cookies and Session State | p. 93 |
| Session State Service | p. 93 |
| Using Session State | p. 96 |
| Using Database-Backed Session State | p. 99 |
| Conclusion | p. 103 |
| Perfmon | p. 105 |
| Using Perfmon | p. 106 |
| Out-of-the-Box Counters | p. 107 |
| Understanding the Perfmon System | p. 107 |
| Creating a Perfmon Counter | p. 108 |
| Exposing a Perfmon Counter As an ISAPI Service | p. 111 |
| Some Other Types of Perfmon Counters | p. 116 |
| Conclusion | p. 118 |
| Web Services | p. 119 |
| Introducing Web Services | p. 119 |
| SOAP | p. 120 |
| WSDL | p. 121 |
| Creating a Web Service | p. 123 |
| Creating a Web Service by Hand | p. 124 |
| Creating a Web Service with ATL Server | p. 124 |
| Using ATL Server Web Services | p. 128 |
| ATL Server Web Service Architecture | p. 129 |
| SAX | p. 129 |
| Implementing Web Services | p. 130 |
| Conclusion | p. 157 |
| Advanced Concepts and Techniques | p. 159 |
| Using ATL Server Components in Stand-Alone Applications | p. 161 |
| Reusing the ATL Server Thread Pool | p. 161 |
| General Considerations | p. 162 |
| The ATL Server Thread Pool Class | p. 162 |
| ATL Server Thread Pool Class Sample | p. 164 |
| Results and Conclusions | p. 167 |
| Reusing the ATL Server Stencil Processor | p. 168 |
| How the ATL Server Stencil Processor Works | p. 169 |
| Stencil Processor Sample | p. 172 |
| Conclusion | p. 175 |
| Caching | p. 177 |
| Types of Caches | p. 177 |
| CMemoryCacheBase | p. 177 |
| CMemoryCache | p. 177 |
| CBlobCache | p. 178 |
| CDllCache | p. 178 |
| CStencilCache | p. 178 |
| CFileCache | p. 178 |
| CDataSourceCache | p. 178 |
| When to Use Caching | p. 179 |
| Caching Support Example | p. 179 |
| Key Types and Data Types | p. 184 |
| Cache Parameters | p. 195 |
| Cache Statistics | p. 195 |
| Conclusion | p. 196 |
| Application Tuning: Real World Tips and Tricks | p. 197 |
| COM | p. 197 |
| OLE Automation Types | p. 198 |
| Marshaling | p. 198 |
| Security and Process Model | p. 199 |
| COM+ | p. 199 |
| Databases | p. 200 |
| Using the Right Tools | p. 201 |
| Profiler | p. 202 |
| Perfmon | p. 203 |
| Task Manager | p. 203 |
| Web Stress Tool | p. 203 |
| Putting It All Together | p. 204 |
| Common Symptoms and the Problems That | |
| Cause Them | p. 205 |
| Low CPU, Low Requests per Second | p. 205 |
| High CPU, Low Requests per Second | p. 205 |
| Low Requests per Second, High Network Usage | p. 205 |
| Low Requests per Second, High Database Usage | p. 206 |
| Low CPU, High Requests per Second | p. 206 |
| Conclusion | p. 206 |
| ISAPI Extensions As Service Providers | p. 209 |
| A Simple ISAPI Service | p. 209 |
| Built-in Global ISAPI Services | p. 213 |
| Built-in per-Thread ISAPI Services | p. 215 |
| Using per-Thread Services | p. 215 |
| How to Implement the Actual Service | p. 216 |
| How to Make a Service per-Thread | p. 217 |
| Optimization | p. 218 |
| Per-Thread ISAPI Services Conclusion | p. 219 |
| Dynamically Adding Services to the ISAPI Application | p. 219 |
| Conclusion | p. 221 |
| Debugging ATL Server Applications | p. 223 |
| Server-Side Debugging | p. 223 |
| ISAPI Initialization | p. 223 |
| Request Loading and Processing | p. 227 |
| Finding Errors in SRF Files | p. 230 |
| Identifying a Failing Replacement Method | p. 232 |
| Client-Side SOAP Debugging | p. 234 |
| Debugging Helper: The ISAPI WebDbg Tool | p. 236 |
| Conclusion | p. 236 |
| Database Access with ATL Server | p. 239 |
| Using OLE DB Consumer Templates | p. 239 |
| Using the ATL Server Data Source Cache | p. 247 |
| Using the Data Source Cache Service | p. 251 |
| Putting It All Together | p. 251 |
| Conclusion | p. 259 |
| Advanced SRF | p. 261 |
| Extending Stencil Syntax | p. 261 |
| Overriding File Extensions | p. 272 |
| Conclusion | p. 272 |
| Advanced Request Handlers | p. 273 |
| Creating a Thread Pool | p. 273 |
| Runtime ATL Server Information | p. 275 |
| Dynamically Sizing a Thread Pool | p. 277 |
| Conclusion | p. 285 |
| Advanced Web Services | p. 287 |
| ATL Server and COM | p. 287 |
| COM Attributes | p. 287 |
| User-Defined Types | p. 293 |
| IDispatch Types | p. 297 |
| Allocation | p. 305 |
| Determining Whether an Object Is Invoked As COM or As SOAP | p. 305 |
| SOAP Faults and IErrorInfo | p. 309 |
| ATL Server Web Service Internals | p. 312 |
| How an ATL Server Web Service Works | p. 313 |
| ATL Server Implementation | p. 314 |
| Error Checking | p. 336 |
| Structs and Enums | p. 337 |
| Arrays | p. 344 |
| WSDL Generation | p. 345 |
| Conclusion | p. 345 |
| Performance Tuning ATL Server Web Applications | p. 347 |
| What Performance Is | p. 347 |
| A Typical Web Request from a Performance Perspective | p. 348 |
| ATL Server Facilities | p. 350 |
| Pitfalls and Programming Idioms to Avoid | p. 350 |
| Excessive Memory Allocation | p. 351 |
| Locks | p. 351 |
| I/O | p. 352 |
| Measuring Performance | p. 353 |
| Conclusion | p. 355 |
| ATL Server and Passport .NET | p. 357 |
| Using Passport | p. 357 |
| Initializing Passport Manager | p. 359 |
| Using Passport to Authenticate | p. 365 |
| IsAuthenticated | p. 368 |
| Displaying User-Specific Content | p. 369 |
| Putting It All Together | p. 371 |
| Using CPassportHandlerT | p. 376 |
| Conclusion | p. 380 |
| Interoperability with ATL Server Web Services | p. 381 |
| What Interoperability Is | p. 381 |
| When and Why You Should Care About Interoperability | p. 383 |
| ATL Server Interoperability Limitations | p. 383 |
| Standard Basic Data Types Not Supported by ATL Server | p. 383 |
| WSDL Problems | p. 386 |
| A Specific Interoperability Problem | p. 389 |
| Conclusion | p. 391 |
| Extensibility of ATL Server Web Services | p. 393 |
| ATL Server SOAP Request Processing Model | p. 393 |
| Using a Different Transport Protocol (Non-HTTP) | p. 395 |
| Overriding the HTTP Transport | p. 396 |
| ReadClient/WriteClient | p. 397 |
| GetServerVariable | p. 398 |
| Mapping an HTTP Request Object to a Physical Object | p. 398 |
| Custom Parsing on the Server Side | p. 401 |
| Custom Data Types Marshaling | p. 411 |
| Conclusion | p. 419 |
| SMTP and MIME Support in ATL Server | p. 421 |
| Connecting to an SMTP Server | p. 421 |
| Managing Connections with CSMTPConnection | p. 422 |
| Sending MIME Messages | p. 423 |
| CMimeMessage | p. 424 |
| Sending Text | p. 427 |
| Adding Attachments | p. 428 |
| Extending ATL Server's SMTP Support: Sending HTML Messages | p. 430 |
| Tips for Improving Performance | p. 436 |
| Creating a Delivery Queue | p. 436 |
| Processing the Delivery Queue | p. 438 |
| Conclusion | p. 440 |
| Developing HTTP Client Applications in ATL Server | p. 441 |
| Classes for Developing HTTP Clients | p. 442 |
| A Simple HTTP Client | p. 442 |
| Transmitting and Receiving Data | p. 447 |
| Handling Query and Form Parameters | p. 447 |
| Sending and Receiving Large Payloads | p. 451 |
| Securing the HTTP Communication | p. 453 |
| Authentication | p. 453 |
| Secure Communication (HTTPS) | p. 454 |
| Conclusion | p. 455 |
| Securing Your Web Application | p. 457 |
| Security Best Practices | p. 457 |
| Authentication | p. 459 |
| NTLM Authentication | p. 460 |
| Basic Authentication | p. 461 |
| Encryption | p. 464 |
| Conclusion | p. 466 |
| ATL Server FAQ | p. 467 |
| Generic ATL Server Application FAQ | p. 467 |
| What Does ""Assertion in Atlisapi.h, Line 663"" Mean? | p. 467 |
| How Can I Access the Physical Directory of an ATL Server Application? | p. 468 |
| How Can I Access the Client's SSL Certificate in a Secure Web Application? | p. 468 |
| Mail Support FAQ | p. 469 |
| How Do I Send HTML Mail Messages with ATL Server? | p. 470 |
| SOAP FAQ | p. 470 |
| How Do I Make a SOAP Client Point to a Different URL? | p. 470 |
| How Do I Use an HTTP Proxy in a SOAP Client? | p. 471 |
| How Do I Use SOAP over a Custom Transport Protocol? | p. 471 |
| How Do I Use WinINet, ServerXMLHTTP, or a Custom HTTP Stack in a SOAP Client? | p. 471 |
| How Do I Use HTTPS/SSL in a SOAP Client? | p. 472 |
| How Do I Select a Specific Certificate for an SSL Connection? | p. 473 |
| How Do I Access the Client's Certificate in a SOAP Server? | p. 474 |
| How Do I Use Custom Encryption/Compression with SOAP? | p. 474 |
| How Do I Develop an Asynchronous SOAP Client? | p. 475 |
| How Do I Send XML Fragments/Unescaped Strings As Part of a SOAP Message? | p. 476 |
| How Do I Perform Custom Server-Side Parsing? | p. 477 |
| Conclusion | p. 477 |
| Index | p. 479 |
| Table of Contents provided by Publisher. All Rights Reserved. |
ISBN: 9781590591284
ISBN-10: 1590591283
Series: APRESSPOD
Published: 27th May 2003
Format: Paperback
Language: English
Number of Pages: 524
Audience: General Adult
Publisher: Springer Nature B.V.
Country of Publication: US
Dimensions (cm): 24.13 x 17.78 x 3.18
Weight (kg): 0.95
Shipping
| Standard Shipping | Express Shipping | |
|---|---|---|
| Metro postcodes: | $9.99 | $14.95 |
| Regional postcodes: | $9.99 | $14.95 |
| Rural postcodes: | $9.99 | $14.95 |
Orders over $79.00 qualify for free shipping.
How to return your order
At Booktopia, we offer hassle-free returns in accordance with our returns policy. If you wish to return an item, please get in touch with Booktopia Customer Care.
Additional postage charges may be applicable.
Defective items
If there is a problem with any of the items received for your order then the Booktopia Customer Care team is ready to assist you.
For more info please visit our Help Centre.
You Can Find This Book In

Architecture Patterns with Python
Enabling Test-Driven Development, Domain-Driven Design, and Event-Driven Microservices
Paperback
RRP $125.75
$60.99
OFF
This product is categorised by
- Non-FictionComputing & I.T.Computer Networking & Communications
- Non-FictionComputing & I.T.Computer Programming & Software DevelopmentProgramming & Scripting Languages
- Non-FictionComputing & I.T.Computer Hardware
- Non-FictionComputing & I.T.Computer Programming & Software DevelopmentSoftware Engineering
- Non-FictionComputing & I.T.Computer Programming & Software DevelopmentMicrosoft Programming























