A client's old Delphi 5 based system, thousands of lines of code, is starting to break down. Issues with new drivers and operating systems are the primary problems.
We're assuming a complete rewrite, a module at a time and want to look at a browser based interface. The database is Oracle 10 which we could replace as well if it make sense.
Primary requirements are:
Sourced by a company or user community that is robust enough to be around for the next 5-7 years (we're realists on this).
Able to quickly interface to use stored procedures from Oracle and web services produced in ASP.NET and ColdFusion as data sources.
Deployable on virtualized clients as well as thick client Windows and Apple machines.
Extra points if there is some way to reuse the old Delphi code (but again, we're realists so we're not expecting this will happen).
We're looking at Silverlight, Flex and Ruby as possible development environments. Does anyone have any other recommendations or comments on the above?
Thanks for your assistance.
There are a lot of factors involved in making your choice. First thing I'd ask is what do you know? If the answer is only "maintaining the legacy system" then you're in essence starting from scratch in terms of knowledge of the new technologies.
First, I want to clear up what I perceive as a misconception in your original question:
We're looking at Silverlight, Flex and Ruby
It looks like you are examining multiple, extremely different technologies designed for very different purposes. They won't compare very well.
A more direct comparison would be to compare Silverlight to the Flash Player to HTML/JavaScript. Or to compare Flex's MXML to .NET's XAML. Ruby, as far as I know is primarily used on the server side, often with HTML and JavaScript as the front end. If your front end solution is required to interact with .NET and ColdFusion web services, I'm not sure why you'd throw a third server side technology into the mix.
That said, I'm going to recommend using Flex/The Flash Payer as your front end technology and ColdFusion as your server side technology. There is one reason I recommend this and that is because it is what I know. Hopefully someone more knowledgeable on .NET / Silverlight / Ruby can chime in about the benefits of each one.
I'll examine more in your points, one by one:
Sourced by a company or user community that is robust enough to be
around for the next 5-7 years (we're realists on this).
It is my expectation that Silverlight, The Flash Platform, and Ruby will be alive and kicking for the next decade.
The Flash Platform, and Flex specifically, has vibrant community. I believe one of the best things Adobe does is foster the development community around their platform and tools.
Flex is still new and growing, but it has seen huge growth over the past few years. Although Adobe is tight lipped about the number of developers, most estimates I see put it at between 250K-350K, which is more than double what it was 3 years ago. There are podcasts, plenty of blogs, more frameworks than you can shake a stick at (RobotLEgs is the current Favorite), tons of conferences (My Favorite is 360|Flex ), and lots of open source projects.
ColdFusion is over 10 years old, is currently in it's 9th version, and has a huge community with thriving mailing lists (such as House of Fusion and the Adobe forums ), plenty of Podcasts (such as CFHour and cfconvesations ), blogs, books, frameworks (such as Fusebox, Model Glue, and Mach-II ), open source projects, and conferences.
Some people say it is hard to find ColdFusion developers, and that is sometimes true because the community is relatively small compared to .NET. Last time I saw estimates, they were estimating 750K developers world wide. You may have similar problems with Flex developers. But it sounds like you already have a team you want to train, so perhaps you aren't looking for new hires and that won't be an issue.
There are also plenty of Adobe User Groups worldwide. Feel free to stop by one and/or ask the group manager about the technology of his choice. Most groups I'm aware of are either Flex or ColdFusion.
I'll add that ColdFusion and Flex/Flash Platform both come from Adobe and Adobe has taken great pains to make sure they work together well. I think their integration is unparalleled.
All this said, .NET has big company backing it too, and a larger developer base than ColdFusion and/or Flex does. I perceive you're more likely to find supported commercial solutions in the .NET world than in the Flex or ColdFusion space; but can't speak from personal experience.
I didn't think Ruby had a company behind it, but I understood it had a very vibrant community. You could easily use Ruby to build a backend to a Flash Platform app or a Silverlight one.
Able to quickly interface to use stored procedures from Oracle and web
services produced in ASP.NET and ColdFusion as data sources.
You mentioned the possibility of replacing Oracle. I would recommend against this. It sounds like you're going to have a lot of work to do. If yo can get by with only changing a single "layer" of your application at once, do it.
ColdFusion can quickly and easily access data in Oracle either using Stored Procedures or direct queries. I have no doubt that .NET can do the same. [and I assume Ruby should have no issue with that either].
Silverlight and The Flash Player (Flex) are designed as front end technologies and I would not recommend trying to access the database directly from them. Most applications I've seen use a middleware layer (such as ColdFusion or .NET) for database access, and then Flash will just access that middle layer. In a Model View Controller Service architecture, you may often implement the Model as the database storage (Oracle), services in the middleware (ColdFusion / .NET), and the view in the front end technology (Flash Player/Flex or Silverlight or HTML/AJAX). The controller in a Flex/Flash app would most likely be created in Flash/Flex. I assume Silverlight is similar.
Using ColdFusion you'll use cfstoredproc to access stored procedures, or cfquery to run queries directly against the database. You'd put those queries in a service, and then from Flex/Flash Player you'd access that data using RemoteObjects (which is an AMF protocol which I strongly recommend using) or WebService (for SOAP calls) or HTTPService (For REST calls). AMF is a binary format, which can lead to much quicker data transfer times between client and server. IT will also automatically translate server side objects to client side objects and vice versa. That is a very nice touch and prevents you from having to write your own conversion routines.
Deployable on virtualized clients as well as thick client
Windows and Apple machines.
I guess I'm not sure what you mean by virtualized clients vs thick clients.
The Flash Player, and AIR are easily deployed to both Windows and Macs. Adobe is doing a lot of work to prepare for the wave of Mobile devices if that is important to you. Even despite Adobe/Apple arguments last year, Adobe has a packager to deploy to iOS devices. It is in it's early stages, but I am expecting to see some major updates the first half of this year.
Adobe has been criticized for performance on Macs and there are various reasons for this. But, things are constantly improving.
I know that Silverlight has Mac support, but I don't know the extent of it. I do not expect to see Silverlight on mobile devices beyond the Windows Phone OS.
In terms of Ruby, you probably wouldn't want to deploy Ruby to a desktop machine in any form. But, you can create AJAX / HTML that works with the browser of your choice (and/or use an AJAX framework that deals with browser compatibility issues). As things stand right now, HTML/AJAX will probably be your best choice for mobile device deployment, as most mobile browsers are based on Webkit, so there is often a high level of consistency in how HTML apps run across devices. And such an approach will most likely give better performance than using Flash [or Silverlight] on said device.
Extra points if there is some way to reuse the old Delphi code (but
again, we're realists so we're not expecting this will happen).
I can't help you here. Your best bet is to either re-create from scratch or to try to write some form of conversion / code generator tool. I'm not sure if the latter is practical. If you turn Delphi code into COM objects, as suggested elsewhere, they can be used from ColdFusion similar to how they can be use from .NET.
Does this help? What else would you like to know?
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With