text:
.NET Development Foundation/Introduction

Introduction

Module objectives
This study guide does not aim at replacing the other resources that exist to get prepared to pass the 70-536 exam:

 * we provide links to the MSDN library, we do not try to replace it. People who pass the exam often note that the training kit does not cover every aspect of the exam and that consulting the MSDN documentation is a big plus.

 * we provide links to Wikipedia and other Wikimedia projects where applicable. This is not a series of theoretical or encyclopedia articles but a guide on how the concepts are implemented in the .NET framework and how to use them.

 * we do not provide testing software

 * we do not pretend that this module replaces the recommended training kit or any other recommended material from Microsoft.

What we do provide though, even at this document's grossly incomplete stage, is:

 * an exhaustive list of the objectives of the exam as stated by Microsoft

 * links from all exam objectives to the corresponding MSDN library article.

 * "textbook like" explanations for a growing number of topics with links to related external sources.

 * and most of all, a place to put your important notes and code examples for your revision before the exam and as a reference for your professional work afterward. No training kit or library provides that in a shared and controlled environment.

The most difficult aspect of a book like this one is to keep a balance between having enough content to cover and explain every objective of the exam and not too much content because reading and studying time should be kept to a manageable level. Furthermore, there is no reason to cover content here that is not directly related to exam objectives.

Finally, as part of the Wikimedia family (Wikipedia and all) the Wikibooks project has very high ethics on copyrights and general quality. Do not hesitate to correct if you find anything "wrong" in any way.

Module structure
This module is structured around the objectives set by Microsoft for the 70-536 Exam. Chapters 3 to 9 represents each of the 7 major objective categories of the exam.

The idea behind sticking to the exam "official" objectives is that we assume that somehow the certification provider (Microsoft) has some understanding of the product (.NET) and can state what is important to know about it.

For each chapter:

 * a first section covers the major concepts (topics) treated in that chapter. This "topics" section allows us to somewhat separate the "what" from the "how-to". Please note that the exam is heavily oriented toward the utilization of the libraries and tools and that an understanding of the concepts is highly insufficient as a preparation for the exam.

 * a second section then details each of the second, third and fourth level exam objectives for that objective category (how-to's, detailed usage and references to MSDN library).

Eventually, we would like to have:

 * a "revision questions" section for each chapter where we could discuss the kind of questions that could be asked at the exam.

 * an "advanced" section where we could put the more advanced material and keep the text flow of the basic sections at a level that corresponds to the knowledge required for the exam.

As of December 7, 2007:

 * 24 subjects are detailed on separate pages (the subject title is the link). Most of those will eventually be integrated into the main page for a better flow of the text.

 * all of the subjects are directly linked to the Microsoft Software Developers Network (MSDN) library, about 480 directly from the main page (the "MSDN" following the title is the link) and the others from their respective subpage.

 * we just started to link the "topics" sections to Wikipedia articles to give you a feel of how the concepts are defined and treated outside of Microsoft's world.

Some sections are relatively advanced and others are awaiting your contributions. The more advanced sections are not all at the beginning of the module.

The .NET Framework
In the certification paths where exam 70-536 "Microsoft .NET Framework 2.0 Application Development Foundation" is present, it represents the first step of the certification process. It is thus natural to start this first study guide with a short discussion of the framework as a whole.

The definition on MSDN .NET main page is: "The .NET Framework is Microsoft's managed code programming model for building applications on Windows clients, servers, and mobile or embedded devices. Developers use .NET to build applications of many types: Web applications, server applications, smart client applications, console applications, database applications, and more".

Wikipedia's definition is: "The Microsoft .NET Framework is a software component included with the Microsoft Windows operating system. It provides a large body of pre-coded solutions to common software development requirements, and manages the execution of programs written specifically for the framework. The .NET Framework is intended to be used by most new applications created for the Windows platform"

The problem with Microsoft's definition is that it refers to a "managed code programming model" which is still Microsoft terminology. The best definition for it: "Managed code is code that has its execution managed by the .NET Framework Common Language Runtime" (see Brad Adams blog on MSDN).

Wikipedia's definition points to the two more important aspects from a developer point of view:
 * The presence of a huge set of class libraries that allows for all of the common programming tasks. Beside the sheer size of the those class libraries, they are also evolving at a rapid pace.
 * The fact that the execution environment is specific to the framework. The term "virtual machine" is often used to qualify such an environment.

Those two main characteristics parallel those of the Java environment, which is the main competitor to the .NET framework. This module tries to help you learn the .NET framework. It will not address the .NET vs Java comparisons and discussions.

Framework structure

The image on the right is taken from the Wikipedia article on the .NET framework (see above).

It describes the process followed by a program written in a .NET compatible language from source code to execution. The important difference with that and more conventional programming languages (ex. C++) is the fact that the program is compiled twice. The first compilation is done from the original language to a "common intermediate language" (CIL). This is what actually goes "in" an assembly.

The second compilation is done from the CIL to machine code. This compilation is usually performed automatically by the "just-in-time" (JIT) compiler. It is also possible to use the Native Image Generator (ngen) utility to create the machine code in advance of runtime.

This architecture has many direct implications for the subjects of this book. Among them:

 * The "source code" of the second compilation (the CIL code) is always available to the virtual machine at runtime. This means that this code can easily be analyzed at runtime, contrary to conventional compiled environment. This characteristic is the base for the reflection functionality of the platform. Not only can we analyze the "intermediate source code" but we can actually create (emit) some of it at runtime and then do the "just-in-time" compilation and execution.

 * The execution is done in the context of the CLR (this is the "managed" code concept). Put another way, we can say that the runtime always "knows" what it sends for execution, contrary to a conventional environment where the code is executed directly by the operating system. This implies that you can tell the runtime to execute, or not, this or that type of code. This is the basis for code access security.

 * Most of the features of the .NET languages (C#, VB, etc.) are directly related to features of the intermediate language. Put another way, most of the time, the first compilation is pretty straightforward. Some of the constructs though do not have direct equivalents in the CIL (ex. properties in C# are mapped to class methods in the CIL).

We could continue like that for a long time. The point we want to make here is that a developer has much to gain from a detailed understanding of the platform, even if it is not directly mentioned as an objective of the exam.

If you want to read on the framework in Microsoft documentation you can see MSDN.

The last thing we will note here is that the common language runtime (CLR) can execute in different contexts:
 * ASP.NET for web applications, where it is directly linked to the Internet Information Server (IIS).
 * Internet Explorer for client side web controls
 * In a standalone host for console, service and windows applications.

By default, examples in this book will use standalone executables. This is just because they are more easy to deploy for very simple programs. This does not imply that Windows applications are preferable to web applications.

Where this book fits
The image on the right, also taken from Wikipedia, gives a simplified but clear view of the functional components of the framework.

This book (and the related exam) deals with the "Base Class Library" component and the basic relations of a program with the "Common Language Runtime" component.

The book does not cover ASP.NET, ADO.NET, WF or any other more specialized components.

We can say that we extensively cover the basics but that we shallowly cover the framework itself.

The relations with the common language runtime include such things as:
 * Deployment
 * Security
 * Configuration
 * Reflection
 * Services
 * Relationship with WMI
 * Interoperability
 * etc.

The base class library includes
 * types
 * collections
 * generics
 * text manipulation
 * basic drawing
 * basic globalization
 * serialization
 * basic input/output
 * multi-threading
 * etc.

All in all they are kind of "dry" topics. This idea of starting with an extensive coverage of the basics is certainly not the most interesting learning pattern for a beginner. This is why we advise real beginners to start with more adequate material.

One last note about the framework "stack" is that new versions tend to add new components instead of "redoing" existing ones. This means that most of the "2.0" basics are still valid in "3.5". Some "basic" functionalities are nevertheless augmented or changed in new versions. We will try to keep track of those as side notes where possible.

Programming paradigms
Keeping things very (too much?) simple we can say that a programming paradigm is a "style" of programming, a specific way to model problems and "translate" their solution in code.

From a developer point of view the .NET framework (and its class libraries) is a general-purpose object-oriented platform that is constantly extended to support other programming paradigms (generic programming with Generics, Aspect programming with attributes, Reactive programming with WF, Functional programming with Lambda expressions in C# 3.0, etc.). That "extension process" mirrors that of Java. The .NET and Java platforms are the only two that currently support such extensive multi-paradigms extension process.

Discussing the extent and "theoretical soundness" of each of those paradigm implementations is obviously out of scope for this book.

Our point here is that navigating through all those programming styles in the same platform can get kind of confusing. Maintaining code is also getting more and more difficult because two original programmers could have solved the same problem using widely different "styles" or constructs.

We will thus try to connect, where possible, the different .NET concepts with their respective "style" to give the reader some context.

Assemblies
According to MSDN assemblies are: "the building blocks of .NET Framework applications; they form the fundamental unit of deployment, version control, reuse, activation scoping, and security permissions".

The .NET Framework is now Microsoft's preferred way of developing applications on the Windows platform. In that respect it succeeds the Component Object Model (COM). This is important to mention because despite some deployment and management problems (remember DLL Hell?) COM played an important role in the development of component-based computing (reusing whole executable components, not only program code). Major efforts have been invested to transfer the component-based concepts of COM to the .NET framework and a significant part of this book deals with those (security, installation, versioning, etc.).

The assembly is the successor of the COM component.

Previous / Next


text:
User talk:216.206.114.202

Welcome!
Welcome to Wikibooks, a collection of open-content textbooks! You don't have to log in to read or edit articles on Wikibooks, but creating an account is quick, free and non-intrusive, requires no personal information, and gives you many benefits, including:
 * The use of a username of your choice
 * The ability to view all your contributions via a "My contributions" link
 * Your own user page
 * Your own talk page which, if you choose, also allows users to send you messages without knowing your e-mail address
 * The use of your own personal watchlist to which you can add articles that interest you
 * The ability to rename pages.
 * The ability to upload images
 * The ability to customize the appearance and behavior of the website
 * The eligibility to become an administrator
 * The right to be heard in votes and elections
 * Your IP address will no longer be visible to other users.

We hope that you choose to become a Wikibookian and create an account. Feel free to ask me any questions you may have on my talk page. By the way, make sure to sign your posts and comments with four tildes (~~~~), which will let others know who left it.

– Mike.lifeguard  | talk 16:14, 11 December 2007 (UTC)

license: Creative Commons - Attribution Share-Alike - https://creativecommons.org/licenses/by-sa/4.0/

title: User talk:216.206.114.202


text:
User talk:Nieko

Come introduce yourself at the new users page. If you have any questions, you can ask there or contact me personally. – Mike.lifeguard  | talk 16:17, 11 December 2007 (UTC)

title: User talk:Nieko


text:
User talk:Jaysamin

Welcome message
Hello, and welcome to Wikibooks!

Here are some tips to help you get started:
 * To learn the wiki-markup-language syntax, see Help:Editing.
 * Make sure to sign your posts and comments with four tildes, like this: ~~~~
 * There is a box at the top of the edit window (if javascript is enabled on your browser) that will insert it too (looks like part of a signature). This will let others know who left it, and make it easy to reply back to you.
 * Remember to conduct any editing experiments in the sandbox.
 * You can tell the community something about yourself in your userpage.
 * You can get to this page by clicking the tab at the top of the page labeled with your registered username.
 * Wikibooks is a collection of open-source textbooks. (What is Wikibooks).
 * If you are a Wikipedian, see Wikibooks for Wikipedians for a primer on how things work here (it's a little different).
 * If you want to base your work here on materials from Wikipedia, please use WB:RFI (requests for importation) to bring the material over in compliance with the GFDL.
 * If you're an instructor and plan on using Wikibooks for a class project, see Guidelines for class projects
 * Please say hello at the Reading Room with any questions or ideas.
 * Eventually, you might want to read the Manual of Style and Policies and Guidelines.
 * Help us by participating in policy and guideline creation.
 * Please take a look at Naming policy before starting a new book.
 * Remember to maintain a Neutral point of view.
 * Explore, be bold in editing pages, and have fun!

You will find more resources in Community Portal. If you want to ask a question, visit the Study help desk, the Reading Room, IRC channel or ask me personally on my talk page. For site news, see the Bulletin board. It might be a good idea to add that page to your "watchlist" so that you can see when any new information is posted there. You can do that by clicking the tab labeled "watch" at the top of the page.

Good luck! --Panic (talk) 16:20, 11 December 2007 (UTC)

title: User talk:Jaysamin


text:
User talk:Yuhung0522

Welcome message
Hello, and welcome to Wikibooks!

Here are some tips to help you get started:
 * To learn the wiki-markup-language syntax, see Help:Editing.
 * Make sure to sign your posts and comments with four tildes, like this: ~~~~
 * There is a box at the top of the edit window (if javascript is enabled on your browser) that will insert it too (looks like part of a signature). This will let others know who left it, and make it easy to reply back to you.
 * Remember to conduct any editing experiments in the sandbox.
 * You can tell the community something about yourself in your userpage.
 * You can get to this page by clicking the tab at the top of the page labeled with your registered username.
 * Wikibooks is a collection of open-source textbooks. (What is Wikibooks).
 * If you are a Wikipedian, see Wikibooks for Wikipedians for a primer on how things work here (it's a little different).
 * If you want to base your work here on materials from Wikipedia, please use WB:RFI (requests for importation) to bring the material over in compliance with the GFDL.
 * If you're an instructor and plan on using Wikibooks for a class project, see Guidelines for class projects
 * Please say hello at the Reading Room with any questions or ideas.
 * Eventually, you might want to read the Manual of Style and Policies and Guidelines.
 * Help us by participating in policy and guideline creation.
 * Please take a look at Naming policy before starting a new book.
 * Remember to maintain a Neutral point of view.
 * Explore, be bold in editing pages, and have fun!

You will find more resources in Community Portal. If you want to ask a question, visit the Study help desk, the Reading Room, IRC channel or ask me personally on my talk page. For site news, see the Bulletin board. It might be a good idea to add that page to your "watchlist" so that you can see when any new information is posted there. You can do that by clicking the tab labeled "watch" at the top of the page.

Good luck! --Panic (talk) 16:20, 11 December 2007 (UTC)

title: User talk:Yuhung0522


text:
User talk:Pi zero

 This Wikibooks user has passed away. Condolences may be added below. Please do not add any other messages.

title: User talk:Pi zero


text:
Cookbook:Ugali (Maize Porridge)

| Vegan Cuisine | African Cuisines

Ugali, a porridge-like dish made with maize meal, is a staple dish in Kenya and in Tanzania.

Ingredients

 * 4 cups white cornmeal or ground maize
 * 8 cups water
 * Salt to taste (optional)

Procedure

 * 1) Boil the water in a saucepan.
 * 2) Add salt if desired, and pour the corn flour slowly into boiling water, stirring continuously. Try to mash up any lumps that do form—the aim is to get a smooth consistency. A whisk makes this easier, as does sifting the flour.
 * 3) Continue to cook, stirring constantly, until it has the consistency of thick oatmeal.
 * 4) Serve hot ugali immediately with any meat or vegetable stew, or any dish with a sauce or gravy.

title: Cookbook:Ugali (Maize Porridge)


text:
User talk:Myururdurmaz

Come introduce yourself at the new users page. If you have any questions, you can ask there or contact me personally.--Whiteknight (Page) (Talk) 17:16, 11 December 2007 (UTC)

title: User talk:Myururdurmaz


text:
User talk:75.19.73.101

Welcome!
Welcome to Wikibooks, a collection of open-content textbooks! You don't have to log in to read or edit articles on Wikibooks, but creating an account is quick, free and non-intrusive, requires no personal information, and gives you many benefits, including:
 * The use of a username of your choice
 * The ability to view all your contributions via a "My contributions" link
 * Your own user page
 * Your own talk page which, if you choose, also allows users to send you messages without knowing your e-mail address
 * The use of your own personal watchlist to which you can add articles that interest you
 * The ability to rename pages.
 * The ability to upload images
 * The ability to customize the appearance and behavior of the website
 * The eligibility to become an administrator
 * The right to be heard in votes and elections
 * Your IP address will no longer be visible to other users.

We hope that you choose to become a Wikibookian and create an account. Feel free to ask me any questions you may have on my talk page. By the way, make sure to sign your posts and comments with four tildes (~~~~), which will let others know who left it.

– Mike.lifeguard  | talk 17:27, 11 December 2007 (UTC)

title: User talk:75.19.73.101


text:
User talk:Certes

If you wish to contact me, please use my Wikipedia talk page. I am not active at Wikibooks, but have reserved this name to avoid future confusion.

title: User talk:Certes


text:
User:Mdd

I am primarily a user of the Dutch and English Wikipedia, so you'll probably get a much faster response if you use my userpage here for getting in touch with me. Thanks!

 * Interested in:
 * Consciousness Studies
 * Systems Theory

nl:Gebruiker:Mdd

title: User:Mdd


text: User talk:208.122.68.109

title: User talk:208.122.68.109


text:
VHDL for FPGA Design

Combinational Logic

 * 1) /Decoder/
 * 2) /Multiplexer/
 * 3) /Priority Encoder/
 * 4) /4-Bit Adder/
 * 5) /4-Bit Multiplier/
 * 6) /4-Bit ALU/

Sequential Logic

 * 1) /D Flip Flop/
 * 2) /T Flip Flop/
 * 3) /JK Flip Flop/
 * 4) /4-Bit Binary Counter with Parallel Load/
 * 5) /4-Bit BCD Counter with Clock Enable/
 * 6) /4-Bit Shift Register/
 * 7) /4-Bit Johnson Counter with Reset/

State-Machine

 * 1) /State-Machine Design Example Asynchronous Counter/
 * 2) /State-Machine Design Example Serial Parity Generator/

Design Exercises

 * 1) /Example Application Serial Adder/
 * 2) /Example Application Using PicoBlaze/
 * 3) /Complete synthesisable VHDL code for Signed 32 bit Radix-16 multiplier/

title: VHDL for FPGA Design


text:
User talk:Gonzalezmorales

Come introduce yourself at the new users page. If you have any questions, you can ask there or contact me personally.--Whiteknight (Page) (Talk) 19:45, 11 December 2007 (UTC)

Introduction to Game Theory
Thanks for your contributions to this book. I did some work on it a while back, but seem to have stalled of late. Can I look forward to more contributions from yourself? --AdRiley (talk) 08:54, 12 December 2007 (UTC)

title: User talk:Gonzalezmorales


text:
User talk:Flolit

Come introduce yourself at the new users page. If you have any questions, you can ask there or contact me personally.--Whiteknight (Page) (Talk) 19:46, 11 December 2007 (UTC)

Wikijunior Bugs
Hi Flolit I'm just stopping by to say thanks for your recent work on the wikijunior bugs book. you're doing a great job.

Keep up the good work, and if you need anything, feel free to ask.

Regards

Reece  (Talk)   (Contributions)  12:21, 25 October 2008 (UTC)

re: Diving beetle Wikibugs
Hi again Flolit. That's absolutely fine, the book is open to additions of any kind and the extra species looks to be a valuable addition. Fantastic to see your continued contributions to the project! Reece  (Talk)   (Contributions)  22:38, 3 March 2011 (UTC)

Dragonfly/Damselfly
Hi Flolit - I rolled back a change I made to Wikijunior:Bugs. I thought I was making it better, but now that I see what you're doing, I step aside and get out of your way. :-) --Jomegat (discuss • contribs) 20:16, 5 March 2012 (UTC)

title: User talk:Flolit


text:
User talk:Econproff

Come introduce yourself at the new users page. If you have any questions, you can ask there or contact me personally.--Whiteknight (Page) (Talk) 19:49, 11 December 2007 (UTC)

title: User talk:Econproff


text:
User talk:Raimondo

Welcome!
Come introduce yourself at the new users page. If you have any questions, you can ask there or contact me personally.--Whiteknight (Page) (Talk) 20:15, 11 December 2007 (UTC)

Malline:Käännettävä
I think you may be looking for the Icelandic Version of wikibooks. – Mike.lifeguard  | talk 15:10, 17 December 2007 (UTC)
 * It was mistake! --Raimondo (talk) 22:03, 18 February 2008 (UTC)

Commons images deleted
G'day, several images used by the book VHDL for FPGA Design have been deleted on the Wiki Commons due to problems with their licensing. Please see the CommonsTicker for more information. Webaware talk 03:17, 18 February 2008 (UTC)

 * Hey Raimondo, how are you? The people at Commons can be sticklers for the proper licensing of images. When you submit an image, either here at wikibooks or on commons, you need to be sure to specify proper licensing information, so that those images don't get deleted accidentally. Many of the images that would be used in your VHDL book could also be used in other places, such as Programmable Logic, Digital Circuits, and Microprocessor Design. If you would be interested, we could work together to produce a nice set of images for all these books together, and ensure that they are licensed properly. Let me know if you are interested, because I would love to start up a project like this. --Whiteknight (Page) (Talk) 16:50, 18 February 2008 (UTC)

 * Hi, Image:Decoder 3 8 EN.png is duplicate of Image:Decoder.PNG, so it can delete. Actually I only start that VHDL book and ask some students to continue it (Maybe I continue it also little bit later), but I fully agree with you, that those books can be use lots of same images. Of course we are interested work together and we are glad, if you help us any licensing problem. You can freely repair any of our licensing mistakes. --Raimondo (talk) 22:03, 18 February 2008 (UTC)

 * Thanks for the quick reply! Those images that were deleted,
 * did you upload them?
 * => Yes we are!
 * Did you create them?
 * => Yes we are!
 * If so, we can upload them again,
 * => Please do it and repair any of our licensing mistakes also later on!
 * and make sure that they have the proper license information so that they do not get deleted again. If you would upload them again, I can check to ensure that they have the correct license. If you would like, you can email me the pictures, and I can properly upload them for you too.
 * => All images we have and we will upload for VHDL for FPGA Design and VHDL-kieli FPGA-suunnittelussa pages are intend to upload commons and use boath of those pages and they are all made by ourself with Xilinx ISE WebPACK or copied inside of wikimedia.
 * What license should they use? --Whiteknight (Page) (Talk) 01:36, 19 February 2008 (UTC)
 * =>Is  OK?
 * Can you help us as soon as possible. We are planed that our students (http://commons.wikimedia.org/wiki/User_talk:MOJO1985) who work on that page present his work to other students next thursday. --Raimondo (talk) 17:01, 19 February 2008 (UTC)

Category replaced
Hi Raimondo, I noticed your the person who is doing much of the Suomi chess pages. You have some good ideas and I check out your pages. I've recently moved the Category:Chess Opening Theory category to the Category:Chess opening theory. Will update your user page because I noticed you linked to it. ChessCreator (talk) 21:39, 2 April 2008 (UTC)

title: User talk:Raimondo


text: User talk:Conan

title: User talk:Conan


text:
User talk:99.227.66.69

Welcome!
Welcome to Wikibooks, a collection of open-content textbooks! You don't have to log in to read or edit articles on Wikibooks, but creating an account is quick, free and non-intrusive, requires no personal information, and gives you many benefits, including:
 * The use of a username of your choice
 * The ability to view all your contributions via a "My contributions" link
 * Your own user page
 * Your own talk page which, if you choose, also allows users to send you messages without knowing your e-mail address
 * The use of your own personal watchlist to which you can add articles that interest you
 * The ability to rename pages.
 * The ability to upload images
 * The ability to customize the appearance and behavior of the website
 * The eligibility to become an administrator
 * The right to be heard in votes and elections
 * Your IP address will no longer be visible to other users.

We hope that you choose to become a Wikibookian and create an account. Feel free to ask me any questions you may have on my talk page. By the way, make sure to sign your posts and comments with four tildes (~~~~), which will let others know who left it.

– Mike.lifeguard  | talk 20:22, 11 December 2007 (UTC)

title: User talk:99.227.66.69


text:
User talk:Mdd

Welcome message
Hello, and welcome to Wikibooks!

Here are some tips to help you get started:
 * To learn the wiki-markup-language syntax, see Help:Editing.
 * Make sure to sign your posts and comments with four tildes, like this: ~~~~
 * There is a box at the top of the edit window (if javascript is enabled on your browser) that will insert it too (looks like part of a signature). This will let others know who left it, and make it easy to reply back to you.
 * Remember to conduct any editing experiments in the sandbox.
 * You can tell the community something about yourself in your userpage.
 * You can get to this page by clicking the tab at the top of the page labeled with your registered username.
 * Wikibooks is a collection of open-source textbooks. (What is Wikibooks).
 * If you are a Wikipedian, see Wikibooks for Wikipedians for a primer on how things work here (it's a little different).
 * If you want to base your work here on materials from Wikipedia, please use WB:RFI (requests for importation) to bring the material over in compliance with the GFDL.
 * If you're an instructor and plan on using Wikibooks for a class project, see Guidelines for class projects
 * Please say hello at the Reading Room with any questions or ideas.
 * Eventually, you might want to read the Manual of Style and Policies and Guidelines.
 * Help us by participating in policy and guideline creation.
 * Please take a look at Naming policy before starting a new book.
 * Remember to maintain a Neutral point of view.
 * Explore, be bold in editing pages, and have fun!

You will find more resources in Community Portal. If you want to ask a question, visit the Study help desk, the Reading Room, IRC channel or ask me personally on my talk page. For site news, see the Bulletin board. It might be a good idea to add that page to your "watchlist" so that you can see when any new information is posted there. You can do that by clicking the tab labeled "watch" at the top of the page.

Good luck! --Panic (talk) 20:24, 11 December 2007 (UTC)

title: User talk:Mdd


text:
User talk:Darsh~enwikibooks

Welcome message
Hello, and welcome to Wikibooks!

Here are some tips to help you get started:
 * To learn the wiki-markup-language syntax, see Help:Editing.
 * Make sure to sign your posts and comments with four tildes, like this: ~~~~
 * There is a box at the top of the edit window (if javascript is enabled on your browser) that will insert it too (looks like part of a signature). This will let others know who left it, and make it easy to reply back to you.
 * Remember to conduct any editing experiments in the sandbox.
 * You can tell the community something about yourself in your userpage.
 * You can get to this page by clicking the tab at the top of the page labeled with your registered username.
 * Wikibooks is a collection of open-source textbooks. (What is Wikibooks).
 * If you are a Wikipedian, see Wikibooks for Wikipedians for a primer on how things work here (it's a little different).
 * If you want to base your work here on materials from Wikipedia, please use WB:RFI (requests for importation) to bring the material over in compliance with the GFDL.
 * If you're an instructor and plan on using Wikibooks for a class project, see Guidelines for class projects
 * Please say hello at the Reading Room with any questions or ideas.
 * Eventually, you might want to read the Manual of Style and Policies and Guidelines.
 * Help us by participating in policy and guideline creation.
 * Please take a look at Naming policy before starting a new book.
 * Remember to maintain a Neutral point of view.
 * Explore, be bold in editing pages, and have fun!

You will find more resources in Community Portal. If you want to ask a question, visit the Study help desk, the Reading Room, IRC channel or ask me personally on my talk page. For site news, see the Bulletin board. It might be a good idea to add that page to your "watchlist" so that you can see when any new information is posted there. You can do that by clicking the tab labeled "watch" at the top of the page.

Good luck! --Panic (talk) 20:24, 11 December 2007 (UTC)

Your account will be renamed
Hello,

The developer team at Wikimedia is making some changes to how accounts work, as part of our on-going efforts to provide new and better tools for our users like cross-wiki notifications. These changes will mean you have the same account name everywhere. This will let us give you new features that will help you edit and discuss better, and allow more flexible user permissions for tools. One of the side-effects of this is that user accounts will now have to be unique across all 900 Wikimedia wikis. See the announcement for more information.

Unfortunately, your account clashes with another account also called Darsh. To make sure that both of you can use all Wikimedia projects in future, we have reserved the name Darsh~enwikibooks that only you will have. If you like it, you don't have to do anything. If you do not like it, you can pick out a different name.

Your account will still work as before, and you will be credited for all your edits made so far, but you will have to use the new account name when you log in.

Sorry for the inconvenience.

Yours, Keegan Peterzell Community Liaison, Wikimedia Foundation 23:08, 17 March 2015 (UTC)

Renamed
 This account has been renamed as part of single-user login finalisation. If you own this account you can |log in using your previous username and password for more information. If you do not like this account's new name, you can choose your own using this form after logging in: . -- Keegan (WMF) (talk) 04:51, 19 April 2015 (UTC)

title: User talk:Darsh~enwikibooks


text:
User talk:67.212.96.42

– Mike.lifeguard  | talk 20:26, 11 December 2007 (UTC)

title: User talk:67.212.96.42


text:
User talk:Nancyw

Welcome message
Hello, and welcome to Wikibooks!

Here are some tips to help you get started:
 * To learn the wiki-markup-language syntax, see Help:Editing.
 * Make sure to sign your posts and comments with four tildes, like this: ~~~~
 * There is a box at the top of the edit window (if javascript is enabled on your browser) that will insert it too (looks like part of a signature). This will let others know who left it, and make it easy to reply back to you.
 * Remember to conduct any editing experiments in the sandbox.
 * You can tell the community something about yourself in your userpage.
 * You can get to this page by clicking the tab at the top of the page labeled with your registered username.
 * Wikibooks is a collection of open-source textbooks. (What is Wikibooks).
 * If you are a Wikipedian, see Wikibooks for Wikipedians for a primer on how things work here (it's a little different).
 * If you want to base your work here on materials from Wikipedia, please use WB:RFI (requests for importation) to bring the material over in compliance with the GFDL.
 * If you're an instructor and plan on using Wikibooks for a class project, see Guidelines for class projects
 * Please say hello at the Reading Room with any questions or ideas.
 * Eventually, you might want to read the Manual of Style and Policies and Guidelines.
 * Help us by participating in policy and guideline creation.
 * Please take a look at Naming policy before starting a new book.
 * Remember to maintain a Neutral point of view.
 * Explore, be bold in editing pages, and have fun!

You will find more resources in Community Portal. If you want to ask a question, visit the Study help desk, the Reading Room, IRC channel or ask me personally on my talk page. For site news, see the Bulletin board. It might be a good idea to add that page to your "watchlist" so that you can see when any new information is posted there. You can do that by clicking the tab labeled "watch" at the top of the page.

Good luck! --Panic (talk) 20:37, 11 December 2007 (UTC)

title: User talk:Nancyw


text:
User talk:Ksadie23~enwikibooks

Welcome message
Hello, and welcome to Wikibooks!

Here are some tips to help you get started:
 * To learn the wiki-markup-language syntax, see Help:Editing.
 * Make sure to sign your posts and comments with four tildes, like this: ~~~~
 * There is a box at the top of the edit window (if javascript is enabled on your browser) that will insert it too (looks like part of a signature). This will let others know who left it, and make it easy to reply back to you.
 * Remember to conduct any editing experiments in the sandbox.
 * You can tell the community something about yourself in your userpage.
 * You can get to this page by clicking the tab at the top of the page labeled with your registered username.
 * Wikibooks is a collection of open-source textbooks. (What is Wikibooks).
 * If you are a Wikipedian, see Wikibooks for Wikipedians for a primer on how things work here (it's a little different).
 * If you want to base your work here on materials from Wikipedia, please use WB:RFI (requests for importation) to bring the material over in compliance with the GFDL.
 * If you're an instructor and plan on using Wikibooks for a class project, see Guidelines for class projects
 * Please say hello at the Reading Room with any questions or ideas.
 * Eventually, you might want to read the Manual of Style and Policies and Guidelines.
 * Help us by participating in policy and guideline creation.
 * Please take a look at Naming policy before starting a new book.
 * Remember to maintain a Neutral point of view.
 * Explore, be bold in editing pages, and have fun!

You will find more resources in Community Portal. If you want to ask a question, visit the Study help desk, the Reading Room, IRC channel or ask me personally on my talk page. For site news, see the Bulletin board. It might be a good idea to add that page to your "watchlist" so that you can see when any new information is posted there. You can do that by clicking the tab labeled "watch" at the top of the page.

Good luck! --Panic (talk) 20:37, 11 December 2007 (UTC)

Your account will be renamed
Hello,

The developer team at Wikimedia is making some changes to how accounts work, as part of our on-going efforts to provide new and better tools for our users like cross-wiki notifications. These changes will mean you have the same account name everywhere. This will let us give you new features that will help you edit and discuss better, and allow more flexible user permissions for tools. One of the side-effects of this is that user accounts will now have to be unique across all 900 Wikimedia wikis. See the announcement for more information.

Unfortunately, your account clashes with another account also called Ksadie23. To make sure that both of you can use all Wikimedia projects in future, we have reserved the name Ksadie23~enwikibooks that only you will have. If you like it, you don't have to do anything. If you do not like it, you can pick out a different name.

Your account will still work as before, and you will be credited for all your edits made so far, but you will have to use the new account name when you log in.

Sorry for the inconvenience.

Yours, Keegan Peterzell Community Liaison, Wikimedia Foundation 23:24, 17 March 2015 (UTC)

Renamed
 This account has been renamed as part of single-user login finalisation. If you own this account you can |log in using your previous username and password for more information. If you do not like this account's new name, you can choose your own using this form after logging in: . -- Keegan (WMF) (talk) 05:10, 19 April 2015 (UTC)

title: User talk:Ksadie23~enwikibooks


text:
Happiness/Awareness

''When you meet someone better than yourself, turn your thoughts to becoming his equal. When you meet someone not as good as you are, look within and examine your own self.'' -Confucius

The first step required to change the way your mind works is to be aware of your thoughts. Only when you catch yourself in a negative thought process is it possible to consciously halt it. This is not something that can be achieved overnight; it requires practice and willpower.

title: Happiness/Awareness


text:
Happiness/Passion

''The opposite of love is not hate, it's indifference. ''The opposite of art is not ugliness, it's indifference. ''The opposite of faith is not heresy, it's indifference. And the opposite of life is not death, it's indifference. -Elie Wiesel

It seems quite simple that people who have a goal in mind are not as listless as those without one. Yet some go through their daily lives not knowing what they want to get out of that day. How can one accomplish something when there is no goal to accomplish? Goals don't have to be of epic proportions - in fact, they probably shouldn't be. Life should be taken step by step. Every small achievement counts.

title: Happiness/Passion


title: User:Reywas92


text: Template:Style/ril

title: Template:Style/ril


text: User talk:198.200.181.204

title: User talk:198.200.181.204


text:
User:Whiteknight/tag

 * This message will be archived normally

title: User:Whiteknight/tag


text:
User:Whiteknight/per book/Wikibooks:Reading room.js

//

$(function {  var editlinks = wk.getElementsByClass("editsection");  for(var i = 0; i < editlinks.length; i++) {    var j = i + 1    var b = document.createElement("a");    b.href = "javascript:TagSection(" + j + ");";    b.innerHTML = "tag";    b.id = "WK_Tag_" + j;    var c = document.createElement("a");    c.href = "javascript:DeleteSection(" + j + ");";    c.innerHTML = "delete";    c.id = "WK_Delete_" + j;    wk.appendChildren(editlinks[i], ["[", b, "][", c, "]"]);  } });

function TagSection(j) { wk.postEdit(wgPageName,              "",               "tagging unsigned section with timestamp",               {section:j, filter:addTopNote}); wk.toggleDisplay("WK_Tag_" + j, "none"); }

function DeleteSection(j) { if(confirm("Delete this section?")) { wk.postEdit(wgPageName,                "",                 "removing bad or old conversation",                {section:j}); wk.toggleDisplay("WK_Delete_" + j, "none"); } }

function addTopNote(pagetext, text) { var lines = pagetext.split("\n"); var title = lines.shift; pagetext = title + "\n" + text; for(var i = 0; i < lines.length; i++) { pagetext = pagetext + "\n" + lines[i]; } return pagetext; } //


text:
User talk:Granito~enwikibooks

Welcome!
Come introduce yourself at the new users page. If you have any questions, you can ask there or contact me personally.--Whiteknight (Page) (Talk) 00:47, 12 December 2007 (UTC)

Your account will be renamed
Hello,

The developer team at Wikimedia is making some changes to how accounts work, as part of our on-going efforts to provide new and better tools for our users like cross-wiki notifications. These changes will mean you have the same account name everywhere. This will let us give you new features that will help you edit and discuss better, and allow more flexible user permissions for tools. One of the side-effects of this is that user accounts will now have to be unique across all 900 Wikimedia wikis. See the announcement for more information.

Unfortunately, your account clashes with another account also called Granito. To make sure that both of you can use all Wikimedia projects in future, we have reserved the name Granito~enwikibooks that only you will have. If you like it, you don't have to do anything. If you do not like it, you can pick out a different name.

Your account will still work as before, and you will be credited for all your edits made so far, but you will have to use the new account name when you log in.

Sorry for the inconvenience.

Yours, Keegan Peterzell Community Liaison, Wikimedia Foundation 23:11, 17 March 2015 (UTC)

Renamed
 This account has been renamed as part of single-user login finalisation. If you own this account you can |log in using your previous username and password for more information. If you do not like this account's new name, you can choose your own using this form after logging in: . -- Keegan (WMF) (talk) 05:00, 19 April 2015 (UTC)

title: User talk:Granito~enwikibooks


text: User talk:203.148.177.214

title: User talk:203.148.177.214


text:
User talk:67.142.130.38

 * Last warning - if you troll, I block. – Mike.lifeguard  | talk 01:24, 12 December 2007 (UTC)

title: User talk:67.142.130.38


text:
.NET Development Foundation/Services

Services, threading, and application domains

Services, threading, and application domains
Exam objective: Implementing service processes, threading, and application domains in a .NET Framework application

Services
The term service stands here for a Windows service. The basic definition of a Windows service is a long-running process that does not require a user interface. Why would you need a long-running process that does not require a user interface? Essentially two reasons:
 * Doing maintenance tasks that do not need user intervention. A backup software for example will regularly check the backup schedule and execute the different backup tasks when needed. No user interface is needed for that.
 * Responding to requests that come from other processes or from the operating system. An http server such as IIS (Windows component that process web requests) will receive http requests coming from client browsers and produce responses (html pages) to those same browsers. A database process is another good example. Again the http server does not need a user interface because the interface with the client is managed by the client browser component.

The exam objectives concerning services are very basic and touch the first problems that you will encounter when dealing with them:
 * Since the service has no user interface then who will start and stop it? The answer is that the operating system executes the services directly but you have to ‘’register’’ your service to let the system know where it is and what to do with it (this is the installation process)
 * A process with a user interface essentially waits for events coming from the user. How does a service ‘’work’’ in the absence of a message pump (the technique to get user input in a typical online application)?
 * If the service does a user interface function it will “hang” waiting for a non-existent user. How can you avoid that?

The more important and complicated design issues are not covered by this exam and will be treated by the enterprise development exam.

Implement, install, and control a service
Exam objective: Implement, install, and control a service

(Refer System.ServiceProcess namespace)

Inherit from ServiceBase class - MSDN

 * A service is a long-running executable. It does not provide a user interface, and does not require any user to be logged onto the computer. Services run as System, but it is possible to choose to have them run under a different user account. The ServiceBase class is a base class for a service. It must be derived from when creating a new service.

 * Almost all services will override the OnStart and OnStop methods of ServiceBase.

ServiceController class and ServiceControllerPermission class

 * ServiceController class - MSDN

 * ServiceControllerPermission class - MSDN

ServiceInstaller and ServiceProcessInstaller class

 * ServiceInstaller - MSDN

 * ServiceProcessInstaller class - MSDN

ServiceChangeDescription structure and ServiceChangeReason enumeration

 * SessionChangeDescription structure - MSDN

 * SessionChangeReason enumeration - MSDN

Develop multithreaded applications
Exam objective: Develop multithreaded .NET Framework applications

(Refer System.Threading namespace)

Thread class - MSDN

ThreadPool class - MSDN

ThreadStart delegate, ParameterizedThreadStart delegate, and SynchronizationContext class

 * ThreadStart delegate - MSDN

 * The simplest way to create a thread is to instantiate the Thread class. The Thread constructor takes a delegate argument. The ThreadStart delegate points to a method containing your logic. For example:

Thread t1 = new Thread (new ThreadStart(LengthyLogic)); public void LengthyLogic {  // Logic code }

 * ParameterizedThreadStart delegate - MSDN

 * When you start a thread, sometimes you need to pass in some data for processing. .NET 2.0 provides a new delegate, ParameterizedThreadStart, which takes a parameter of type object. The class has a new overload function Thread.Start. It allows you to specify the value to be passed into the thread. This approach is simple, but is not type-safe. Example:

Thread t1 = new Thread(new ParameterizedThreadStart(LengthyLogic)); // Use the overload of the Start method that has a parameter of type Object. t1.Start(myData); static void LengthyLogic(object data) {  // Logic code }

 * SynchronizationContext class - MSDN

 * The Code Project Example for SynchronizationContext Class

Timeout class, Timer class, TimerCallback delegate, WaitCallback delegate, WaitHandle class, and WaitOrTimerCallback delegate

 * Timeout class - MSDN

 * Timer class - MSDN

 * TimerCallback delegate - MSDN

 * WaitCallback delegate - MSDN

 * WaitHandle class - MSDN

 * WaitOrTimerCallback delegate - MSDN

ThreadExceptionEventArgs class and ThreadExceptionEventHanlder class

 * ThreadExceptionEventArgs class - MSDN

 * ThreadExceptionEventHandler class - MSDN

ThreadState enumeration and ThreadPriority enumeration

 * ThreadState enumeration - MSDN

 * ThreadPriority enumeration - MSDN

ReaderWriterLock class - MSDN

AutoResetEvent class and ManualResetEvent class

 * AutoResetEvent class - MSDN

 * ManualResetEvent class - MSDN

IAsyncResult interface and ICancelableAsyncResult interface

 * (Refer System namespace)

 * IAsyncResult interface - MSDN

 * ICancelableAsyncResult interface - MSDN

EventWaitHandle class, RegisterWaitHandle class, SendOrPostCallback delegate, and IOCompletionCallback delegate

 * EventWaitHandle class - MSDN

 * RegisterWaitHandle class - MSDN

 * This is a typo in the exam list of objectives and the training kit. The term RegisterWaitForSingleObject should be saerch instead (see KB)

 * SendOrPostCallback delegate - MSDN

 * IOCompletionCallback delegate - MSDN

Interlocked class, NativeOverlapped structure, and Overlapped class

 * Interlocked class - MSDN

 * NativeOverlapped structure - MSDN

 * Overlapped class - MSDN

ExecutionContext class, HostExecutionContext class, HostExecutionContext manager, and ContextCallback delegate

 * ExecutionContext class - MSDN

 * HostExecutionContext class - MSDN

 * HostExecutionContext manager - MSDN

 * In fact was is referred to here is the HostExecutionContextManager class

 * ContextCallback delegate - MSDN

LockCookie structure, Monitor class, Mutex class, and Semaphore class MSDN]

 * LockCookie structure - MSDN

 * Monitor class - MSDN

 * Mutex class - MSDN

 * Semaphore class - MSDN

 * Lock vs Monitor vs Mutex - MSDN

Using applications domains
Exam objective: Create a unit of isolation for common language runtime in a .NET Framework application by using application domains

(Refer System namespace)

Create an application domain
See MSDN

An application domain is a division of a process into multiple parts. Applications running in different application domains are as isolated as they would be in different processes. So they cannot access memory in another application domain. However, if native code is run, it can gain unlimited access to the whole process, which includes other application domains.

Application domains are easier to maintain and are faster because it is easier to communicate between application domains than between processes. An application domain can hold multiple assemblies.

To create an application domain, you must at least supply a name for the new application domain: AppDomain ad = AppDomain.CreateDomain("Name");

Use AppDomain.CurrentDomain to get the application domain the calling thread is using.

Load assemblies into an application domain
See MSDN

It is possible to execute an assembly by name using AppDomain.ExecuteAssemblyByName: AppDomain ad = AppDomain.CreateDomain("Name"); ad.ExecuteAssemblyByName("aname, Version=1.0.0.0, Culture=neutral, PublicKeyToken=a9b8c7d6");

Or use AppDomain.ExecuteAssembly to supply a path to the assemby: AppDomain ad = AppDomain.CreateDomain("Name"); ad.ExecuteAssembly(@"c:\path\to\file.exe");

Unload an application domain
See MSDN

It is not possible to unload assemblies from the default application domain. However if an assembly is loaded in a different application domain, you can unload the whole application domain which includes all assemblies in that application domain.

To unload an application domain, use the static AppDomain.Unload function: AppDomain ad = AppDomain.CreateDomain("Name"); AppDomain.Unload(ad);

Configure an application domain
See MSDN

The most likely reason to modify the application domain configuration, is to restrict certain permissions to limit the damage if an attacker exploits vulnerabilities in an assembly.

An example is to run an assembly in the Internet Zone. The Internet Zone has limited permissions. To do this create a Zone Evidence and supply it as a parameter when creating the Application Domain: object [] myEvidenceTypes = {new Zone (SecurityZone.Internet)}; Evidence myEvidence = new Evidence(myEvidenceTypes, null); AppDomain ad = AppDomain.CreateDomain("Name", myEvidence); // Pass the Evidence when creating the App. Domain ad.ExecuteAssembly(@"c:\path\to\file.exe"); It is also possible to execute only one assembly in an Application Domain with different permissions; object [] myEvidenceTypes = {new Zone (SecurityZone.Internet)}; Evidence myEvidence = new Evidence(myEvidenceTypes, null); AppDomain ad = AppDomain.CreateDomain("Name"); ad.ExecuteAssembly(@"c:\path\to\file.exe", myEvidence); // Pass the Evidence in the ExecuteAssembly function

Except Evidence, you can also use the AppDomainSetup class to set other properties. AppDomainSetup ads = new AppDomainSetup; ads.ApplicationBase = @"c:\Test"; ads.DisallowCodeDownload = true; AppDomain ad = AppDomain.CreateDomain("Name", null, ads); // use null as second parameter for default Evidence

Retrieve setup information from an application domain
See MSDN

Use the SetupInformation property of an AppDomain to read the settings from that application domain; AppDomainSetup ads = AppDomain.CurrentDomain.SetupInformation; Console.WriteLine(ads.ConfigurationFile); Console.WriteLine(ads.ApplicationName);

Previous / Next

title: .NET Development Foundation/Services


text:
.NET Development Foundation/Configuration

Configuration, diagnostic, management, and installation

Configuration, diagnostic, management, and installation
Exam objective: Embedding configuration, diagnostic, management, and installation features into a .NET Framework application

Configuration management
Configuration management is used here in a restricted sense. It refers to the adaptation of an application to a specific execution environment or user. This is usually done thru the use of configuration files that specify the run time parameters of the application. The typical example of such configuration information is the connection string used to locate and connect to the application database. The exam objectives are all related to the actual interaction of the application with its configuration files.

The management or the design of the configuration files themselves is a vast subject that is not touched by the exam objectives so we will not cover it in this study guide.

Event log
MSDN's definition is "Windows event logs allow your applications and components to record information about important events. You can use these records to audit access to your system, troubleshoot problems, and re-create usage patterns"

For a general discussion see MSDN

For specifics on the EventLog class and some cautions about its use see MSDN

Management information and events
Windows Management Instrumentation - MSDN

Embed configuration management
Exam objective: Embed configuration management functionality into a .NET Framework application.

(Refer System.Configuration namespace)

Configuration class and ConfigurationManager class

 * Configuration class - MSDN

 * ConfigurationManager class - MSDN

ConfigurationSettings class, ConfigurationElement class, ConfigurationElementCollection class, and ConfigurationElementProperty class

 * ConfigurationSettings class - MSDN

 * ConfigurationElement class - MSDN

 * ConfigurationElementCollection class - MSDN

 * ConfigurationElementProperty class - MSDN

Implement IConfigurationSectionHandler interface - MSDN

ConfigurationSection class, ConfigurationSectionCollection class, ConfigurationSectionGroup class, and ConfigurationSectionGroupCollection class

 * ConfigurationSection class - MSDN

 * ConfigurationSectionCollection class - MSDN

 * ConfigurationSectionGroup class - MSDN

 * ConfigurationSectionGroupCollection - MSDN

Implement ISettingsProviderService interface - MSDN

Implement IApplicationSettingsProvider interface - MSDN

ConfigurationValidationBase class - MSDN

 * No direct result on MSDN - to be checked

Implement IConfigurationSystem interface - MSDN

Create custom installer and configure application
Exam objective: Create a custom Microsoft Windows Installer for .NET Framework components by using the System.Configuration.Install namespace, and configure the .NET Framework applications by using configuration files, environment variables, and the .NET Framework Configuration tool (Mscorcfg.msc).

 * For a "cookbook" on for the procedures discussed in this section see MSDN and the corresponding How-To section.

Installer class - MSDN

Configure which runtime version a .NET Framework application should use - MSDN

Configure where the runtime should search for an assembly - MSDN

Configure the location of an assembly and which version of the assembly to use - MSDN and MSDN

Direct the runtime to use the DEVPATH environment variable when searching for assemblies - MSDN

AssemblyInstaller class - MSDN

ComponentInstaller class - MSDN

Configure a .NET Framework application by using the .NET Framework Configuration tool (Mscorcfg.msc) - MSDN

ManagedInstaller class - MSDN

InstallContext class - MSDN

InstallerCollection class - MSDN

Implement IManagedInstaller interface - MSDN

InstallEventHandler delegate - MSDN

Configure concurrent garbage collection - MSDN

Register remote objects by using configuration files - MSDN

Manage an event log
Exam objective: Manage an event log by using the System.Diagnostics namespace

EventLog class - MSDN

EventSourceCreationData class - MSDN

Write to an event log
MSDN

Read from an event log
MSDN

Create a new event log
You create an EventLog by creating the first event source that writes to that log.

The two simplest way to do this are:
 * Use the EventLog.CreateEventSource method
 * Create an EventLog instance, specify a source and then write to the log. The actual creation takes place on execution of the first write.

Note that there is no "EventSource" class in the System.Diagnostics namespace even though an object representing the source is created in the registry.

The recommended way, which does not seem to be covered on the Training Kit (so probably not on the exam) is to use the EventLogInstaller class during the installation of the application. For reference purposes see MSDN

Manage processes and monitor performance
Exam objective: Manage system processes and monitor the performance of a .NET Framework application by using the diagnostics functionality of the .NET Framework 2.0.

(Refer System.Diagnostics namespace)

Get a list of all running processes.

 * Process class - MSDN

 * For example code for GetCurrentProcess, GetProcessesByName, GetProcesses, and GetProcessById see MSDN

Retrieve information about the current process - MSDN

Get a list of all modules loaded by a process

 * The Process.Modules property returns a strongly-typed collection of ProcessModule objects that represent the Process' currently loaded modules.

 * For the Process.Modules property see MSDN

 * For the ProcessModule class see MSDN

PerformanceCounter class, PerformanceCounterCategory, and CounterCreationData class

 * PerformanceCounter class - MSDN

 * PerformanceCounterCategory - MSDN

 * CounterCreationData class - MSDN

Start a process both by using and by not using command-line arguments

 * Starting a Process Overview

 * Processes are started using one of the overloaded Process.Start methods. When passing sensitive data such as passwords to Process.Start, use one of the two overloaded Start methods that accept a SecureString as an argument type.

 * External links

 * MSDN2 Entry for Starting a Process - Process.Start
 * MSDN2 Entry for Starting a Process with ProcessStartInfo. This example demonstrates how to launch IE.
 * MSDN2 Entry for Starting a Process with Command Line Arguments
 * MSDN2 Passing a Password as a SecureString to Process.Start
 * MSDN2 SecureString class

StackTrace class - MSDN

StackFrame class - MSDN

Debug and Trace
Exam objective: Debug and trace a .NET Framework application by using the System.Diagnostics namespace.

Debug class and Debugger class

 * Debug class - MSDN

 * The four static writing methods of the Debug class - Write, WriteLine, WriteIf and WriteLineIf - let you write debug messages to inspect your program's flow and catch errors. Calls to these methods are ignored in the release version of your program (see 'The ConditionalAttribute attribute' below for details).

 * In Visual Studio, the default target for Debug's write methods is the Output window. You can use Debug's Listeners property to access the associated TraceListenerCollection. The following code shows how to use the Remove and Add methods of the collection to control where debug messages are sent to. If you add more than one listener of the same type, the associated target receives the text multiple times.

 * Debugger class - MSDN

Trace class - MSDN

CorrelationManager class - MSDN

TraceListener class - MSDN

TraceSource class - MSDN

TraceSwitch class - MSDN

XmlWriterTraceListener class - MSDN

DelimitedListTraceListener class - MSDN

EventlogTraceListener class - MSDN

Debugger attributes - MSDN

 * DebuggerBrowsableAttribute class - MSDN

 * DebuggerDisplayAttribute class - MSDN

 * DebuggerHiddenAttribute class - MSDN

 * DebuggerNonUserCodeAttribute class - MSDN

 * DebuggerStepperBoundaryAttribute class - MSDN

 * DebuggerStepThroughAttribute class - MSDN

 * DebuggerTypeProxyAttribute class - MSDN

 * DebuggerVisualizerAttribute class - MSDN

Embed management information
Exam objective: Embed management information and events into a .NET Framework application.

(Refer System.Management namespace - MSDN)

Retrieve a collection of Management objects by using the ManagementObjectSearcher class and its derived classes

 * The classes in the System.Management namespace let you use Windows Management Instrumentation (WMI) to manage computer systems. The most notable class in this namespace is ManagementObjectSearcher, that you can use to retrieve management objects based on a WMI query.

 * Information that can be retrieved this way ranges from computer case type (notebook, desktop...) over processor and hard disks details to information about running services and processes. Consult the WMI Reference on MSDN for an overview of all WMI classes and their properties.

 * In the example below a rough and dirty method is defined that prints all properties for all management information objects of a given WMI class. It is then used to print information about the current computer system.

 * ManagementObjectSearcher class - MSDN

 * Enumerate all disk drivers, network adapters, and processes on a computer

 * The following code uses one overload of the ManagementObjectSearcher constructor to list all physical and logical disk drives, network adapters and running processes on a system.

 * Retrieve information about all network connections

 * Example to be provided

 * Retrieve information about all services that are paused

 * The following code uses a ManagementObjectSearcher object to retrieve all running services and then displays their names.

ManagementQuery class - MSDN

EventQuery class - MSDN

 * ObjectQuery class - MSDN

Subscribe to management events by using the ManagementEventWatcher class - MSDN

Previous / Next


text:
.NET Development Foundation/Serialization

Serialization and Input/Output

Serialization and Input/Output
Exam objective: Implementing serialization and input/output functionality in a .NET Framework application

Serialization
Wikipedia's definition for serialization is : "in the context of data storage and transmission, serialization is the process of saving an object onto a storage medium (such as a file, or a memory buffer) or to transmit it across a network connection link in binary form".

The problem that is addressed here is that an object is created by a running process and is thus bound to the lifetime of that process instance. If for whatever reason, and there can be many, you want to "transport" the object in the context of another process instance you've got a problem, that you solve by "saving" the state of you object in the original process and "restoring" it in the destination process. This "saving" part is called serialization and the "restoring" part is called deserialization.

Serializable attribute
An object is serializable if its class name is prefixed with the [Serializable] attribute.

Object Serialization
One can use the BinaryFormatter class to serialize an object. To serialize, use the BinaryFormatter's Serialize method which takes a stream and a serializable object as parameters. To deserialize, use the BinaryFormatter's Deserialize method which takes a stream as a parameter and returns a object that can be cast back to the original object type. Remember to close streams after you use them by calling the stream's Close method.

XML Serialization
One can use the XmlSerializer class to serialize an object. To serialize, use the XmlSerializer's Serialize method which takes a stream and a serializable object as parameters. To deserialize, use the XmlSerializer's Deserialize method which takes a stream as a parameter and returns a object that can be cast back to the original object type. Remember to close streams after you use them by calling the stream's Close method.

For an overview of XML and SOAP serialization see MSDN

Custom Serialization
The ISerializable interface allows an object to control its own serialization and deserialization.

Formatters
A formatter is used to serialize objects into streams.

Isolated storage
For a general discussion on IsolatedStorage tasks see MSDN

Serialize and deserialize
Exam objective: Serialize or deserialize an object or an object graph by using runtime serialization techniques.

(Refer System.Runtime.Serialization namespace)

Serialization interfaces
IDeserializationCallback interface - MSDN IFormatter interface and IFormatterConverter interface

 * IFormatter interface - MSDN

 * IFormatterConverter interface - MSDN

ISerializable interface - MSDN

Serialization attributes

 * For some serialization attributes exemple see MSDN

OnDeserializedAttribute class and OnDeserializingAttribute class

 * OnDeserializedAttribute class - MSDN

 * OnDeserializingAttribute class - MSDN

OnSerializedAttribute class and OnSerializingAttribute class
 * OnSerializedAttribute class - MSDN

 * OnSerializingAttribute class - MSDN

OptionalFieldAttribute class - MSDN

SerializationEntry structure and SerializationInfo class
SerializationEntry structure - MSDN

SerializationInfo class - MSDN

ObjectManager class
ObjectManager class - MSDN

Formatter class, FormatterConverter class, and FormatterServices class
Formatter class - MSDN

FormatterConverter class - MSDN

FormatterServices class - MSDN

StreamingContext structure
StreamingContext structure - MSDN

XML Serialization
Exam objective: Control the serialization of an object into XML format by using the System.Xml.Serialization namespace.

XmlSerializer class - MSDN

 * Exam objective: Serialize and deserialize objects into XML format by using the XmlSerializer class

Control serialization by using serialization attributes - MSDN

 * For a list of attributes for controlling serialization see MSDN

Implement XML Serialization interfaces to provide custom formatting for XML serialization - MSDN

Delegates and event handlers are provided by the System.Xml.Serialization namespace - MSDN

Custom serialization
Exam objective: Implement custom serialization formatting by using the Serialization Formatter classes.

SoapFormatter class - MSDN

 * (Refer System.Runtime.Serialization.Formatters.Soap namespace)

BinaryFormatter class - MSDN

 * (Refer System.Runtime.Serialization.Formatters.Binary namespace

File system classes
Exam objective: Access files and folders by using the File System classes.

(Refer System.IO namespace)

File class and FileInfo class

 * For common IO tasks see MSDN

 * File class - MSDN

 * FileInfo class - MSDN

Directory class and DirectoryInfo class

 * Directory class - MSDN

 * DirectoryInfo class - MSDN

DriveInfo class and DriveType enumeration

 * DriveInfo class - MSDN

 * DriveType enumeration - MSDN

FileSystemInfo class and FileSystemWatcher class

 * FileSystemInfo class

 * FileSystemWatcher class

 * The FileSystemWatcher class is designed to detected changes in the filesystem.

 * It can be parametrised with the Filter and Path Property.

Example: FileSystemWatcher w = new FileSystemWatcher; w.Filter = "*.txt"; w.Path = @"C:\Windows";

 * The Filter property is only used to check the pattern of a file name. So do not use a directory path there.

 * You can add methods such as the WaitForChanged(..) to watch for changes in the specified area.

Path class - MSDN

 * The System.IO.Path class has many useful static methods for creating and parsing resource paths.

ErrorEventArgs class and ErrorEventHandler delegate

 * ErrorEventArgs class - MSDN

 * ErrorEventHandler delegate - MSDN

RenamedEventArgs class and RenamedEventHandler delegate

 * RenamedEventArgs class - MSDN

 * RenamedEventHandler delegate - MSDN

Byte streams
Exam objective: Manage byte streams by using Stream classes.

(Refer System.IO namespace)

FileStream class - MSDN Stream class - MSDN

 * System.IO.Stream is the abstract base class that all other streams inherit from. It is not possible in instantiate a Stream class.  Instead use one of the other classes that derive from Stream.

 * In terms of the 70-536 exam objectives, the most important classes that inherit from Stream are:
 * System.IO.FileStream
 * System.IO.MemoryStream
 * System.IO.Compression.DeflateStream
 * System.IO.Compression.GZipStream
 * System.Security.Cryptography.CryptoStream
 * System.IO.BufferedStream

 * For a complete list of classes that inherit from Stream see MSDN.

 * For a discussion on File and Stream IO see MSDN.

MemoryStream class - MSDN

BufferedStream class - MSDN

Reader and Writer classes
Exam objective: Manage the .NET Framework application data by using Reader and Writer classes.

(Refer System.IO namespace)

StringReader class and StringWriter class - MSDN and MSDN
 * StringReader and StringWriter inherit from TextReader/TextWriter.
 * StringReader is a TextReader for strings.
 * StringWriter is a TextWriter for strings.

TextReader class and TextWriter class

 * TextReader class - MSDN

 * TextReader and TextWriter are abstract base classes that StreamReader, StreamWriter, StringReader, and StringWriter derive from. StreamReader and StringReader derive from TextReader.  StreamWriter and StringWriter derive from TextWriter.

 * TextWriter class - MSDN

StreamReader class and StreamWriter class - MSDN and MSDN

 * The StreamReader and StreamWriter classes provide basic functionality for reading and writing to character-based streams (ReadLine, WriteLine, ReadToEnd).

 * StreamReader and StreamWriter inherit from the abstract classes TextReader and TextWriter:
 * StreamReader is a TextReader of streams.
 * StreamWriter is a TextWriter of streams.

 * The Peek and the Read method of a StreamReader:
 * The Peek-method gets the character at a certain position, but does not advance.
 * The Read-method gets the character at a certain position and advances.

BinaryReader class and BinaryWriter class

 * BinaryReader class - MSDN

 * BinaryWriter class - MSDN

Compression and isolated storage
Exam objective: Compress or decompress stream information in a .NET Framework application and improve the security of application data by using isolated storage.

(Refer System.IO.Compression namespace)

(Refer System.IO.IsolatedStorage namespace)

IsolatedStorageFile class - MSDN IsolatedStorageFileStream class - MSDN

DeflateStream class - MSDN

GZipStream class - MSDN

Previous / Next


text:
.NET Development Foundation/Security

Security

Security
Exam objective: Improving the security of the .NET Framework applications by using the .NET Framework 2.0 security features

Code access security
Code access security, CAS, allows the control of various permissions granted to specific managed applications. MSDN

Permissions allow access to system resources. A permission set is a collection of permissions. A code group relates exactly one permission set to exactly one evidence type. Evidence is used to identify an assembly. Evidence types can include the application directory, cryptographic hash of the assembly, publisher's digital signature, site from which the assembly was downloaded, cryptographic strong name of the assembly, URL from which the assembly was downloaded, and the security zone in which the assembly is running. Security zones include the computer zone, local Intranet zone, Internet zone, trusted site, and untrusted sites. See the Internet options security tab in Internet Explorer to view various security zones. An assembly can be associated with multiple code groups. Permission sets can be associated with multiple code groups.

A security policy is a logical grouping of code groups and permission sets. An untrusted managed assembly must pass through four security policies: The Enterprise security policy, machine security policy, user security policy, and application domain security policy. Any one of these security policies can deny an untrusted managed assembly permissions.

Implement code access security
Exam objective:  Implement code access security to improve the security of a .NET Framework application.

(Refer System.Security namespace)

SecurityManager class - MSDN

CodeAccessPermission class - MSDN

Modify the Code Access security policy at the machine, user, and enterprise policy level by using the Code Access Security Policy tool (Caspol.exe) - MSDN

PermissionSet class, NamedPermissionSet class, and PermissionSetCollection class

 * PermissionSet class - MSDN

 * NamedPermissionSet class - MSDN

 * PermissionSetCollection class

 * There does not seem to be such a thing, to be investigated...

Standard Security interfaces

 * IEvidenceFactory interface - MSDN

 * IPermission interface - MSDN

Implement access control
Exam objective: Implement access control by using the System.Security.AccessControl classes.

DirectorySecurity class, FileSecurity class, FileSystemSecurity class, and RegistrySecurity class

 * DirectorySecurity class - MSDN

 * FileSecurity class - MSDN

 * FileSystemSecurity class - MSDN

 * RegistrySecurity class - MSDN

AccessRule class - MSDN AuthorizationRule class and AuthorizationRuleCollection class

 * AuthorizationRule class - MSDN

 * AuthorizationRuleCollection class - MSDN

CommonAce class, CommonAcl class, CompoundAce class, GenericAce class, and GenericAcl class

 * CommonAce class - MSDN

 * CommonAcl class - MSDN

 * CompoundAce class - MSDN

 * GenericAce class - MSDN

 * GenericAcl class - MSDN

AuditRule class - MSDN

MutexSecurity class, ObjectSecurity class, and SemaphoreSecurity class

 * MutexSecurity class - MSDN

 * ObjectSecurity class - MSDN

 * SemaphoreSecurity class - MSDN

Implement custom authentication scheme
Exam objective: Implement a custom authentication scheme by using the System.Security.Authentication classes.

(Refer System.Security.Authentication namespace - MSDN)

For a reference on custom authentification schemes see MSDN

Encrypt, decrypt and hash data
Exam objective: Encrypt, decrypt, and hash data by using the System.Security.Cryptography classes.

(Refer System.Security.Cryptography namespace)

DES class and DESCryptoServiceProvider class

 * DES class - MSDN

 * DESCryptoServiceProvider class - MSDN

HashAlgorithm class - MSDN

DSA class and DSACryptoServiceProvider class

 * DSA class - MSDN

 * DSACryptoServiceProvider class - MSDN

SHA1 class and SHA1CryptoServiceProvider class

 * SHA1 class - MSDN

 * SHA1CryptoServiceProvider class - MSDN

TripleDES and TripleDESCryptoServiceProvider class

 * TripleDES - MSDN

 * TripleDESCryptoServiceProvider class - MSDN

MD5 class and MD5CryptoServiceProvider class

 * MD5 class - MSDN

 * MD5CryptoServiceProvider class - MSDN

RSA class and RSACryptoServiceProvider class

 * RSA class - MSDN

 * RSACryptoServiceProvider class - MSDN

RandomNumberGenerator class - MSDN

CryptoStream class - MSDN

CryptoConfig class - MSDN

RC2 class and RC2CryptoServiceProvider class

 * RC2 class - MSDN

 * RC2CryptoServiceProvider class - MSDN

AssymetricAlgorithm class MSDN ProtectedData class and ProtectedMemory class

 * ProtectedData class - MSDN

 * ProtectedMemory class - MSDN

RijndaelManaged class and RijndaelManagedTransform class

 * RijndaelManaged class - MSDN

 * RijndaelManagedTransform class - MSDN

CspParameters class - MSDN

CryptoAPITransform class - MSDN

Hash-based Message Authentication Code (HMAC) - MSDN

 * HMACMD5 class - MSDN

 * HMACRIPEMD160 class - MSDN

 * HMACSHA1 class - MSDN

 * HMACSHA256 class - MSDN

 * HMACSHA384 class - MSDN

 * HMACSHA512 class - MSDN

Control permissions
Exam objective: Control permissions for resources by using the System.Security.Permission classes.

(Refer System.Security.Permission namespace)

SecurityPermission class - MSDN

PrincipalPermission class - MSDN

FileIOPermission class - MSDN
 * You can also set the FileIoPermisson attribute at assembly level or class level. Be then aware about the SecurityAction enumerations:
 * SecurityAction.RequestRefuse: specifies the operations that should not be granted.
 * SecurityAction.RequestMinumum: request for a minimum set of permissions. If not given, the app will not execute.

StrongNameIdentityPermission class - MSDN

UIPermission class - MSDN

UrlIdentityPermission class - MSDN

PublisherIdentityPermission class - MSDN

GacIdentityPermission class - MSDN

FileDialogPermission class - MSDN

DataProtectionPermission class - MSDN

EnvironmentPermission class - MSDN

IUnrestrictedPermission interface - MSDN

RegistryPermission class - MSDN

IsolatedStorageFilePermission class - MSDN

KeyContainerPermission class - MSDN

ReflectionPermission class - MSDN

StorePermission class - MSDN

SiteIdentityPermission class - MSDN

ZoneIdentityPermission class - MSDN

Control code privileges
Exam objective: Control code privileges by using System.Security.Policy classes.

(Refer System.Security.Policy namespace)

ApplicationSecurityInfo class and ApplicationSecurityManager class

 * ApplicationSecurityInfo class - MSDN

 * ApplicationSecurityManager class - MSDN

ApplicationTrust class and ApplicationTrustCollection class

 * ApplicationTrust class - MSDN

 * ApplicationTrustCollection class - MSDN

Evidence class and PermissionRequestEvidence class

 * Evidence class - MSDN

 * PermissionRequestEvidence class - MSDN

CodeGroup class, FileCodeGroup class, FirstMatchCodeGroup class, NetCodeGroup class, and UnionCodeGroup class

 * CodeGroup class - MSDN

 * FileCodeGroup class - MSDN

 * FirstMatchCodeGroup class - MSDN

 * NetCodeGroup class - MSDN

 * UnionCodeGroup class - MSDN

Condition classes

 * AllMembershipCondition class - MSDN

 * ApplicationDirectory class and ApplicationDirectoryMembershipCondition class

 * ApplicationDirectory class - MSDN

 * ApplicationDirectoryMembershipCondition class - MSDN

 * GacMembership class and GacMembershipCondition class

 * GacMembership class

 * No search results on MSDN!? a little investigation required here.

 * GacMembershipCondition class - MSDN

 * Hash class and HashMembershipCondition class

 * Hash class - MSDN

 * HashMembershipCondition class - MSDN

 * Publisher class and PublisherMembershipCondition class

 * Publisher class - MSDN

 * PublisherMembershipCondition class - MSDN

 * Site class and SiteMembershipCondition class

 * Site class - MSDN

 * SiteMembershipCondition class - MSDN

 * StrongName class and StrongNameMembershipCondition class

 * StrongName class - MSDN

 * StrongNameMembershipCondition class - MSDN

 * Url class and UrlMembershipConditon class

 * Url class - MSDN

 * UrlMembershipConditon class - MSDN

 * Zone class and ZoneMembershipCondition class

 * Zone class - MSDN

 * ZoneMembershipCondition class - MSDN

PolicyLevel class and PolicyStatement class

 * PolicyLevel class - MSDN

 * PolicyStatement class - MSDN

IApplicationTrustManager interface, IMembershipCondition interface, and IIdentityPermissionFactory interface

 * IApplicationTrustManager interface - MSDN

 * IMembershipCondition interface - MSDN

 * IIdentityPermissionFactory interface - MSDN

Access and modify identity information
Exam objective: Access and modify identity information by using the System.Security.Principal classes.

(Refer System.Security.Principal namespace)

GenericIdentity class and GenericPrincipal class

 * GenericIdentity class - MSDN

 * GenericPrincipal class - MSDN

WindowsIdentity class and WindowsPrincipal class

 * WindowsIdentity class - MSDN

 * WindowsPrincipal class - MSDN

NTAccount class and SecurityIdentifier class

 * NTAccount class - MSDN

 * SecurityIdentifier class - MSDN

IIdentity interface and IPrincipal interface

 * IIdentity interface - MSDN

 * IPrincipal interface - MSDN

WindowsImpersonationContext class - MSDN

IdentityReference class and IdentityReferenceCollection class

 * IdentityReference class - MSDN

 * IdentityReferenceCollection class - MSDN

Previous / Next

title: .NET Development Foundation/Security


text: User talk:131.156.74.23

title: User talk:131.156.74.23


text:
.NET Development Foundation/Interoperability

Interoperability, Reflection, and Mailing

Interoperability, Reflection, and Mailing
Exam objective: Implementing interoperability, reflection, and mailing functionality in a .NET Framework application

Topics
Discussion about the concepts behind the exam objectives.

Classes, interfaces and tools
Detailed examples on how to use the classes and tools mentionned in the detailed exam objectives.

Previous / Next


text:
.NET Development Foundation/Globalization

Globalization, Drawing, and Text manipulation

Globalization, Drawing, and Text manipulation
Exam objective: Implementing globalization, drawing, and text manipulation functionality in a .NET Framework application

Text manipulation
Text manipulation, in the context of the exam objectives, covers 3 main subjects: string building, regular expressions and text encoding. We look at each in the following paragraphs.

String and StringBuilder classes
Text manipulation starts with the representation of a string which is done via the String class. No specific exam objective mentions the String class but we added a section for it because you must understand some of its specific characteristics.

Next comes the StringBuilder class that serves for efficient construction.

Regular expressions
The Regex, Match and Group classes together implement the regular expressions support in the .NET framework.

Regular expressions are a world by themselves and have been around for quite some time.

There is a wikibook on regular expressions which, among other things, point to this Tutorial.

Regular expressions support in .NET basically allows for:
 * testing the match of a string to a regex pattern (Regex.IsMatch method)
 * extracting the substrings that "match" part of a pattern (Regex.Match method with Match and Group classes).

Format data based on culture information.
(Refer System.Globalization namespace)

Access culture and region information
Exam objective: Access culture and region information in a .NET Framework application

CultureInfo class - MSDN

CultureTypes enumeration - MSDN

RegionInfo class - MSDN

Format date and time values based on the culture.
DateTimeFormatInfo class - MSDN

Format number values based on the culture.
NumberFormatInfo class - MSDN

NumberStyles enumeration - MSDN

Perform culture-sensitive string comparison.
CompareInfo class - MSDN

CompareOptions enumeration - MSDN

Custom culture
Exam objective: Build a custom culture class based on existing culture and region classes

CultureAndRegionInfoBuilder class - MSDN

CultureAndRegionModifier enumeration - MSDN

System.Drawing namespace
Exam objective: Enhance the user interface of a .NET Framework application by using the System.Drawing namespace.

Brushes, Pens, Colors and Fonts
Exam objective: Enhance the user interface of a .NET Framework application by using brushes, pens, colors, and fonts

Brush class - MSDN

Brushes class - MSDN

SystemBrushes class - MSDN

TextureBrush class - MSDN

Pen class - MSDN

Pens class - MSDN

SystemPens class - MSDN

SolidBrush class - MSDN

Color structure - MSDN

ColorConverter class - MSDN

ColorTranslator class - MSDN

SystemColors class - MSDN

StringFormat class - MSDN

Font class - MSDN

FontConverter class - MSDN

FontFamily class - MSDN

SystemFonts class - MSDN

Graphics, Images, Bitmaps and Icons
Exam objective: Enhance the user interface of a .NET Framework application by using graphics, images, bitmaps, and icons

Graphics class - MSDN

BufferedGraphics class - MSDN

BufferedGraphicsManager class - MSDN

Image class - MSDN

ImageConverter class - MSDN

ImageAnimator class - MSDN

Bitmap class - MSDN

Icon class - MSDN

IconConverter class - MSDN

SystemIcons class - MSDN

Shapes and Sizes
Exam objective: Enhance the user interface of a .NET Framework application by using shapes and sizes

Point Structure - MSDN PointConverter class - MSDN

Rectangle Structure - MSDN

RectangleConverter class - MSDN

Size Structure - MSDN SizeConverter class - MSDN Region class - MSDN

Text handling and regular expressions
Exam objective: Enhance the text handling capabilities of a .NET Framework application, and search, modify, and control text in a .NET Framework application by using regular expressions

(Refer System.Text namespace)

(Refer System.RegularExpressions namespace)

String class
The String class is not a specific exam objective but was added to have a place to discuss some of its characteristics.

String class - MSDN

StringBuilder class
The StringBuilder class is used for very fast string concatenation. If you use conventional string concatenation then it will run very slow because a string is held in an array. Each concatenation causes the array to increase its size and the memory has to be copied to a new location internally. This is very slow.

For fast string concatenations use StringBuilder instead. It is about 1000 times faster (depending on the string you concatenate).

StringBuilder class - MSDN

Refer to the example to measure the performance differences.

Regex class
Regex class - MSDN

Match class and MatchCollection class
Match class - MSDN

MatchCollection class - MSDN

Group class and GroupCollection class
Group class - MSDN

GroupCollection class - MSDN

Encode text by using Encoding classes
Encoding class - MSDN

EncodingInfo class - MSDN

ASCIIEncoding class - MSDN

UnicodeEncoding class - MSDN

UTF8Encoding class - MSDN

Encoding Fallback classes - MSDN

Decode text by using Decoding classes.
Decoder class - MSDN

Decoder Fallback classes - MSDN

Capture class and CaptureCollection class
Capture class - MSDN

CaptureCollection class - MSDN

Previous


text:
.NET Development Foundation/Preface

Next Preface

Preface
Welcome to the 'Microsoft .NET Framework 2.0 Application Development Foundation' module.

This book provides extensive "textbook like" coverage of the exam objectives associated with exam 70-536 of the Microsoft certification program. Those objectives cover the basic .NET class libraries and the interaction of a program with the .NET execution environment.

Please give us your feedback on the module so we can improve it (see discussion page).

The preface contains information relevant to the context of the document, authors, wikibooks, etc. You can skip to the Introduction if you are primarily interested in the module content.

Audience and other Wikibooks resources
The audience for this study guide are software developers professionally interested in the .NET framework. Microsoft states in the Exam (70-536) preparation guide that "Candidates should have at least two to three years of experience developing Web-based, Microsoft Windows-based, or distributed applications by using the .NET Framework 1.0, the .NET Framework 1.1, and the .NET Framework 2.0. Candidates should have a working knowledge of Visual Studio 2005.".

For this study guide, we will just assume that readers know at least one of the .NET languages (VB.NET, C#, etc.), have access to Visual Studio and have some experience working with it.

Please note that the .NET platform is quite extensive and that a basic understanding of computer science is also assumed. For example, we will briefly discuss how object-orientation principles are implemented in the framework (from a developer point of view) but not the principles themselves, where do they come from, what specific problems they address, etc.

Wikibooks has other books both on VB, C# and .NET that are more introductory in nature:
 * A description of NET 3.0 features
 * An introduction to VB .NET
 * A featured book on C#

Finally, by "professionally interested" we refer to the fact that this book, along with the other certification study guides, provides an extensive coverage of the framework and demands a significant study time. So anybody that wants to get that kind of coverage and has some time to spare can join in!

Contributions
This module is far from over! Please do not hesitate to improve it as you see fit.

Just a couple of pointers though if you are a new contributor to wikibooks:

 * Wikibooks are about textbooks not "standard" wikis. The project team is looking for continuous narratives that can be read from top to bottom. For somebody used to the MSDN type of documentation this can be a significant adjustment.

 * Links only pages do not fit the above picture and are actively discouraged. If you create a page, be sure to have content to put on it :-)

 * The administrators use templates to ask questions or notify of incomplete tasks. Those templates produce rather flashy notices that can be surprising at first. Don't worry about the look and ask for clarifications. The admins are very helpful and nice and will help you with whatever you may need.

 * Code samples are very welcome and should be put in "hidden" sections to preserve the flow of the text. see example section. A sample should be kept as short as possible but the space limitations of printed material obviously do not apply here. We thus encourage you to have complete, yet clear and simple, programs so they can be directly tested and used.

 * Use the discussion page for questions or comments.
 * Use the official Actual4Exam's 70-536-CSHARP or 70-536-VB Simulation PrepKit for passing the 70-536 exam.
 * Try uCertify's 70-536-CSHARP or 70-536-VB Simulation PrepKit for passing the 70-536 exam.
 * Try qualitydumps 70-536 or examsdeal 70-536 Simulation exam questions for passing the 70-536 exam.

Exam information and certifications
Current information on the exam can be found at MSDN Exam Information

This module is the study guide for the first exam (70-536) for obtaining many Microsoft certifications:
 * Microsoft Certified Technology Specialist: .NET Framework 2.0 Web Applications
 * Microsoft Certified Technology Specialist: .NET Framework 2.0 Windows Applications
 * Microsoft Certified Technology Specialist: .NET Framework 2.0 Distributed Applications
 * Microsoft Certified Professional Developer: Web development
 * Microsoft Certified Professional Developer: Windows development
 * Microsoft Certified Professional Developer: Enterprise application development

Authors
William "Scott" Baker (User:Scott98390)

 * If you contribute to this book, if you wish, please add your name here. The contributors for a specific article can be traced by its history.

''Please note that it is not wikibook's policy to have link only pages or pages with very few text. The preferred way is to have continuous textbooks that can be read from start to finish. The first contributions to this module where in the form of separate pages for each third or forth level exam objectives. This gave way to numerous pages that were merged into more consistent global pages. For links only page, this process had the adverse side effect of losing references to contributions made to those pages. For pages with text the change history were moved to the merged page.''

Next

title: .NET Development Foundation/Preface


text:
User talk:Marjoe

Welcome!
Come introduce yourself at the new users page. If you have any questions, you can ask there or contact me personally.--Whiteknight (Page) (Talk) 02:03, 12 December 2007 (UTC)

title: User talk:Marjoe


text:
.NET Development Foundation/Trailers

70-536 Training kit
.NET Framework Application Development Foundation Self-Paced Training Kit, Second Edition Tony Northrup Microsoft Press

We reference that book as the "training kit" since it is recommended by Microsoft as a training aid for the 70-536 exam (for example see MCPD).

If you use the training kit you might want to look here for a list of known corrections. Other potential corrections are listed in this wikibook.

C Sharp 2005
Visual C#: The language - 2005 Edition Donis Marchall Microsoft Press

Also recommended as a training aid for the 70-536 exam (for example see MCPD)

ECMA 335
If you want to go deeper into the definition of the common language infrastructure you can download the official specification

This is not required for the exam but we will use the specification a couple of times to clarify ambiguities in the MSDN documentation or other reference manuals.

title: .NET Development Foundation/Trailers


text:
.NET Development Foundation/AllInOne

Microsoft .NET Framework 2.0 Application Development Foundation

Welcome to the "All in one" view page of the Wikibooks's Microsoft certification exam 70-536 study guide. Considering it's size, this page was not configured for editing (please use main page).

title: .NET Development Foundation/AllInOne


text:
User talk:Lethargo

Welcome message
Hello, and welcome to Wikibooks!

Here are some tips to help you get started:
 * To learn the wiki-markup-language syntax, see Help:Editing.
 * Make sure to sign your posts and comments with four tildes, like this: ~~~~
 * There is a box at the top of the edit window (if javascript is enabled on your browser) that will insert it too (looks like part of a signature). This will let others know who left it, and make it easy to reply back to you.
 * Remember to conduct any editing experiments in the sandbox.
 * You can tell the community something about yourself in your userpage.
 * You can get to this page by clicking the tab at the top of the page labeled with your registered username.
 * Wikibooks is a collection of open-source textbooks. (What is Wikibooks).
 * If you are a Wikipedian, see Wikibooks for Wikipedians for a primer on how things work here (it's a little different).
 * If you want to base your work here on materials from Wikipedia, please use WB:RFI (requests for importation) to bring the material over in compliance with the GFDL.
 * If you're an instructor and plan on using Wikibooks for a class project, see Guidelines for class projects
 * Please say hello at the Reading Room with any questions or ideas.
 * Eventually, you might want to read the Manual of Style and Policies and Guidelines.
 * Help us by participating in policy and guideline creation.
 * Please take a look at Naming policy before starting a new book.
 * Remember to maintain a Neutral point of view.
 * Explore, be bold in editing pages, and have fun!

You will find more resources in Community Portal. If you want to ask a question, visit the Study help desk, the Reading Room, IRC channel or ask me personally on my talk page. For site news, see the Bulletin board. It might be a good idea to add that page to your "watchlist" so that you can see when any new information is posted there. You can do that by clicking the tab labeled "watch" at the top of the page.

Good luck! --Panic (talk) 02:29, 12 December 2007 (UTC)

title: User talk:Lethargo