Wednesday, June 16, 2010

Google Protocol Buffers vs. RemObjects SOAP

Costs for 2 years project per person
====================================
Visual C++ 2010 (Professional) - US$799.00
Visual Studio 2010 Feature Pack - US$0.00
Google Protocol Buffer in C++ and C# - US$0.00
Approx total 1st year: US$799.00
Approx total 2nd year: US$0.00 (assuming best-case)
Approx total 2nd year: US$499.00 (assuming you renew MSDN subscription)

Delphi 2010 (Professional) - US$899 + SA
Developer Express Source Pack - 1st year - US$1499.00
RemObjects SOAP - US$399
Approx total 1st year: US$2797.00

Developer Express Yearly Subscription - 2nd year onwards - US$699
RemObjects SOAP subscription - US$249 per year.
Approx total 2nd year: US$948.00
Approx total: US$3745.00

It could be said, Delphi developers pay yearly tithes to the temple of Delphi. For those who do not know what tithes are, if you are Christian or Jewish, you are obliged to provide 10% of your salary towards the Church or Synagogue. For those hard-core Delphi developers, do you feel your faith is strong enough to continue buying year after year, the latest versions of Delphi and all those components you need?

Native Development in Visual C++
Your reviewer will do Visual Studio/Google Protocol Buffer native MFC development and Delphi with RemObjects SOAP.

Background in C++
Between ATL, MFC, WTL there lies native Win32 development nirvana and XKCD's infamous cartoon compiling. Well, if you compile within 1 second, you really do not have to worry about fighting the compiler or doing the Visual C++ "world-wide-wait". Since Visual Studio Feature Pack contains BCG Professional 2010 you can create great user-interfaces without too much fuss.

Background in Delphi
Your reviewer asks, why use Delphi if your reviewer can compile within 1 second for C#, C++? Because there's that legacy application written long time ago that needs to be "upgraded" or maintained and suddenly, a need to learn new things. Or, you can call that number and order Delphi and all those cool stuff..., but the party is over and everyone asks "Is Delphi Dead?". If Delphi is alive, where are those jobs?

SOAP and Protocol Buffers
SOAP in C++ requires purchasing gSOAP, SQLDATA SOAP or PocoSOAP. You'll need a service builder (to construct strongly typed binding libraries), remoting framework and effort to get going.

SOAP in Delphi is almost same/similar. The WSDLImport.exe in Delphi is either broken or cannot import that WSDL file or something happens during development-time that requires some 3rd party library.

Delphi and RemObjects SOAP
RemObjects SOAP is a must-have in Delphi, since WSDLimport does not perform well, it uses the stupid Indy library (see HTTPRIO.pas) always seem to have some kind of problem/issue that needs attention, such as:

Delphi SOAP vs. RemObjects SOAP
- Delphi SOAP is always broken. You can never seem to import any NET or Java WSDL file or website without having to fix something or the remoting is so broken or time-out, or Unicode issue. RemObject SOAP suffers from partial NET SOAP support (that's why RemObject sells their own SOAP library for NET). In other words, with Delphi, it's buy-buy-buy and bye-bye-bye attitude towards money.

Visual C++ with Google Protocol Buffers
There's Facebook Thrift, RAKNET and other libraries available for the misinformed. Your reviewer will focus on Google Protocol Buffers.

Your reviewer would have used Apache Axis (there's plenty of articles on that) but will use Google Protocol Buffers to communicate between MFC/C++ and C#/WCF restful service.

Steps in Visual C++
1.) You need to download Google Protocol Buffer and nice remoting library, such as Boost.ASIO, libCurl as DLL, or funny enough, Ultimate Toolkit TCP/IP library.

2.) Understand how Google Protocol Buffers work. You need to define your .proto file and run it against Protogen.exe (to create static binding for C++ code).

3.) Include either as LIB or static linking (all-in-one) into your MFC application. (This may take an hour or two).

4.) Include your .proto file headers and start to use it. In your program, you serialize and deserialize the protocol buffer from disk, database, remoting to your GUI and back.

5.) Use Protocol Buffers in C# to deserialize the response from your MFC application with IIS.

In 5 steps, you have remoting in C++, C# without too much fuss.

Steps in Delphi
1.) You need to download RemObjects.

2.) Where's the WSDL from? If it is in Java, can you ask to switch to Google Protocol Buffer? How about Java Messaging instead :) ?

3.) Start RemObjects service builder and import the WSDL so you can use it into Delphi.

4.) Add those units from RemObjects service builder into your project. Compile and deploy.

5.) You may have to deploy a server-side solution made in Delphi. If you use C#, you may have to "simplify" your C# WSDL if the import messes-up.

Decisions
Your reviewer, after using Google Protocol, liked it. It was very fast, strongly typed. With BCGSoft's Professional library, Visual C++ and remoting library, your reviewer can make affordable products.

With Delphi, it's always out-of-budget, no money (it's having to buy all those libraries for that new guy) or bad buying decisions.

5 comments:

murphy said...

Hi,

i regulary read your posts and they are seemingly good. But i don't understand why is there the DevExpress Source License, when you don't need it. You only mentioned the DevExpress Lib on the Bill.

Also if its a older project which will be maintained: The license should be already in place and availble.

If only upgrading is needed you can go with a smaller pack from DevExpress and mostly you won't need the second year subscription. Otherwise you can buy what you need, which has in most terms better prices afaik. Don't blame me on specific combinations. I'm sure you will act with the brain and buy the cheapest solution.

So in case you need the DevExpres Pack, you had to mention it somewhere in the article. I didn't see this, so i think its not needed.

Here goes your Delphi Bill again ;)
Delphi US$899
RemObjects SOAP US$399
RemObjects SOAP 2. Year US$249

Delphi total: US$1547

Microsoft total: US$1298

Now take a look and voila. The big difference are the sources for DevExpress. I don't think Delphi is very expensive this days. I think the tool around the developers product are the problem.

Yes, i admit: There are more C/C++ and C# in the "free" world, because Delphi is not as much more used as it was once used.

But here comes my "but". But you need to admit there are some really great freeware sites for Delphi out there. I think the code conversion from ANSI to UNICODE is not as much a pain as some developers cried out. Yeah, it admits some thinking, but its mostly possible without making big changes, when you programmed the way you should have been ;)

Yes, i'm a Delphi developer and i had also my problems with conversion from ANSI to UNICODE, but i also did it.

So please take a good look at prices. Sometimes there are cheaper options which will function fine.

Have a nice day :)

I hope you liked my comment.

Delphi Haters said...

hi,
There's BCGSoft/MFC new libraries free of charge now...

What's equivalent in Delphi? Seems like DevExpress subscription. That's why it was factored in.

For the 2nd year for DevExpress, they do not allow subscription lapses. So you must pay every year, every year, every year...

Delphi Haters said...

Did you try RealThinClient? I tried it and gave up. Too many problems. It's good for simple projects but if you're going to do a 9 or 12 month project you need industrial strength libraries...

Unknown said...

Google Protocol Buffer for Delphi
http://sourceforge.net/projects/protobuf-delphi

Unknown said...

Has port Google Protocol Buffer for Delphi
http://sourceforge.net/projects/protobuf-delphi