tags:

views:

113

answers:

7

Can someone please give me the value added aspects for migrating from coldfusion to asp.net framework. I would appreciate the insight, because frankly, I can't find any reason to do so. Understand, I'm not a cf or a .net lover. I'm simply not the kind of person who buys the company line of doing something just because we can. I also don't believe in spending mega bucks to re-engineer and force a 12 person cf shop to learn something new just because we can. And most importantly, I'm of the mentality - if it ain't broke, don't fix it.

Finally, I'm trying to save my customer from a person who has a lot of power, who knows nothing about technology, and lets other people tell him the latest buzzwords thereby not doing the research and jumping into something that could be a disaster. Love to hear your opinions. Thanks.

A: 

there rapid development platforms retraining isn't rapid that seems a good enough reason not to

squishy
A: 

ColdFusion is awesome full-feature technology stack. Ask your person what exactly you'll need to do in .NET and explan that you can make the same with ColdFusion faster and better.

Sergii
That is very subjective, .NET does have strength.
jfrobishow
@jfrobishow This is method to resolve particular problem, not an attempt to start a holy war.
Sergii
+4  A: 

Full disclosure: I'm a long-time professional CF developer, and I'm not crazy about ASP.NET.

That said, there are some advantages. If you are already running Windows servers, you save some on licensing (although this only applies if you are expanding or upgrading your farm). There are more .NET developers out there.

There are, however mitigating factors. If you have to rewrite everything, or write in a language that will slow down your development, then the cost savings have to be balanced against salary and time not spent on new features.

Also, more developers does not mean better developers. If there are more .NET shops, then there is more competition for the talented developers.

Unfortunately, your question is highly subjective, and there isn't a right answer. There are advantages to each language. You need to look at your specific situation to gauge which is more appropriate.

Ben Doom
+4  A: 

As some one who has been around the block with cf and .net here are my pro's and con's of porting your (clients) code to .net

Pro

  • Visual Studio. A professional grade IDE with tight integration with other microsoft tools is very nice. You can use cfeclipse to offset this somewhat but visual studio is an out of the box solution which is tailored for use with the .net languages. There are also tools in vs which are just not present in cfeclipse.
  • Strict typing. YMMV on this one but if it is something that the devs are used to and want, it will help remove a lot of ambiguity in code. If your devs are not used to it, it could seems like a hindrance.
  • Updating the legacy. Again this is very situational but if you are dealing with legacy code (much of the cf I've seen is) then porting to .net could give you a chance to update/modernize your code. However if you are using modern cf with cfcs then this is less of a pro. (I do believe you can write perfectly acceptable modern oo code in cf).
  • License costs. If you are on a shoestring budget this may come into play. In most environments the cost of CF licenses is negligible.
  • Lower memory usage. This is very dependent on the app but .net does seem to use less memory.
  • Debugger. It is nice to be able to step through code in .net.

Con

  • Rewrites are expensive and can go horribly wrong. Much ink has been spilled on this subject.
  • You lose the administrator. .net handles most of its configuration through config files and IIS settings. If you are used to the administrator this could be a set back. It is very nice to handle all of your datasources, redirects, etc.
  • .net requires more code. I am not the most experienced .net dev but my limited experience has been that when doing two equivalent tasks in cf and .net (c#), the .net almost always comes out longer. ColdFusion is just a higher level language.

Wash

  • Cost of devs. The pool of .net devs seem to be much larger but (at least in my area) the CF devs are a little cheaper. Also being an older language, CF devs may have more experience in the "real world" while .net devs may have more school training. (again YMMV).
  • Code style. Some people love to hate the syntax of CF. (I am guilty of long tirades against the # operator). At the end of the day it gets the job done and IMO is not grounds for a rewrite.
  • Buzz Factor. CF is getting a little long in the tooth and people will ask "You guys still use COLDFUSION !?". It is still supported though and used extensively so we are not talking COBOL here. Still you are not as likely to see cool new features like that which MS is capable of bringing to .net. Here you just need to look at value added. I would not make this decision based on the "flavor of the month" but what exact features .net could bring to your development.
  • Learning a new framework/language. This is completely subjective. If you WANT to learn a new framework this could be an excellent chance to get paid for doing so. On the other hand if there is resistance to learning this does not work in your favor. Also if you are dealing with a strict deadline type of work place, new environments and languages throw a lot of chaos into things like estimating time.
Nick
Hmm, a couple of things there... CF is not just "still supported" - it's still *actively developed* - an important difference. Also FusionDebug provides step debugging to CF... dunno how it compares to VS, but it does exist.
Peter Boughton
Additionally, CFBuilder is a newer Adobe-built tool, based on Eclipse like CFEclipse, but with tighter integration with servers etc. Not quite as broad as VS, but you can make it so with addons. it includes debugging tools that interact with the server. For your framework comment, you could look at applying a "modern" framework to CF as easily (if not moreso) than rewriting it in a new framework in another language. Otherwise, very good points.
Ben Doom
Not to mention that adobe cf is java based, and thus you can extend cf with just about any java library out there. This adds a lot of value, IMHO.
Mark
To build on Peter's comment, Adobe provides step-debugging for free for CFEclipse and CFBuilder users -- no need to pay for FusionDebug *just* for step debugging. (Though it does provide other benefits)
Adam Tuttle
+1  A: 

Nick makes some great points. I currently use both .Net and Coldfusion and I can say the main factors that make me long for .net when using CF are:

Visual Studio - there is no other IDE out there that can compare to this. (Intellisense is amazing). Eclipse pales in comparison and Builder is just pointless.

Strongly typed language - type safe, compile time checking etc.

Object creation and garbage collection performance - in my experience, if you try and go the the OO approach with CF, you need to tweak the hell out of your JVM to get any kind of performance. CF is a real dog when it comes to this. CF 9 is apparently more efficient, but .net has great performance out the box.

Syntax - tags are horrible IMO.

The biggest selling point of CF though is its ease of use, and unbelievably quick prototyping speed.

I was trying to make a a few simple http get request in asp.net the other day, and I so wished I had something as simple and as quick as cfhttp.

When people ask me to compare the two languages, I boil it down to this. If you want a simple site, or need to prototype a site quickly, or you're developing an internal facing application like a CMS where performance is not critical, then go CF. Don't fork out for a license though. Railo all the way.

However, if you're developing a large, performance critical site, or you are a new developer looking to learn a platform, I would go with .net.

As a final footnote, this is highly subjective. The only advice that is truly helpful is to try both and make up your own mind.

Bigfellahull
In CF9, they've added support (sketchy, I'll admit, in a few places) to the script syntax, so you can write without any tags if you should so desire.
Ben Doom
Yeah, components all in script and I can finally instantiate an object with new!
Bigfellahull
+1  A: 

I just wanted to add a couple of little comments to Nick's post :

IDE : There is also now CFBuilder from adobe. Still no Visual Studio from what I hear of VS, but does include the likes of a line debugger if that's what you want. My personal preference is CFEclipse out of the two, but that is, as I say a personal preference. EDIT : And as Peter points out there is Fusion Debug available as a step debugger for ColdFusion

"CF Long in the tooth" : is not a bad thing. Its a solid technology that gets regular version and point releases and has been around longer than most development languages, so has the benefit of maturity. CF9.0.1 was released recently. CF X is in the works. Railo and Open BlueDragon get regular updates as well, probably more regularly than Adobe ColdFusion, but that is the advantage of OSS.

"Licence Costs" : In the context of this question, where CFML is already in use, licence costs don't really count. Plus it could be said, that if you were to put ColdFusion on say a CentOS server, then its actually cheaper to run ColdFusion than .Net after you figure in the cost of paying for a Windows Server licence. There are also Railo and OpenBlueDragon CFML servers both of which are free to use. Swings and roundabouts.

To comment on something that Bigfellahull mentions.

"Performance" : You can quite happily build some really badly performing applications in both .net and CFML. In both cases the performance comes down to knowing how to write good code and how to configure your server. As a CF developer, I can say that having your server engine based on a Java Server has a load of benefits for performance and extensibility. There are also products such as FusionReactor and SeeFusion that enable developers/server admins to monitor ColdFusion Servers to find and resolve applications and problems. Having only been involved in a few odds and ends of .net development I'm not sure whether there are equivalents with the .net framework and IIS.

What I want to reiterate from Nick's answer is that really what it comes down to is the cost and risk associated with re-skilling and re-tooling developers and re-engineering a project in a different language. As Nick says :

Rewrites are expensive and can go horribly wrong. Much ink has been spilled on this subject.

Stephen Moretti
A: 

Everyone has given great feedback. I appreciate it. To me, it's commonsense - if there is no value add - there's no reason to change. But then I deal with mental patients!

Trimm