.net 2.0 interoperability recipes

Dear Reader, .NET Interoperability Recipes

Most developers would jump at the chance to rewrite all of their existing code in the newer managed code environment that .NET provides. However, it is difficult if not impossible for you to immediately throw out all your existing code and start over whenever a new technology arrives. And that’s the situation with Microsoft .NET. It represents a new and improved way of developing software for the Windows platform.

Developers have that little problem known as legacy code. You may have C libraries, C++ class libraries, Visual Basic 6.0 COM components, or ATL COM components that you rely upon to run your applications. You may also be using third-party libraries and COM components that represent a significant investment. Simply put, you can’t throw all of that away. Instead, you need to find a way to move forward with new .NET development and interoperate with existing code that is working and tested.

I wrote this book as a guide for other Windows developers who are transitioning from native Windows code to .NET managed code. This book is appropriate for any .NET developer who has the need to interoperate between .NET and non-.NET Windows code.

.NET provides a rich set of features that enable you to interoperate with existing components and libraries. The problem is that those features are not always easy to understand and use. And in many cases, there is more than one way to accomplish a particular task. Finding the appropriate solution for each interop task can be a frustrating experience.

My aim is to guide you past the infrequently used .NET interop features and focus on those that you will use most often. I present these interop topics as a series of recipes, each focusing on a different interop problem. This format allows you to quickly find the solution that is appropriate for each problem.

Thank you.

Bruce Bukovics

about me

I have been a working developer for more than 25 years. During this time, I have designed and developed applications in such widely varying areas as banking, corporate finance, credit card processing, payroll processing, and retail systems. I have firsthand developer experience with a variety of languages, including C, C++, Delphi, Java, Visual Basic, and C#. My design and development experience began back in the mainframe days and includes client/server, distributed n-tier, and service-oriented applications.

I consider myself a pragmatic programmer and test-driven development evangelist. I don't always stand on formality and am willing to look at alternate or unorthodox solutions to a problem if that’s what it takes.

I am currently employed at NCR in Alpharetta, Georgia, as a senior software architect.