2009-07-13 6 views
2

Ich habe eine große Reihe von klassischen ASP-Seiten zu konvertieren. Ich werde einen Mac OS X Server 1.5.7 laufen lassen. Ich kann wählen, was ich will, im Rahmen des Zumutbaren, aber ich bin fest zwischen Ruby on Rails oder dem vollständigen Java EE-Stack und einem ORM.Was ist eine bessere Wahl für mich Ruby on Rails oder Java EE?

Mein Hauptanliegen ist die Datenbanken, die ich treffen muss und was jedes Framework/Stack gemacht wird. Ich wurde besorgt, nachdem ich einige Dinge in RoR gebaut hatte. Ich weiß nicht warum, wahrscheinlich nur mangelnde Erfahrung damit, aber es fühlt sich nicht so an, als wäre es richtig. Ich kann das Gefühl mit Sicherheit ignorieren und Fortschritte machen, da keine Beweise für das Gegenteil vorliegen.

Ich habe folgende bestehende Datenbanken zu treffen, die nicht wieder etwas anderes umgewandelt werden:

Oracle Ingres SQL Server MySQL vielleicht

Welche Rahmen/Technologie-Stack ist besser etwas anderes für diese Intranet-Anwendung?

Vielen Dank für jede Hilfe.

EDIT: Ich weiß nicht, ob das wichtig ist, aber ich alle Datenbanken und bringe sie wieder zusammen. Es ist nicht eine Datenbank eine Seite. Ich frage sie alle und bringe eine Seite (n) zurück.

EDIT: Ich habe begrenzte Erfahrung mit RoR und Java EE, aber muss eine von ihnen oder etwas anderes wählen.

EDIT: Vergessen zu erwähnen, ich habe Jruby auf Schienen eingerichtet, nicht nur Ruby auf Schienen.

EDIT: Aus einem Kommentar unten (danke) Ich habe diese:

Ist es ein Web-Service in xml nehmen und es wieder heraus vorbei? - es ist möglich, aber nicht jetzt

Ist es eine formularbasierte Ticket-Anwendung? - Teil davon wird diese Art von Bedarf haben

Ist es eine einfache CRUD? - Teil davon

Was machen Benutzer damit? - Im Wesentlichen gibt es viele verschiedene Arten von Webseiten. Ich habe einen Abschnitt, der eine ganze Anwendung an und für sich ist. Ein anderer Teil zieht Daten aus vielen verschiedenen Datenbankquellen zurück. Ich habe verschiedene Benutzer mit unterschiedlichen Bedürfnissen. Ich suchte nach einer Lösung für alle. Ich könnte mehrere verschiedene Sprachen und Frameworks haben, wenn ich wollte - was ich jetzt auf einem Microsoft-Server habe, aber ich suchte nach einer einheitlichen Vorgehensweise. Es ist eine große Konsolidierung, aber ich möchte keine Websphere dafür kaufen.

Wie funktioniert es mit der Datenbank? - nicht sicher, was zu sagen, jdbc, Crud, oder einfach nur lesen, variiert es basierend auf der Notwendigkeit einer bestimmten Webseite

Wie viele Benutzer verwenden die Anwendung? - wahrscheinlich 1000, aber es kann wachsen. Wenn ich etwas davon in eine Internet-App verschiebe, kann dieser Teil Tausende haben.

Antwort

4

In meiner begrenzten Erfahrung funktioniert RoR viel besser, wenn Sie es erlauben, die notwendigen Datenbankschemas zu erstellen. An dieser Stelle würde ich empfehlen, Java EE und Hibernate (oder etwas Ähnliches) zu verwenden, da Sie weniger frustriert sind, wenn Sie versuchen, in die Legacy-Datenbanktabellen zu integrieren.

Sie haben auch erwähnt, dass Sie keine Erfahrung mit RoR haben - haben Sie Erfahrung mit Java EE und einem der Persistenz-Frameworks (wie Hibernate)? Ich würde auf jeden Fall versuchen, bei dem zu bleiben, was Sie wissen, es sei denn, die zeitlichen Zwänge des Projekts umfassen ein "Lernbudget" für Sie, um eine neue Sprache und einen neuen Rahmen zu entwickeln.

8

Ehrlich gesagt, das ist einfach nicht genug Informationen, um weiterzumachen. Ich würde Fragen stellen wie:

Gibt es irgendwelche "Legacy" -Datenbankschemas zu unterstützen? Klingt, als könnte es sein. Wenn ja, können ORMs schmerzhaft schwierig mit arbeiten, während SQL kann ein Kinderspiel sein. Das spricht für Java.

Welche vorhandenen Fähigkeiten haben Sie in Java oder RoR? Wenn da mehr Erfahrung in der einen ist als in der anderen. Es mindert das Risiko erheblich.

Abgesehen davon sagen Sie nichts über die Art der Anwendung, ihre Eigenschaften, die Anforderungen und so weiter, so dass Sie wirklich nicht in die eine oder andere Weise sagen können.

Wenn Sie Java gehen, gehen Spring mehr als "klassische" Java EE (dh EJB). Spring Remoting, Spring Web Services und so weiter haben EJB (sogar 3.0) aus Gründen der Einfachheit und Benutzerfreundlichkeit aus der Bahn geworfen. Wenn Sie eine SQL-zentrierte Persistenzschicht möchten, werfen Sie einen Blick auf Ibatis. In der Tat, hier ist ein Spring and Ibatis Tutorial.

Wenn Sie das mehr Objektmodell Geschmack der Persistenzschicht bevorzugen, gehen Sie entweder Hibernate oder EclipseLink. Beide funktionieren gut mit dem Frühling.

Als Anwendungsserver empfehle ich Glassfish (v2 oder v3).

+0

Nur ein Update, dass Glassfish nicht mehr als Produktionsserver verwaltet wird. – johnny

0

Ich glaube nicht, dass es eine "bessere" Lösung gibt. Ich denke, es hängt von deinem Fähigkeitsniveau mit jedem Ruby und Java ab. Wenn Sie und Ihr Team besser in Java sind, dann gehen Sie mit Java. Wenn Zeit und Geld keine Rolle spielen, dann möchtest du vielleicht Ruby lernen (oder umgekehrt, ich habe gerade einen ausgewählt).

Sie möchten in der Lage sein, einen stabilen, wartbaren Webserver zu erstellen. Sie müssen also einschätzen, welche Methode am einfachsten zu entwickeln, am einfachsten zu warten und am stabilsten für Ihre Umgebung ist. Ich glaube nicht, dass, richtig entwickelt, Sie wirklich einer "besser" als der andere für eine Standard-Intranet-Webseite ist. Es hängt wirklich davon ab, was die Webseite/der Webdienst tun soll.

Vielleicht könnten Sie uns bessere Antworten geben, wenn Sie uns mehr über die Website erzählen.

+0

Welche Art von Zeug müsste ich sagen, um zu helfen? Ich bin mir nicht sicher, wie ich das beantworten soll. – johnny

+0

Wie wäre es mit: Was für ein "Web" -Server ist das? Ist es ein Web-Service, der XML aufnimmt und wieder zurückgibt? Ist es eine formularbasierte Ticketeingabeanwendung? Ist es eine einfache CRUD? Was machen Benutzer damit? Wie interagiert es mit der Datenbank? Wie viele Benutzer verwenden die Anwendung? – amischiefr

+0

Ich habe diese Information hinzugefügt. – johnny

0

Was ist mit Groovy und Grails? Sie können das Beste aus beiden Welten erhalten ...

+0

Wie unterscheidet sich das von jruby auf Schienen? – johnny

+0

Ich habe keine Erfahrung damit, ich erinnerte mich nur daran, was einige Freunde, die mehr in Webentwicklung sind, mir von ihren Erfahrungen mit Web-Frameworks erzählten^_^ – fortran

1

Wenn Sie in einen großen Legacy-Stack bauen (und es klingt wie du bist). Sie werden vielleicht feststellen, dass die Java-Welt Ihnen helfen wird, den Schmerz hinter einigen gebräuchlichen Schnittstellen abzubauen. Von meiner, auch begrenzten Erfahrung, mit ROR wird es natürlich nicht gut mit anderen Modellen spielen.

+0

das ist genau das, was ich anfing zu fühlen und somit meine Frage. Vielen Dank. – johnny

0

Ruby on Rails ist einfacher zu erlernen. Es ist ein All-in-One-Framework. Sie brauchen weder Frühling noch Winterschlaf. Sie brauchen nur etwas Ajax für bessere Ansichten.

Ruby on Rails soll Convention over Configuration (CoC) und das schnelle Entwicklungsprinzip Do not Repair Yourself (DRY) betonen.

"Convention over Configuration" bedeutet, dass ein Entwickler nur unkonventionelle Aspekte der Anwendung angeben muss. Wenn beispielsweise im Modell eine Klasse Sale vorhanden ist, wird die entsprechende Tabelle in der Datenbank standardmäßig als Sales bezeichnet. Nur wenn man von dieser Konvention abweicht, wie beispielsweise die Tabelle "Produkte verkauft", muss der Entwickler einen Code bezüglich dieser Namen schreiben. Im Allgemeinen führen Ruby on Rails Konventionen zu weniger Code und weniger Wiederholungen. [Zitat benötigt]

"Wiederhole dich nicht" bedeutet, dass Informationen an einem einzigen, eindeutigen Ort liegen. Mit dem ActiveRecord-Modul von Rails muss der Entwickler beispielsweise keine Datenbankspaltennamen in Klassendefinitionen angeben. Stattdessen kann Ruby on Rails diese Informationen basierend auf dem Klassennamen aus der Datenbank abrufen.

"Fette Modelle, dünne Regler" bedeutet, dass die meisten Anwendungslogik innerhalb des Modells platziert werden sollte, während der Controller so leicht wie möglich bleibt.

+1

Sie haben lediglich einige gebräuchliche Begriffe aus Rails kopiert und eingefügt. Es gibt keinen Versuch, die Frage neben Ihrer sehr kurzen Einführung zu beantworten. – jason328