What are the main differences between COM+ and .NET? Should I forget everything I know about COM+ and start thinking about .NET?
This is a very broad question ... entire books will be written to point out just how the .NET Framework improves on what OLE, COM and COM+ attempted to do throughout the years. Essentially, .NET was designed from the ground up to build internet applications. COM was not originally intended for this purpose, but was adapted to perform in this arena. There were many design limitations based on decisions made regarding COM when building Internet applications was the exception, not the norm.
The biggest difference between .NET and COM+ applications is that .NET applications are managed by the .NET Runtime. This is similar to the Java Virtual Machine, and its purpose is to provide applications with services such as memory management, security, chaching,versioning, and much more. That is why .NET components and applications are refered to as "managed" and why COM+ components and applications are refered to as "unmanaged".
Should you forget everything you know about COM+? Well, not exactly. Not yet, anyway. The truth is that COM is at the very core of Windows, and it will be years before COM is completely phased out. In fact, .NET knows how to call COM objects through a process called Interop. Some .NET objects are simply wrappers around existing COM+ objects.