Wednesday 5 August 2009

C++/CLI - The Alternate way

Setting the Context...
  • Do you have heavy duty products developed in C++?
  • Are you reluctant to touch your tons of legacy codebase written in C++ because of its high stability?
  • Do you have very complex algorithm written in C++ which is difficult to re-engineer in newer Runtime based Technologies like .NET?
  • Are you trying to escape the re-engineering route due to above reasons even when the product is just about to reach its End-Of-Life Phase?

Solution...

  • Retain all the existing Complex and heavy Business Logic and re-engineer the product using a Phased Approach
  • Use C++/CLI to wrap the existing Native C++ code for consumption from newly designed & developed User Interface using .NET

What is C++/CLI?

  • C++ Language for targeting applications to .NET CLR
  • 100% Native C++ syntax with ability to write code for .NET too
  • “ONE” code for Native Application and .NET CLR Applications
  • Keywords & Syntax for .NET CLR is distinct from Native C++ syntax to clearly differentiate the lines of code
  • It is a perfect blend of Static C++ Object model and Dynamic Component model of CLI hence the name C++/CLI
  • C++/CLI is undergoing standardization under the European Computer Manufacturers Association (ECMA) and eventually under ISO

What is good about C++/CLI?

  • C++ intact for native application development
  • Use C++ to target powerful applications for .NET CLR
  • Connect Windows Native Applications written in C++ and the new .NET applications “seamlessly” with ease using C++/CLI
  • Mix .NET code & Native C++ code within a single code
  • Take the advantage of C++ features within .NET that are not available on other .NET languages like C#, VB etc.
  • Take advantage of existing power of Native C++ for complex code that requires to be highly performance optimised
  • Get full support from Microsoft

Why Should ISVs choose C++/CLI?

  • Retain truck loads of your Native C++ code
  • Reuse the already optimised complex business logic
  • Retain Database optimisation (if already done)
  • Do a phased transition & Re-engineering
  • Take the best from technologies best suited – still .NET
  • C++ expertise within the organisation can be retained
  • C++ programmers have a career roadmap to .NET
  • De-couple application layers to get the advantage of extensibility
  • Develop all the “new” .NET code using C#, VB.NET or even C++ Build the BEST UI “outside” of the Application