Webanwendung, Cloud Computing, Programmiersprachen für Komponenten gesucht

Heyho,

wir starten demnächst ein Uniprojekt und sind noch auf der Suche nach "passenden" Programmiersprachen. Das System wird eine Webanwendung sein, welche sehr wahrscheinlich in der Cloud arbeiten wird. Das Programm fragt vom Benutzer einen Suchbegriff ab, durchsucht damit diverse Webdienste mit APIs (noch nicht ganz klar, welche Dienste), führt anschließend semantische Analysen auf den Ergebnissen aus und speichert sie schließlich in einer Datenbank.

Das System besteht grob gesagt aus 3 Komponenten:
- GUI zur Verwaltung und Eingabe der Suchbegriffe
- Agent zum Durchsuchen der Webdienste (soll in der Clound laufen)
- Agent zum Ausführen von semantischen Analysen auf den Ergebnissen (soll ebenfalls in der Cloud laufen)

Ich dachte mir, dass die Weboberfläche einfach geskriptet mit AJAX und mit HTML/CSS erstellt werden könnte. Für die Agenten dachte ich an JAVA, da damit die meisten einiges an Erfahrung mitbringen, wobei C# da auch noch eine Wahl wäre. Skriptsprachen (PHP, JS, etc.) scheiden meiner Meinung nach hierfür aus. Die Kommunikation zwischen den einzelnen Sprachen soll über JSON Objekte realisiert werden.

Ich weiß nicht, ob die Angaben reichen, um konstruktive Rückmeldungen zu erhalten, aber ehrlich gesagt habe ich keinerlei Erfahrungen im Auswählen von Programmiersprachen für bestimmte Verwendungszwecke :)

Was meint ihr dazu?
 

jeipack

Erfahrenes Mitglied
Hi
Ich persönlich bin nun seit ca 2 Monaten ein riesen Fan von NodeJS. Denke das ist sicher ein Blick wert. NodeJS ist JavaScript Serverseitig und wird mit der V8 Engine ausgeführt, läuft also relativ schnell. Da du wahrscheinlich einen html Client auf dem Server brauchen wirst (für den Suchagent) hier mal der Code für einen Proxyserver mit NodeJS (20 Zeilen Code ;):
Javascript:
var http = require('http');

http.createServer(function(request, response) {
  var proxy = http.createClient(80, request.headers['host'])
  var proxy_request = proxy.request(request.method, request.url, request.headers);
  proxy_request.addListener('response', function (proxy_response) {
    proxy_response.addListener('data', function(chunk) {
      response.write(chunk, 'binary');
    });
    proxy_response.addListener('end', function() {
      response.end();
    });
    response.writeHead(proxy_response.statusCode, proxy_response.headers);
  });
  request.addListener('data', function(chunk) {
    proxy_request.write(chunk, 'binary');
  });
  request.addListener('end', function() {
    proxy_request.end();
  });
}).listen(8080);

Ganz interessant ist dann z.B. socketIO, mit dem du einen Socket direkt zum Client (Funktioniert in allen gängigen Brower, z.T. mit Fallback zu Flashsocket, Iframe, oder was der Client auch immer unterstützt) aufbauen kannst und somit kein Ajax brauchst und der Server auch direkt Infos an den Client schicken kann ohne dass er zuerst einen request bekommt.


Auch Hosting-Services gibt es immer mehr. z.B. http://www.duostack.com

Allerdings sagst du ja das Javascript ausscheidet, wieso eigentlich genau?

http://nodejs.org/
http://socket.io/
 
Skriptsachen halte ich für untauglich aufgrund mangelnder Geschwindigkeit sowie der meiner Meinung nach geringeren Robustheit gegenüber compilierten Sprachen. Allerdings hat laut Wikipedia mit V8 umgesetzter JS Code nahezu die Geschwindigkeit von kompilierten Daten, was diesen Aspekt ja schon fast hinfällig macht :)
 

Navy

Freiwillige Serverwehr
node.js mit socket.io ist schnell und skaliert. Du brauchst Dir um Threading keine Gedanken machen und es ist per default als asynchron designed. (BINGO!) Allerdings läuft es nur schwerfällig unter Windows, aber das solltest Du ja schon von C# kennen ;)