views:

701

answers:

4

I'm planning to develop a web-services (SOAP to C++ client) in Java with Metro/Hibernate and front it up with a web-site written in JRuby on Rails, connecting Java modules through JRuby and generally through a database. I already wrote some code and set up everything.

Now, I've heard that .NET 3.5 is really powerful and after some reading I acknowledged that to be true. However, would it make sense to drop this monstrous yet curious hybrid of Java and RoR to switch everything to .NET? Everything: services, database connection (linq for objects), web-front, ajax stuff -- everything in one huge .NET 3.5 solution.

I am also looking to have fun but not as much fun as, say, in C++ for server-side :)

I know that with the power of RoR it doesn't really matter whether it's either side. However, whether I'm all set up for .NET or Java, I still have the feeling I'm doing it wrong and I should just switch to the not-side-I'm-currently-on.

I have a very limited experience with web development, I've only written an ASP.NET web-service once and supported Java web-service so I have a real OCD with the choice of platforms here.

+2  A: 

.NET 3.5 is loads of fun (among mainstream platforms), but in my personal opinion Ruby is as much fun as if not more fun than .NET 3.5.

About the capabilities, they are also roughly equivalent, you certainly can make a SOAP web services application in both without problems.

About the "monstrous hybrid", there's no such thing, it's just a (very active) port, like IronRuby or IronPython in .NET land.

There will be more of a coherent whole if you stick in .NET and write in, say, C# than if you mix and match Ruby and Java, of course. But you certainly can use only JRuby.

Given that the fun and capability factors are more or less equal, I'd pick JRuby, just in case I happen to have to deploy on Linux, Solaris or something that's not Windows in the future.

If you are certain you'll want to stick to Windows forever, then pick whatever's most fun for you.

Vinko Vrsalovic
+1  A: 

I'm sorry, but what you are doing sounds like a big ball o' mud. Doesn't matter to me what path you take, but I'd simplify the architecture by reducing the number of technologies/frameworks that you are using. If you can find a way to do it in Ruby/Rails without reference to Java (although you may need to keep the C++ client-side), that would work. Obviously, working in .NET (my preferred platform) is another choice. Windows Communication Foundation makes it much easier to write web services that are lighter weight than the old ASP.NET web services -- including RESTful web services using JSON.

If I were doing it today I'd use ASP.NET MVC for the web front-end, WCF (for web services), and either eliminate the C++ client or consider writing it in C# with .NET or Mono.

tvanfosson
A: 

It sounds to me like you are over planning or over engineering a little bit here. I don't quite have a clear picture of your architecture by reading, but I see many words like .NET, Java, SOAP, C++, JRuby on Rails, RoR, web services, Hibernate, ajax, linq, etc, are being thrown around, so I just wonder how they are all going to fit together. Here are some simplified architectures that might or not fit your needs since I don't quite understand your problem. I also do not see that there is any question from your post, so given the circumstance, I would suggest:

  1. Web front end: RoR with Ajax. Web services: .NET. Data access: Linq.

    What this means is your .NET web services would use Linq for accessing the data and expose via SOAP which would be consumed by the front end Ror.

  2. Alternatively, replace .NET by Java and Linq by Hibernate.

If the above is useless, then my other suggestion is you don't have to combine all those technologies in one solution.

Khnle
A: 

I'd rather move to FreeBSD or Debian in the future... I sure don't want to stay on Windows forever. But there is Mono, right?

mannicken
Mono is fine if you can live within it's limits. It doesn't fully support everything that the MS .NET platform offers.
Brian Knoblauch
Especially if you want 3.5 for the fun. Mono is always (and will always be) behind of current .NET.
Vinko Vrsalovic