Having worked with Delphi for years I just had to give C# builder, Borlands throw at the C#/.NET market, a try. I downloaded the enterprise trial and started exploring. Csb is “just” a collection of designers. It uses the .net framework classes and the framework C# compiler to build .net apps.
My very first impressions were not that good. The behavior of csb on a double monitor system is just hilarious. It always maximizes to the size of the primary monitor, in my case the smallest. Worse is that you cannot stretch the main window to a greater height than the primary monitor. But you can stretch the window to any desired width. But a 3200 by 768 window doesn’t work well. Having worked some time with csb all felt a little better. The product seems to be pretty stable, only occasionally the “error in xxx.bpl” (well known to Delphi people..) boxes pop up. Code completion is a little slower then vs.net and by far not as intelligent as in vs.net. Apps start a little faster in Csb.
Csb looks and feels a lot like a stripped down vs.net. Some very essential tools, like the dataset designer, are missing. Csb works with the same components as vs.net. It is a pity the tools to set their properties are not there. When you have a datagrid there is no property builder. What is worse there is no template designer either, which makes components like a datalist un-designable. In the property window there are no builders for things like a database connection string or a sql statement. There are property builders if you use the borland data components, if you use ado,net you’re on your own. The webform designer is the only place which has more to offer than vs.net. In vs.net you have to use frontpage with vs.net to do some serious static html editing. Csb has a lot of the tools on board. But not a spelling checker.
Csb apps can consume webservices. To add a web reference to a project you start a dialog from the project manager, just like vs.net. Csb works with wsdl files. If you have a webservice built with Vs.net you have to request the wsdl in the querystring like http://localhost/MyService/Service1.asmx?wsdl. Csb generates the class wrappers for the webservice slightly different than vs.net. Vs.net will generate a new namespace for every webservice consumed. Csb generates the service classes in the namespace of the consuming application. The result is that you run into trouble when you consume two webservices with the same name (Service1) in the same csb application. In vs.net the name conflict is solved by a better usage of namespaces.
Creating asp.net apps works different than vs.net. You have to access your web server using a windows filename, like C:\inetpub\wwwroot\…, you cannot access a webserver over http. The dialog has some server options. At first I did not check the execute flag. My Csb apps hung up IIS. Temporarely stopping IIS did bring back csb but asp.net had died. Rebooting my machine solved that. Having set the checkbox I could build webforms and webservices. Did some experiments with a webservice returning a typed dataset, which worked well. Vs.net was a happy consumer. Imported vs.net webapp with a datalist. As mentioned before, the template’s were unreachable. And the app did not run : “Unable to scan program header”. Interesting.
So far my first impressions. The nice thing about C# builder that it provides vs.net with some competition. The bad thing is that the product is at this moment, IMHO, to weak to impress MS. Too many things don’t work good, too many tools are missing. The only thing I prefer in C#builder is the static html part of the web-form designer. At all other point vs.net has C# builder running circles. Sorry Borland.
In my previous post I mentioned anonymous methods. Don Box in his blog has pointed that the syntax of these anonymous methods will not be as in the document on which my post was based. It will even be simpler. Read all about that here.