È possibile sviluppare un'applicazione web interamente in Javascript oggi (client e server) includendo un'API RESTful che espone i dati PostgreSQL?

5

Dove lavoro abbiamo oltre una dozzina di sistemi SW interni che abbiamo sviluppato internamente utilizzando una varietà di tecnologie, framework e linguaggi. Questi includono vari da Microsoft (Web Form ASP.NET, WebAPI, WinForms, SharePoint, Office Automation, App native di Win8, SQL Server, SSRS) e altri non da Microsoft (JS / HTML / CSS semplice, PHP, Litio, PostgreSQL , MySQL). Il nostro team di sviluppo SW è cresciuto e si è ristretto di nuovo al punto in cui sono solo io e un altro sviluppatore. Mi piace provare nuove tecnologie brillanti e sfruttare diversi strumenti per fare le cose, il che spiega in parte l'enorme varietà di tecnologie che abbiamo scelto nel corso degli anni, ma siamo affetti da "Jack of All Trades, il padrone di nessuno" "sindrome.

Ora ci è stato detto che l'azienda si aspetta una nuova significativa crescita e che noi due dovremo produrre una serie di nuove applicazioni nel prossimo anno. Sono pronto a consolidare i nostri set di competenze e set di strumenti in modo da poter padroneggiare gli strumenti e concentrarci maggiormente sui problemi aziendali che dovremo affrontare senza rallentare il cambio di contesto tra le tecnologie. Di recente abbiamo fatto molto sviluppo "JS / HTML5 / CSS3" molto semplice e mi piacerebbe concentrarmi su quel set tecnologico che va avanti.

Utilizzeremo principalmente PostgreSQL come archivio dati sul back-end (eventualmente con l'aggiunta di alcuni NoSQL per usi molto specifici e probabilmente per trovare uno strumento di ricerca full-text avanzato da integrare). Le nostre interfacce utente principali saranno una combinazione di applicazioni Web tradizionali e App di singole pagine (mix 50% -50%), ma c'è la speranza per le app native mobili su tutta la linea. Pertanto vorrei esporre i nostri dati aziendali tramite un'API RESTful in modo che sia facile consumarli da vari clienti. E il fattore più importante in tutto questo è che voglio essere in grado di codificare esclusivamente in Javascript dalla parte anteriore a quella posteriore (con l'eccezione di scrivere SQL come necessario per il livello DB e HTML5 / CSS3 per la presentazione).

Questo mi lascia le seguenti domande:

  1. È possibile codificare tutti questi layer / componenti esclusivamente in Javascript senza ricorrere, ad esempio, a PHP sul server o C # per l'API RESTful (cioè WebAPI)?
  2. Necessario node.js è necessario per trasformare questo in realtà, oppure posso utilizzare un server web non di nodo e ottenere comunque l'ideale "solo per Javascript"? (related ... would node.js ha più senso in un paradigma solo JS?)
  3. Esistono framework per la creazione di API RESTful solo per JS in grado di comunicare con PostgreSQL?
  4. Esistono strumenti di ricerca full-text avanzati (come Lucene) che ti consentono di programmare contro di loro con un approccio solo JS?
posta RSW 30.05.2013 - 01:54
fonte

4 risposte

3

Sì, puoi farlo è la risposta breve.

Hai bisogno di Node.js per il lato server. Oltre a questo, puoi costruire qualsiasi cosa tu possa immaginare. Questo coprirà le tue prime 2 domande.

Dovresti controllare il expressjs framework.

Puoi trovare i connettori PostgreSQL per node.js come questo (non l'ho provato). Tieni presente che, come ti ha già detto Daniel, l'ultima tendenza è verso soluzioni NoSQL, quindi puoi trovare molto di più in quella direzione (con MongoDB e CouchDB che sono più famosi). Puoi dare un'occhiata qui .

Informazioni sugli strumenti di ricerca full-text, non ne ho idea. Ma dal momento che Lucene ha SOLR per esporre lucene su http, potresti fare le richieste dal tuo javascript lato server. Questo è il modo in cui lo usano con PHP (link: stackoverflow , lucenetutorial ).

Infine, tieni presente che puoi anche avere moduli e codici node.js nativi C / C ++ nei tuoi progetti. Ciò può rivelarsi utile quando affronti qualsiasi limitazione node.js.

    
risposta data 30.05.2013 - 12:23
fonte
2

Therefore I would like to expose our business data via a RESTful API so that it's easy to consume by...

.. hacker, TFTFY. :)

Non proverei davvero a rendere il DB "facilmente consumabile" dando direttamente accesso alle sue tabelle. Vorrei tuttavia proteggere il DB con stored procedure che sono l'unica interfaccia per il DB (che è lo stesso tipo di principio che si sta sostenendo solo l'API è uno sproc uno piuttosto che uno REST) e quindi fornirei un insieme di servizi per fornire uno strato intermedio tra i client e il DB. Questi servizi possono fornire un'API REST.

Non solo migliorate la sicurezza (se i client non hanno accesso al DB, non possono abusarne) ma potete fornire un set più logico di API ai client senza che debbano sapere cosa contiene il DB .

Per quanto riguarda javascript ovunque, Node.JS è la cosa che desideri. Per ottenere un bellissimo tutorial, consulta il Node Beginner Book . Quindi prendi una libreria js per semplificare il lavoro con il sistema come express o restify .

    
risposta data 30.05.2013 - 14:00
fonte
2

È possibile utilizzare esclusivamente JavaScript per fare ciò che hai descritto. Non sarei d'accordo sul fatto che Node.js sia l'unico modo per farlo comunque. Non che Node.js non sia uno strumento grande / potente, ma JavaScript è solo un'implementazione del collegamento

Ho scritto applicazioni lato server in EMCAScript per anni prima che Node.js esistesse con JScript di Microsoft su pagine ASP classiche. Il codice JavaScript utilizzato nel codice client su Internet è quasi completamente compatibile con il JScript gestito da ASP classico e JScript.NET! Io porto il codice tra i miei script client e server su base regolare aggiungendo e rimuovendo qualsiasi chiamata al DOM (che non esiste sul server). Ho aggiunto JSON.stringify () / JSON.parse () a tutte le mie pagine ASP con una semplice chiamata a Crockfords secureParse.js in modo che il server e il client abbiano un semplice meccanismo per il trasferimento dei dati. Ecco come sono compatibili i due linguaggi di scripting. A parte JavaScript che ha accesso al DOM e JScript che ha accesso ai meccanismi COM e server (controllo cache, buffer, flush, Reponse.Write, ecc.) Sono praticamente idenicali ...

La scrittura in JScript (ASP) o JScript.NET consente inoltre di accedere a tutte le risorse COM disponibili sul server tramite i controlli ActiveX, che utilizzo per chiamate IO, crittografia, compressione, tutti i protocolli di trasferimento dati (ad es. ftp , http, smtp, ecc.), stampa diretta, connessione DB, e sono stato anche conosciuto per prendere in prestito correttore ortografico da MS Word con

Word = new ActiveXObject("Word.Application");

e senza dover utilizzare qualcosa oltre a JScript I può accedere all'intera API pubblica di qualsiasi controllo di Windows:)

E per un'esecuzione più veloce, scrivo alcuni moduli che sono completamente incapsulati nello stesso JScript, quindi lo eseguo tramite un compilatore .NET (chiamato JSC.exe) e ora lo stesso codice non è più "interpretato", ma compilato !

Diversamente da JavaScript (e quindi Node.js), ciò richiederebbe un server Windows per eseguire il codice del server. Ma non hai detto che non poteva essere un requisito ...

Anche a me piace essere in grado di restare fedele a ciò che conosco e non diventare un "Jack of all trades", ma JavaScript è davvero l'unica lingua che conosco ... Quindi aiuta che sia così flessibile.

    
risposta data 11.07.2013 - 23:26
fonte
1

Esistono strumenti come Wakanda che consentono di creare un'intera applicazione client / server in Javascript. L'integrazione di PostgreSQL è possibile, ma molti di questi strumenti di nuova generazione sono soluzioni NoSQL.

    
risposta data 30.05.2013 - 02:34
fonte

Leggi altre domande sui tag