What technology stack to choose
For the criterias below, what a tech开发者_运维知识库nology stack would fit best?
- Cross-platform (Linux/Windows).
- Ability to run as a service (daemon).
- Powerful object-oriented data access (O/R-mapping).
- Multiple databases support (MsSql, Oracle, MySQl, SqlLite, Postgress).
- Web application can be tested (Unit and Integration testing).
- Reasonable or no development price (includes IDE and other tools).
- Reasonable or free licensing (price of OS, Databases etc).
- Very small dev team (1-5 people).
- Windows/.NET background of the team.
I would easily choose .NET as a platform with ASP.NET MVC/NHibernate. I am good at .NET and doing it for about 3 years or so. So that is easiest choice for me.
But there seem to be too many issues running ASP.NET on Mono. Mostly I found those on the net. But the ones I am aware of are:
- different versions of Mono on different hosts
- different behaviuor of some objects on different platforms (Ayende wrote in his blog some time ago about this)
- conservative garbage collector
- legal issues with MS.
I particularly like Ruby as a language, but not too sure if it requires a lot of tricks to satisfy points 2, 3, 4.
As for Java, for some reason I just can't do it. Every time I have to think to write get/set instead of a property, I fall back to C#. I would do Java if there would be no .NET 2/3.
So 2 main questions:
- What language would fit best?
- What related technologies would be useful?
A standard suggestion would be:
- Java (cross-platform)
- JSF for the presentation layer. JSF is more or less similar to ASP.NET, (and Java and C# are also alike), so the .NET background wouldn't be such a problem.
- Hibernate / JPA (powerful, multiple database support)
- Selenium, JSFUnit, JUnit, TestNG for testing
- Eclipse + plugins - mostly free
- PostgreSQL - powerful and free
- Some Linux distribution for OS
- spring framework - you don't have any specific requirement for this, but it makes your life easier.
The good news is that Ruby has some excellent O/R mapping packages. Try ActiveRecord (which is a part of Rails). O/R mapping in Ruby is even easier than it is in Java -- there's you don't need code generation to satisfy a static type system, ActiveRecord uses method_missing
to emulate the necessary function calls.
Ditto for database drivers -- they've are Ruby bindings for most major databases.
If you're interested in Ruby, then Ruby on Rails will cover most of your requirements (except for dealing with a team that's most familiar with Windows/.NET). You can also run Rails on JRuby (which is Ruby compiled to the JVM).
i will suggest going for java
- Java
- SpringFramework
- Freemarker/Velocity
- Hibernate
- Eclipse + plugins - mostly free [ copied from Bozho ;) ]
- MySQL - powerful and free
Any of these options should work for you (tough call though):
- http://rubyonrails.org/
- http://www.playframework.org/documentation/1.0/home
- http://liftweb.net/
- http://www.grails.org/
- http://www.djangoproject.com/
Good luck. It will be interesting to see how the .NET developers feel about switching from .NET to something else.
I would say:
Language
Python or PHP or Java, they all work very well under both linux and windows. Both communities are frequently offering support for both operating systems unlike the Ruby community
Framework
Django (python) or Zend Framework (php)
Database
Any, all languages mentioned have drivers for the most popular databases like Mysql, Postgresql, MSsql, Oracle.
Os
Pick anything you are most comfortable with managing. Consider the time learning how to operate vs the license cost. As the technologies suggested are cross platform, it doesn't matter.
精彩评论