October2005October 2005

Memory Models: Understand the Impact of Low-Lock Techniques in Multithreaded Apps

Because the use of low-lock techniques in your application significantly increases the likelihood of introducing hard-to-find bugs, it is best to use them only when absolutely necessary. Here Vance Morrison demonstrates the limitations and subtleties low-lock techniques so that if you are forced to use them you have a better chance of using them correctly. Vance Morrison

High Availability: Keep Your Code Running with the Reliability Features of the .NET Framework

Reliability requires the capacity to execute a sequence of operations in a deterministic way, even under exceptional conditions. This allows you to ensure that resources are not leaked and that you can maintain state consistency without relying on application domain unloading (or worse, process restarts) to fix any corrupted state. Unfortunately, in the.NET Framework, not all exceptions are deterministic and synchronous, which makes it difficult to write code that is always deterministic in its ability to execute a predetermined sequence of operations. In this article Stephen Toub will show you why, and explore features of the .NET Framework 2.0 that help you to mitigate these situations and write more reliable code. Stephen Toub

OpenMP and C++: Reap the Benefits of Multithreading without All the Work

Having more than one CPU core on a single chip makes a system with a processor with two cores operate just like a dual-processor computer, and a system with a processor with four cores operate like a quad-processor computer, so you get much better performance. But if your application does not take advantage of these multiple cores, you may not reap the benefits. OpenMP helps you create multithreaded C++ applications more quickly so the benefits of multithreading can be realized. Kang Su Gatlin and Pete Isensee

Custom Cultures: Extend Your Code's Global Reach With New Features In The .NET Framework 2.0

The upcoming Microsoft .NET Framework 2.0 adds a number of globalization features that address the important issues of extensibility, standards support, and migration. Here authors Michael Kaplan and Cathy Wissink explain what these features mean to your globalization effort. Michael Kaplan and Cathy Wissink

Stay Alert: [Use Managed Code To Generate A Secure Audit Trail](https://technet.microsoft.com/en-us/AssetId:ee60b53c-e9ad-452f-98c9-be8585a73299 "Use Managed Code

To Generate A Secure Audit Trail")

In today's security-conscious environments, a reliable audit trail is a valuable forensic tool The Windows Server 2003 operating system provides features that let you enable a wide range of applications to make use of auditing functionality. This article looks at auditing from the operating system perspective and describes a sample managed code implementation that will allow you to add auditing to your own server applications. Mark Novak

Code Download (688 KB)
.Chm Files


Editor's Note: Systems Programmers
In our first 20 years in print, we have covered a lot of new product releases. Back in the 1980s and 1990s it was a series of OSs that drove developer innovations. However, in the past five years the programming landscape has changed.
New Stuff: Resources for Your Developer Toolbox
ActiveReports for . NET 2. 0 by Data Dynamics is written in C# and integrates with the Visual Studio® . NET development environment to let you create dynamic reports and charts. Drop the Report Viewer control on your Windows® Form or Web Form, specify the data source and authentication information for the data connection wizard, and it builds the connection string for you. Marnie Hutcheson
Advanced Basics: A Match-Making Game in Visual Basic
My four-year-old son has decided that he wants to be like his dad when he grows up. He is planning to work in my office, and write computer programs just like I do. But there is one problem—he thinks I write games. Duncan Mackenzie
Data Points: The Enterprise Library Data Access Application Block, Part 3
E nterprise applications can have a wide variety of data update requirements. Sometimes you need to save multiple rows of changes at once within a single transaction. Other times, the user must be allowed to enter multiple rows of data, send them to the database in a batch; and if a row or two fails, only the rows that succeeded should be committed and remain committed. John Papa
Extreme ASP.NET: Page Navigation
In my childhood I spent several weeks a year in Holland with my extended family. As a young American boy I was fascinated with the electric Dutch trains, something we didn't see in my hometown of Dallas, Texas. Rob Howard
Test Run: Low-Level Web App UI Test Automation
As Web applications have become more complex, testing them has become more important. There are many testing techniques available to you. For example, in the April 2005 issue of MSDN®Magazine, I describe a simple JScript®-based system that can test a Web app through its UI by using the Internet Explorer Document Object Model. James McCaffrey
Cutting Edge: Personalization and User Profiles in ASP.NET 2.0
Personalization is growing to be more and more of an essential ingredient in many types of Web apps, including portals and shopping sites. Without it, it's quite difficult to serve your customers efficiently. Dino Esposito
Wicked Code: Asynchronous Pages in ASP.NET 2.0
ASP.NET 2.0 is replete with new features ranging from declarative data binding and Master Pages to membership and role management services. But my vote for the coolest new feature goes to asynchronous pages, and here's why.Jeff Prosise
Concurrent Affairs: Performance-Conscious Thread Synchronization
In my career, I have architected and implemented many thread synchronization techniques. This has provided me with a lot of experience that has shaped the way I now think about thread synchronization problems. Jeffrey Richter
.NET Matters: NamedGZipStream, Covariance and Contravariance
Stephen Toub
Pure C++: Invoking Generic or Function Templates
As I promised last time, in this month's column I'll walk through the process of defining and invoking a generic or template function under C++\CLI. A function template or a generic function begins with the template or generic keyword followed by its parameter list. Stanley B. Lippman
C++ at Work: Writing, Loading, and Accessing Plug-Ins
Paul DiLascia
{End Bracket}: Scheme Is Love
For the past few years, it has become fashionable to embrace a dynamic language such as Perl, PHP, Python, or Ruby. While I'll admit to having a short but pleasurable tryst with Ruby, I believe I have found true love in the dialect of Lisp called Scheme. Don Box