What technology should I work with, is a question we all sometimes struggle with while planning software development. Often, projects are bracketed into different segments like small, medium or enterprise size, depending on various factors like budget, timeframe, and complexity of the project. Another factor to consider if you’re not outsourcing is to look at which technology is most closely related to the skills of your in-house team preparing to build the new product. Else, you might have to take into account the time and budget necessary to train your team to learn a new set of tools. The first step of choosing what technology to use will start with understanding the project requirements completely and then deciding what segment it fits into. Selecting a web framework is a challenging task due to a huge number of aspects to take into consideration. End of the day, you have to decide what framework works best for you, but keep aside your inherent prejudices and make sure your decision is ultimately data-driven.
Now coming to ASP.NET and Ruby on Rails, you will not find anything which can be done with one, but not the other. In other words, the technological capabilities are about equivalent, but the significant difference is the availability of open source extensions and community support. The rails community is much larger and more engaged than the ASP.NET community and is known to provide much better support. The ASP.NET community has some public and open source extensions, but a fraction of what's available for Rails.
Ruby on rails
- Can be embedded into Hypertext Markup Language (HTML)
- Super advanced string and text manipulation techniques.
- A Very High-Level Language (VHLL).
- It allows encapsulation of data methods within objects.
- Maintaining scalable and big programs written in Ruby is easy.
- Pure OOP (Object-Oriented Programming).
- Can be easily connected to MySQL, DB2, Oracle, and Sybase.
- Ability to write multithreaded applications with a simple API.
- It offers advanced array class.
- Better security features.
- It gives you the ability to write external libraries in Ruby or C.
- It has a debugger.
- It has flexible syntax.
- Powerful string handling.
- The learning curve can be steep.
- Slower processing time (CPU time)
- Development and updates are slower than ASP.Net.
- It doesn't have enough informational resources.
If you want a simple data driven application which isn't going to have a significant load, then go with Ruby on Rails, but if you go beyond this use case, you will quickly discover the limitations of the framework. Of course, there are workarounds to these problems, but most are a tad experimental.
ASP.NET is more suited for enterprise level projects. ASP.NET is a server-side, open-source web application framework designed to produce dynamic web pages. Developed by Microsoft to allow developers to build dynamic websites, web applications, and web services. ASP.NET, built on the Common Language Runtime (CLR), allows developers using any supported .NET language, to write ASP.NET code.
- ASP.NET will significantly reduce the amount of code necessary to build large applications.
- It comes with just-in-time compilation, native optimization, early binding and caching services right out of the box, all of which gives you better performance.
- Your applications are safe and secured, with built-in Windows authentication and per-application configuration.
- The ASP.NET framework comes with a rich toolbox and designer in the form of the Visual Studio integrated development environment.
- The source code and HTML are together. Hence, ASP.NET pages are easy to write and maintain. Moreover, the source code is executed on the server, providing a lot of flexibility and power to the web pages.
- It gives you simplicity since ASP.NET makes it easy to perform usual tasks, from client authentication and simple form submission to deployment and site configuration.
- It allows you to keep your application constantly available to handle requests. All the processes are scrupulously managed and monitored by the ASP.NET runtime, so when a process ends a new one can be created in its place.
- It is entirely a server-side technology so, before it is sent to the browser, ASP.NET code executes on the server.
- It allows you to choose the language which best suits your application, being language-independent.
- The Web server continuously monitors the components, pages, and applications running on it. If it notices any infinite loops, memory leaks, other illegal activities, it immediately destroys those activities and restarts itself.
- It allows easy deployment. There is no need to register components since the configuration information is built-in.
- It is an application which runs faster and counters large volumes of users without facing performance problems.
- One significant advantage of ASP.NET is its speed. After a while, it generates native-code assemblies, and you're looking at C/C++ speed when handling requests.
- Limited Development and Debugging Tools.
- Mixes layout (HTML) and logic (scripting code).
- Interpreted and Loosely-Typed Code.
- No real state management.
- Updates files only when the server is down.
- Obscure Configuration Settings.
- Strongly typed languages are less than ideal for web development. Web development is inherently a dynamic environment.
Look at your requirements and the problem you're trying to solve. Do you need something out in a couple of days which just add a couple of records to the DB? Choose RoR. Are you making a huge data mining app which is going to be run by many people? Go with ASP.NET. Are you building a new application for an existing organization which primarily deploys on Windows? Choose ASP.NET. Are you building a high growth consumer web startup with the eventual intent of getting funded? Choose Rails. If you're somewhere in the middle, determine how much time you have on your hands before you have to start delivering value. If the time is less, pick the platform you are most familiar with.
Microsoft tools tend to offer a compelling package when you're starting out, great Integrated development environment, good docs, and purportedly good support. The problems begin when you want to explore beyond this, as in explore the code or hack stuff. Moreover, you're stuck with their platform for everything. The benefit of using an open package is, you can mix and match. If you have the time, you can find the tools which best match your specific requirements and put together your dream application. In the end, it depends on your comfort zone as a developer. The reason you find many "Microsoft sucks" answers in forums is because most programmers love the freedom being locked into the Microsoft platform takes away. Bottomline, don’t indulge in technology fanboyism and make data driven decisions.