8

Dal momento che MS appears to have killed Managed JavaScript in the latest DLR per lato server (ASP.NET Futures) e lato client (Silverlight), chiunque ha utilizzato correttamente API non obsolete per consentire lo scripting dei propri oggetti dell'applicazione con JScript.NET e/o può spiegare come fare così? Una soluzione Mono/JScript potrebbe anche essere accettabile, se è stabile e soddisfa i requriements di seguito.È possibile utilizzare JScript.NET per creare script su un'applicazione .NET?

Siamo interessati all'aggiornamento di un host di script che utilizza il motore Microsoft JScript e le API di ActiveScript per qualcosa con più prestazioni e maggiore estensibilità. Abbiamo oltre 16.000 script sul lato server che pesano oltre 42 MB di origine, quindi la riscrittura in un altro linguaggio di scripting è fuori questione.

nostri requisiti specifici sono:

  • Noteably prestazioni migliori rispetto della Microsoft JScript (ActiveScript) motore
    • migliore performance di runtime e/o
    • Riserva di script pre-analizzati o compilati (don 't reparse su ogni corsa)
    • Consumo di memoria inferiore o uguale
  • completa ECMA-262 ECMAScript compatibilità
    • un po porting può essere tollerato
  • Iniezione di oggetti personalizzati nel namespace sceneggiatura
    • .NET oggetti (non è un requisito duro)
    • Oggetti COM o oggetti COM avvolti in.NET
  • la creazione di istanze di oggetti COM da Script
    • à la "new ActiveXObject (ProgID)"
    • bassa priorità data la precedente
  • Includere file
    • pre- caricamento di "script di supporto" in un contesto di esecuzione dello script
    • Un "include" funzione o istruzione (facili da creare, per quanto precede)
  • supporto per il codice a livello globale-scope
    • Esecuzione di codice della portata globale
    • Riserva di valori inizializzato a livello globale portata
    • Estrazione di valori della portata globale
    • iniezione e sostituzione di valori alla portata globale
  • Vocazione di funzioni di script definite
    • con i parametri
    • e con accesso al campo di applicazione globale precedentemente inizializzato
  • debug a livello sorgente
  • Support fonte commerciale o Apri
  • Non- API obsolete
+1

Microsoft supporta ancora Managed JScript in Silverlight? – Nosredna

+1

No, anche da Silverlight. Vedi questa risposta: http://stackoverflow.com/questions/775339/where-can-you-download-managed-jscript-for-the-dlr/886173#886173 –

+1

Questo è piuttosto scioccante. – Nosredna

risposta

2

Prima o poi, immagino che qualcuno scrivi un DLR Javascript. So che non è molto conveniente per te in questo momento, ma forse potresti iniziare il progetto. Sospetto che avrebbe un'analisi costi/benefici migliore per l'utilizzo di JScript.NET.

1

Se spostarsi da .NET e Microsoft è ok per te, allora dovresti provare Mozilla Rhino. È un'implementazione open-source di JavaScript scritta interamente in Java. Un sacco di moderne librerie js lato server ha come target questa piattaforma.

+0

@thatismatt - Hai usato Rhino con un bridge da Java a COM? Puoi commentare le prestazioni, la facilità di integrazione con il codice C++, ecc.? –

+0

Ho paura di no, mi spiace non essere di grande aiuto, fammi sapere come ci si arriva! – thatismatt

0

L'uso di Comopop significa che si è limitati a una soluzione MS Java e Opensource vogliono il meno possibile a che fare con esso.

Non vedo alcuna soluzione che supporti tutte le tue esigenze o ti abbandoni tutto il materiale COM/.NET e vai in Java (Rhino)/Linux/Open source o ti interroghi sull'uso di Javascript come linguaggio server anche in Linux mondo usiamo PHP/Python/Ruby di più sul server se non possiamo eseguire Java. Non vedrai grandi guadagni in termini di prestazioni con lo script Java poiché la lingua è la barriera principale.

Non vorrei contare su persone che scrivono un nuovo DLR come server Lo script Java sta morendo rapidamente.

Considerando che si desidera ottenere prestazioni, per quanto riguarda F #, Microsoft manterrà il motore Jscript supportato per almeno 5 anni, dando il tempo di creare nuovi elementi in F # mentre si esegue lentamente la migrazione del codice.

+0

Il problema con la piattaforma multipiattaforma è che è necessario accedere a oltre 80 chiamate RPC Win32 più una mezza dozzina di oggetti DCOM, come WSUS e WMI. Adoro F # e lo uso per la prototipazione, le utilità interne e la gestione del catalogo (a casa per il negozio on-line di mia moglie), ma come affermato abbiamo oltre 16.000 script scritti in JS sul lato server e non possiamo permetterci il costo di conversione in un'altra lingua. Detto questo, abbiamo esaminato http: //jcifs.samba.org, che potrebbe rivelarsi molto interessante in combinazione con Rhino. –

+0

È un caso di una roccia e di un hardplace .. La prima domanda è sapere lato server Javascript sta morendo/morto In cosa scrivi nuovo codice? Almeno se si esegue un nuovo codice in f # si ottiene una migrazione regolare che può durare 5-10 anni. Potresti scoprire che il 50% del tuo codice è F # in 5 anni e sarà veloce e funziona bene su 16 core che hai allora. L'interoperabilità Java (cioè Rhino) con win32/Dcom/WMI sarebbe problematica, ma potrebbe darti una soluzione se risolvi questi problemi. – ben

1

Ho utilizzato CSScript.net perché consente di eseguire C# come piattaforma di scripting. Dal sito:

CS-Script combina la potenza e la ricchezza di C# e FCL con la flessibilità di un sistema di scripting. CS-Script può essere utile per il sistema e gli amministratori di rete , gli sviluppatori e i tester . Per chiunque abbia bisogno di un'automazione per risolvere la varietà delle attività di programmazione .

CS Script soddisfa tutte le condizioni stabilite. L'ho usato in produzione come sostituto di Boo, ha funzionato molto bene. Puoi vederlo in azione here.

3

Ho risposto a una domanda simile here. Dai uno sguardo a IronJS, un'implementazione di JavaScript in F # in esecuzione sul DLR.

0

Il Jurrassic -Engine è vivo e vegeto.

Dal loro sito CodePlex:

  • Supporta tutte le funzionalità ECMAScript 3 e ECMAScript 5, tra cui la modalità rigorosa ES5
  • ben collaudato - passa oltre cinquemila test di unità (con oltre trentamila afferma)
  • API semplice ma potente
  • Compila JavaScript nel bytecode .NET (CIL); Non un interprete
  • Implementato come un unico assembly .NET (nessun codice nativo)
  • il supporto di base per il debug integrato all'interno di Visual Studio
  • utilizza la luce-peso generazione di codice, codice in modo generato è completamente garbage collection
  • Testato su .NET 3.5, .NET 4 e Silverlight