Click here to Skip to main content
Click here to Skip to main content

A list of useful articles from MSDN magazine

, 23 Aug 2012
Rate this:
Please Sign up or sign in to vote.
Stuff I've found useful and interesting

Introduction

This is perhaps not a tip as such, except that reading MSDN magazine is something every .Net developer should do regularly - so my tip would be to read each edition.

Background

There are many, many useful MSDN articles and I just want to provide links to some that provide very useful information for those of us that work with that platform.

.Net internals

Intermediate

  • Marshaling between Managed and Unmanaged Code[^] by Yi Zhang and Xiaoying Guo - January 2008

    Interesting tidbits about P/Invoke, including a few tricks that can be used to ensure efficient buffer management. The authors also give a detailed explanation about the things you need to know when calling managed code from native code.

  • CLR Hosting APIs[^] by Alessandro Catorcini and Piotr Puszkiewicz - August 2006

    A brief introduction to the CLR hosting APIs. The article is pretty short for such a complex topic, but the authors manage to show how CLR hosting APIs fits together.

  • Understanding The CLR Binder[^] by Aarthi Ramamurthy and Mark Miller - May 2009

    The CLR Binder locates the assemblies at run time and binds to them, so understanding how it works is pretty useful.

  • Introduction to COM Interop[^] by Thottam R. Sriram - January 2007

    COM is a pretty useful technology, and Microsoft spent a lot of effort making integration between .Net and COM as painless as possible. This article gives a thorough introduction to the basics of COM interop.

    If you want to learn more, Adam Nathan has written an excellent book .NET and COM: The Complete Interoperability Guide[^] which covers just about all you could possibly want to know about the subject.

  • Best Practices For Managed And Native Code Interoperability[^] by Jesse Kaplan - January 2009

    Good advice on when to use P/Invoke, COM Interop or C++/CLI.

  • Managing Object Lifetime[^] by Tim Fischer - November 2007

    That .Net has a garbage collector does not mean that we can forget about resource management, and this article touches on some of the thornier issues related to this.

  • Exploring the .NET Framework 4 Security Model[^] by Andrew Dai - November 2009

    If you are interested in .Net security Shawn Farkas’ .NET security blog[^] provies a lot of valuable information too

  • Credentials and Delegation[^] by Keith Brown - September 2005

    if you negotiate down to NTLM, delegation is not going to work. For example, if either the Web server or SQL Server is running under a local account (such as the default ASPNET account on Windows 2000) or the built-in Local Service account, Kerberos cannot be used, so NTLM will be negotiated, and delegation will not work. In order to have a chance at negotiating Kerberos, both client and server must be using domain accounts to authenticate.

    In my experience this is the most common source for problems related to delegation.

  • What Every Dev Must Know About Multithreaded Apps[^] by Vance Morrison - August 2005

    A good introduction to .Net multi-threading.

  • Understand the Impact of Low-Lock Techniques in Multithreaded Apps[^] by Vance Morrison - October 2005

    A good detailed treatment of locks, which type to use and where to use them.

  • Thread Management In The CLR[^] by Erika Fuentes and Eric Eilebrecht - December 2008

    Tidbits about .Net concurrency.

Good explanations

  • Digging into IDisposable[^] by Shawn Farkas - October 2005

    It's worth noting that sometimes void Dispose(bool disposing) is incorrectly implemented like this:

    protected virtual void Dispose(bool disposing)
    {
     if (disposing)
     {
      // Clean up all managed resources
      // Clean up all native resources
     }
    }
    

    Obviously this turns Dispose into a mandatory operation. The information about security and garbage collection is also well worth noting. So basically you should never rely on the garbage collector cleaning up native resources correctly and always make sure you call Dispose.

  • Writing Reliable .NET Code[^] by Alessandro Catorcini and Brian Grunkemeyer and Brian Grunkemeyer - December 2007

    The article provides insights that are useful when you have to write reliable applications, and it explains why your web application may be terminated at any time – something that seems to surprise a lot of people.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

About the Author

Espen Harlinn
Architect Powel AS
Norway Norway
Chief Architect - Powel AS.
 
Specializing in integrated operations and high performance computing solutions.
 
I’ve been fooling around with computers since the early eighties, I’ve even done work on CP/M and MP/M.
 
Wrote my first “real” program on a BBC micro model B based on a series in a magazine at that time. It was fun and I got hooked on this thing called programming ...
 
A few Highlights:
  • High performance application server development
  • Model Driven Architecture and Code generators
  • Real-Time Distributed Solutions
  • C, C++, C#, Java, TSQL, PL/SQL, Delphi, ActionScript, Perl, Rexx
  • Microsoft SQL Server, Oracle RDBMS, IBM DB2, PostGreSQL
  • AMQP, Apache qpid, RabbitMQ, Microsoft Message Queuing, IBM WebSphereMQ, Oracle TuxidoMQ
  • Oracle WebLogic, IBM WebSphere
  • Corba, COM, DCE, WCF
  • AspenTech InfoPlus.21(IP21), OsiSoft PI
 
More information about what I do for a living can be found at: harlinn.com or LinkedIn
 
You can contact me at espen.harlinn@powel.no

Comments and Discussions

 
QuestionIDisposable(true) typo PinmemberJasper4C#21-Aug-12 23:30 
Please fix the IDisposable managed/unmanaged code:
 
protected virtual void Dispose(bool disposing)
{
 if (disposing)
 {
  // Clean up all managed resources
 }
  // Clean up all native resources  (after managed resource cleaned)
  // Because in finalizer it will be called such as
  //
  // ~MyClass()
  // {
  //    Dispose(false);
  // }
  //   allow to clean only un-managed resources
}
"I have not failed.
I've just found 10,000 ways that won't work."
- Thomas Alva Edison (1847-1931)

AnswerRe: IDisposable(true) typo PinmvpEspen Harlinn21-Aug-12 23:37 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

| Advertise | Privacy | Mobile
Web01 | 2.8.140721.1 | Last Updated 24 Aug 2012
Article Copyright 2012 by Espen Harlinn
Everything else Copyright © CodeProject, 1999-2014
Terms of Service
Layout: fixed | fluid