Operating .NET-based Applications

Download

Download

Download the Operating .NET-based Applications Guide

Download

Download the Associated Scripts

Patterns and Practices

Introduction

This book gives you the best information available about monitoring and operating applications based on the Microsoft .NET Framework. If you are an administrator with responsibility for application operation and monitoring, then this book is for you. However, although the primary focus is infrastructure and operations, developers involved in designing and creating applications that use the .NET Framework should find much of the information useful.

This book covers three main areas:

Monitoring
Security
Sizing and Capacity Planning

The information in this book is both practical and prescriptive. Rather than discuss all the different approaches that you could use, it concentrates on a describing a single solution that works.

This book includes material from consultants working in the field and from early implementers and contains current best practice for operating .NET-based applications. We hope you enjoy reading this book and that you find the material contained within it helpful, informative, and interesting.

Chapters

This book consists of three modules, each of between four and six chapters. The three modules are as follows:

Monitoring .NET-Based Applications
Securing .NET-Based Applications
Sizing and Capacity Planning for .NET-Based Applications

Let's look at each of these in detail.

Chapter 1 – Introduction

Due to the prescriptive nature of this book, the chapters cover a sample application that highlights the common scenarios. This chapter defines the sample application and business scenario. In addition, this chapter covers the prerequisites, document conventions, and provides an overview of the Microsoft Operations Framework and the .NET Framework.

Top of pageTop of page

Monitoring .NET-Based Applications

This section covers how you can monitor the functioning of your applications. This includes defining healthy and unhealthy applications and taking appropriate action based on the information you gather. This material gives you the definitive answers on how you can implement effective monitoring and notification of issues affecting .NET-based applications. The following chapters make up this section.

Top of pageTop of page

Chapter 2 – Monitoring Concepts

Discusses the idea of application health and distinguishes between healthy and unhealthy applications. You consider issues such as monitoring load and the importance of balancing information detail against monitoring overhead. You look at monitoring terminology and concepts that you review in later chapters.

Top of pageTop of page

Chapter 3 – Selecting Data Sources

The main factor in effective monitoring is collecting data about your application's health to provide you with the feedback on what is happening. In this chapter, you will look at the various sources of data that you can collect about your application's health. You will be introduced to the concepts of coarse-grained and fine-grained monitoring, which allow you to choose how much information you need to gather and how much you are willing to pay for it, in terms of either hardware or human resources.

Top of pageTop of page

Chapter 4 – Instrumenting .NET-Based Applications

The next part of this module looks at how you can implement application instrumentation in order to gather specific information that you cannot measure using system-provided monitors. You look at code samples that you can adapt to provide monitoring information for your own applications.

Top of pageTop of page

Chapter 5 – Configuring Management Applications

Addresses the issues that relate to the integration of Microsoft Operations Manager (MOM), Application Center 2000 Server, and Appmetrics™ from Xtremesoft Inc. into your application environment. In particular, you look at how you can use MOM to collect the information selected in Chapters 3 and 4, and then collate this information centrally using MOM management packs.

Top of pageTop of page

Chapter 6 – Notifying and Reporting

Shows you techniques for translating generated events either into immediate notifications or into longer-term reports. You cover what sort of information you want to collect, define your audience, and decide how you want to use the gathered data. You also look at ways in which you can deliver notifications, either immediately or on a schedule.

Top of pageTop of page

Securing .NET-Based Applications

Security has never had a higher profile than in the current climate and it is only appropriate that this subject receives detailed coverage. In this section, you see how to maximize the security of your environment and still allow your .NET-based applications to function properly. You cover how to use Group Policy to lock down computers and examine how to secure the network traffic generated by the application. The following chapters make up this module:

Top of pageTop of page

Chapter 7 – General Security Recommendations

Covers the steps to ensure that your environment is secure. One of the most important steps is to make sure that your computers all run the latest patches and service packs. This chapter shows measures you can take to ensure that your IT environment remains fully up to date.

Top of pageTop of page

Chapter 8 – Managing Security with Windows 2000 Group Policy

Windows 2000 defines many security settings through Group Policy, which controls the behavior of objects on the local computer and in the Active Directory directory service. You must set these policies appropriately, and monitor the policies to ensure that no changes take place without prior authorization. This chapter looks in detail at managing security using Group Policy.

Top of pageTop of page

Chapter 9 – Securing Servers Based on Role

Different server roles involved in your Active Directory environment will require different settings to make them secure. This chapter looks at domain controller and member server roles showing the steps you should take to ensure that each of these roles are as secure as possible.

Top of pageTop of page

Chapter 10 – Securing Servers Running .NET-Based Applications

Once you have defined overall security settings for your environment, you need to secure the specific servers running .NET-based applications. This chapter defines the settings you will require to allow your .NET-based applications to run as securely as possible.

Top of pageTop of page

Chapter 11 – Network Considerations for Servers Running .NET-Based Applications

Applications built on the .NET Framework can span multiple computers. In order to ensure that the applications are secure, you need to examine the communication between client and server and between servers, and then secure the traffic flow. This chapter shows you how to increase the security of network traffic flow generated by .NET-connected applications.

Top of pageTop of page

Chapter 12 – Customizing the Security Environment for Specific Applications

Following the general recommendations listed in the previous chapters will give you guidelines for securing any .NET-based application. However, you may need to make changes to the environment to allow your specific application to function. In this chapter, using the sample FMStocks application as an example, you see how to configure settings to allow specific applications to run.

Top of pageTop of page

Sizing and Capacity Planning for .NET-Based Applications

The sizing and capacity planning section provides you with the tools to model the demands that an application makes either before you deploy it (sizing) or when it is in production (capacity planning). Sizing allows you to make accurate forecasts about server scaling during concurrent code development. Capacity planning allows you to anticipate different load profiles and to plan for greater user numbers using current data without incurring excessive costs. Finally, this section looks at performance analysis, helping to understand how the components of the .NET Framework affect application performance.

Top of pageTop of page

Chapter 13 – Sizing and Capacity Planning for .NET-Based Applications

This chapter provides an introduction to the concepts behind sizing and capacity planning, looking at how this process differs for .NET-based applications. It defines and investigates the concepts behind queuing theory, highlighting areas such as application overload and corresponding service level agreement violations. This chapter goes on to illustrate the issues that you face when increasing load on a .NET-based application and how to identify when an application reaches maximum capacity.

Top of pageTop of page

Chapter 14 – Sizing a .NET-Based Application

Sizing is the process of determining application capacity during application development and linking that capacity to planned hardware levels. This chapter concentrates on using the sizing benchmarking methodology to define the characteristics of your expected workload. After testing with this representative workload, you analyze the resulting data to extract useful indicators of application behavior. You can then specify hardware resources consistent with the level of service that you require from your application, and identify whether you need to scale up or scale out your environment.

Top of pageTop of page

Chapter 15 – Capacity Planning

With capacity planning, you have production environment data from your application. You can now take this production data and use either predictive analysis or Microsoft's Total Cost Analysis (TCA) to forecast application behavior. With predictive analysis, you use tools such as Microsoft Operations Manager, Data Transformation Services and Microsoft Excel to analyze application data and then generate predictions by extrapolating current usage levels into the future. With TCA, you calculate the cost of each operation and then aggregate costs for different user profiles and usage scenarios. This allows you to build up an accurate and comprehensive study of application behavior that you can then use for loading scenarios or as the basis of service costing.

Top of pageTop of page

Chapter 16 – Performance Analysis

The final chapter concentrates on performance issues within .NET Framework components, and how to address these. It covers areas such as ASP.NET, the common language runtime and just in time compilation. Although this chapter does not cover performance tuning, it provides useful information on how to identify and resolve bottlenecks with .NET-based applications, with the aim of maximizing application capacity. It provides useful best practice recommendations for distributed applications that use .NET Remoting and how to ensure that your application returns acceptable performance at all times.

Give Us Your Feedback

We would like you to give us feedback on this material. In particular, we would be grateful for any guidance on the following topics:

How useful was the information provided?
Were the step-by-step procedures accurate?
Were the chapters readable and interesting?
Overall, how would you rate the series?

Send your feedback to the following e-mail address: netopfbk@microsoft.com. We look forward to hearing from you.

Top of pageTop of page

Who We Are

The team that produced Operating .NET-based Applications came from a wide range of areas within Microsoft and from many of our partner organizations. The following people make a substantial contribution to the writing, developing, and testing of this content.

Development

Greg Bott, Bott Inc

John Camargo, Microsoft Consulting Services

Linda Kasparek, Microsoft Consulting Services

Warren Kerby, Microsoft Consulting Services

Brian Komar, Komar Consulting Inc.

Peter Laudati, Microsoft Consulting Services

William Loeffler, Microsoft Prescriptive Architecture Group

Andrew Mason, Microsoft Prescriptive Architecture Group

Scott Matsumoto, Xtremesoft, Inc

Filiberto Selvas Patino, Microsoft Prescriptive Architecture Group

Paul Slater, Content Master LTD

Anthony Steven, Content Master LTD

Test

Ashish Babbar, Infosys Technologies LTD

Somsubhra Ghosh, Satyam Computer Services

Philomena Lobo, Infosys Technologies LTD

Ed Lafferty, Microsoft Prescriptive Architecture Group

Chris Sfanos, Microsoft Prescriptive Architecture Group

Sameer Tarey, Infosys Technologies LTD

William Wade, Wadeware LLC

Edit

RoAnn Corbisier, Microsoft Prescriptive Architecture Group

Sharon Smith, Microsoft Prescriptive Architecture Group

Review

Robert Abraldes

Rick Anderson

Stuart Bonell, Attenda Limited

James Cirone

Steve DeLuca

Cyrus Gray

David Guimbellot

Chris Hallum

Casey Jacobs

David Keogh

Thomas Marquardt

Erik Olson

Todd Weeks