- 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
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++
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.
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
- 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
Get a sneak
peek of RadVC .NET
- Some Code Example - Spot the
- 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.