Category: Uncategorized
XML-RPC in C#
MMC Snapin in C#
Web Services
MS Exam Prep
Mono on Ubuntu
It just works.
My Product Must Be A Canoe
I expect to have a large number of posts on the pain of porting.
The product has been written using a large number (900 ish at the last count) of stored procedures. We have a handfull of views.
The fun part comes comparing Oracle to SQL Server:
In SQL Server parameters need to start with @.
In Oracle parameters may not start with @.
Oracle is case sensative by default.
SQL Server is case insensitive.
Not much of a problem as all of our tables are NAMED_IN_UPPER_CASE.
Oracle has a 30 character limit on database object names.
You know, stored procedures, tables, indexes, constraints.
We have 130 of these to rename.
The one that will bite us are the stored procedures that return reordsets. Oracle does not allow that. This is the fun one.
Useless Documentation
Web Services and Web References
For some strange reason Microsoft exams prefer the first.
However I would recommend the second. This is far easier (via a subclass) to create a proxy that explicitly requires the url to be specified. This came in handy on a project that communicates to many instances of a second app via web services. We have the one web service that is instantiated at a number of locations. By parameterising the web service we are able to allow the user to specify the location of the web service and to choose between them at run time.
Microsoft and Installers
If you try to install MSDE on a machine that is not a print or file server then it will take a long time to install, fail silently and fully roll back.
MSI is a ridiculously complex piece of technology. It fails to acheive the basics of informing the user what is wrong when things go wrong.
Visual Studion.NET 2003 has a “great” tool for producing msi installers. It is almost an example in how to be counter-intuitive. For example in order to install a .NET service you need to add the two installer components to the service, add a custom task and then add the service (that is already part of the installation) to the four events (install, &c). Failure to do this can have interesting effects; it is possible to install a service, change the installer so that it is no longer recognised for uninstall and result in multiple reboots plus deletion of parts of the registry to uninstall a service. Why can’t you force the removal of a service using the Service manager? This could easily be locked down to admins only.
Why does .NET make configuring COM servers and services so difficult. Delphi builds registration into the appropriate code so that they can self register/unregister. This makes so much sense – you can never be left with an exe that you can’t uninstall.