Blaze++ .NET
Blazing Power of C++, with the simplicity of using C#.NET
Introduction
Blaze++ .NET is a native (or standard) C++ based framework that brings the raw power of native C++ with the simplicity of using .NET framework.
 
The .NET Effect
In many ways, Microsoft's .NET initiative has started to transform the world of software development significantly, especially on Windows world. Though primarily slated for interconnected services on the web, .NET framework also provides an amazingly easy to use set of classes to develop traditional thick client desktop applications. 
Microsoft has publicly declared that it has bet its future on the success of .NET. No wonder we see almost every issue of Microsoft's official magazine MSDN is full with articles on .NET . The same can be said about the talks we hear in Microsoft sponsored conferences and technical summits. The bottom line is: whether we like it or not, the sweeping effect of .NET will influence our software development practices in big ways.
 
What .NET is NOT?
Like every new technology, especially the one that comes from a giant industry leader like Microsoft, .NET seems to give the impression that this is the cure for all software problems developers are facing today. 
Contrary to this impression and depending on the applications development shops write, there can be several issues that need to be considered before jumping onto .NET bandwagon:

(1) Performance: For an intrusive garbage collector (G.C.) and other performance related design limitations, applications built with .NET framework may not run as fast as those built with traditional C++ libraries (e.g. MFC / ATL etc). Based on comments from industry experts, .NET based applications can suffer as much as 30% performance degradation when compared with native (unmanaged) C++ applications. Unmanaged code can be faster than managed code because it doesn't carry the overhead associated with some of the EE services, like reference tracking by the Garbage Collector. It can also call directly into the Win32 apis, including things like DirectX, and existing C++ code without paying the price of additional transitions.

(2) Flexibility: You won't have that much freedom to access system level APIs. In .NET framework, operating system level functionality are buffered by a generic set of functions.

(3) Language limitation: .NET framework won't allow you to use certain C++ language features, such as  multiple inheritance (from classes), deterministic finalization, declaring objects on the stack etc.

(4) Redistribution of Runtime: .NET framework works with a huge runtime (as large as 20 Mb). You need to distribute this runtime along with your programs for them to work properly on your client's machines. It will be a while before .NET runtime is available on each and every Windows systems. 
 
(5) C++ code portability: Though .NET framework can be accessed directly from C++ language, it requires several new non-standard, Visual C++ compiler specific keywords. This makes porting C++ code to other compilers and platforms almost impossible.
 
(7) Debugging can be extremely slow, especially the first time the symbols get loaded.

Native C++  and .NET
So what is so cool about .NET that the native C++ (aka real / standard C++) developers should care about?

The first and foremost advantage developers will enjoy by adopting a framework like .NET is the uniformity of the application framework developers use. Up until now, developers of different languages use different framework or libraries. For example, if you are a Windows C++ developer, your application must be built with a C++ extension libraries, such as, MFC/ATL/WTL etc. If you are a Visual Basic developer, it is guaranteed that your VB apps will be running on dll called vbrunxx.dll. The same can be said for other languages and frameworks.  

The advent of .NET changes this whole picture. Whatever your development language is, you can now target one development framework for all of your development needs. Developers will no longer need to learn half a dozen different frameworks to solve their everyday software problems. This in turn significantly change the Return Of Investment (ROI) in software development.

Another major features of .NET that developers really love is the richness of the framework. .NET offers some 3000+ classes that can be used to write any kind of applications, starting from desktop to web applications. Furthermore, the class hierarchy of the framework is very simple and very much object oriented.   

Blaze++ .NET: Blazing Power of C++ Meets the Simplicity of Using .NET

Whether you are a hardcore native C++ developer or a C# / VB / MC++ developer, each one of you can benefit from using Blaze++ .NET. 

Case 1: You love the power and flexibility of native C++ libraries, such as MFC/ATL/WTL/STL, but also like the ease of using .NET. Blaze++ .NET is definitely for you. Remember, Blaze++ .NET is built on native C++, thus you will have native access to all C++ classes and API's.
 
Case 2: You like Microsoft's attempt to unify development libraries through a common framework like .NET, but for one or more limitations in .NET initiative, you are not quite convinced to develop using .NET framework yet. Using Blaze++ .NET will help you in familiarizing the great wealth of .NET framework classes. You won't be feeling behind as you continue to work with the native C++ frameworks.
 
Case 3: Your current project requires you to write on native C++ but you plan to port your applications to .NET framework without rewriting them from scratch.   As you will see later, the code you write using Blaze++ .NET is strikingly similar to that using a .NET language, such as C# .NET. Thus it will be extremely easy to port your code to .NET, whenever you want to do so.
 
Case 4: You develop extensively for both client and the web and thus want to use both managed and and native C++. In addition to Microsoft's managed extension to mix and match managed and native C++, Blaze++ .NET will let you use one single programming model throughout your project, you do not need to learn yet another class library for native C++ development.
 
Case 5: You are a component developer and need to develop your components in various formats, such as (a) C++ dll (b)NET component (c) ActiveX / COM component (.ocx). Until now, you had to maintain three different code bases to develop these components. For C++ .dll, you have probably used MFC / Win32, for ActiveX / COM, your code is probably based on MFC / ATL, and for .NET, it is obviously written using a .NET compliant language, such as C#, VB or C++/CLI. With Blaze++ .NET, you can use one single code base to target all three component formats. This is a huge saving in terms of development cost and code maintenance.
 
Case 6: You are a .NET developer using C#/VB or C++/CLI and want to move to a native C++ framework, such as MFC. Without Blaze++ .NET, such a move would be considered as a major adventure. Native C++ frameworks like MFC / ATL / WTL offer a completely different set of class  hierarchy than the one offered by .NET.
 
Extreme RAD: RadVC .NET is Now Powered by Blaze++ .NET
Though the simplified design principles of Blaze++ .NET makes it extremely easy to use this library, RadVC .NET makes it even easier to develop applications based on this exciting new C++ framework.  This means that the native C++ applications generated by RadVC .NET will now be compiled with Blaze++ .NET class library.

Get a sneak peek of RadVC .NET here

 

Some Code Example - Spot the Difference?
The following is a list of Blaze++ .NET code samples that show the extreme ease of using the framework. Each sample also lists the corresponding C# .NET code sample.