vox-core-clr

0.0.9 • Public • Published

vox-core-clr

NOTICIA: vox-core-clr es parte de vox-core, y por tanto se ejecuta sobre vox-core. Si usted ya tiene instalado vox-core no descargue este módulo, puesto que vox-core ya tiene incluido este módulo. Si desea usar este módulo sin instalar vox-core por favor instale voxnode-clr

VoxSoftware está creando módulos independientes de cada parte de vox-core utilizando el prefijo voxnode- en lugar de usar vox-core-. Por lo tanto si desea usar alguno de los submódulos presentes en vox-core, de manera independiente revise utilizando este prefijo.

vox-core-clr ==> voxnode-clr

vox-core-clr permite usar Tipos y Ensamblados .NET desde nodejs. vox-core-clr tiene las siguientes ventajas sobre edge.js

  • No tiene que compilarse. vox-core-clr crea un canal de comunicación entre .NET y nodejs
  • Permite usar clases ya predeterminadas de .NET sin tener que compilar código fuente C# u otro lenguaje
  • Los métodos devuelven tareas asíncronas (Similares a Promises, compatibles con async/await: Regenerator de facebook y vox-core-es6 de vox-core)

vox-core-clr tiene ciertas características más:

  • Permite compilar código fuente C#
  • Permite cargar ensamblados por nombre y por archivo
  • Permite utilizar cualquiera de las sobrecargas de un método
  • Permite obtener y ajustar valores de propiedades con índices

Dependencias

Debe instalar .NET Framework 4.0 en Windows (en versiones recientes viene preinstalado), o Mono en sistemas Unix

Cambios

Documentación

Incluye las siguientes clases:

Ejemplo

Este ejemplo usa sintaxis ES6 y async/await. Se puede usar un transpilador como babel, o ejecutar directamente con vox-core creando un archivo con extensión .es6

var clr= new core.VW.Clr.Manager()
var test= async function(){
    // Esta parte se demora un poco mientras se carga por completo el canal de comunicación
    await clr.loadAssembly("System.Xml")
 
    // La primera vez se demora un poco más porque carga los miembros de los tipos
    var d= new Date()
    await testxml()
    console.info("Time: ", new Date()-d)
    
    var d= new Date()
    await testxml()
    console.info("Time: ", new Date()-d)
 
    var d= new Date()
    await testxmlScope()
    console.info("Time: ", new Date()-d)
    
    var d= new Date()
    await testxmlScope()
    console.info("Time: ", new Date()-d)
 
    await clr.close()
    process.exit(0)
}
 
 
 
 
var testxml= async function(){
    try{
        
 
        var Xml= {}
        // Cargar los tipos ...
        Xml.Document= clr.get("System.Xml.XmlDocument")
        await Xml.Document.loadMembers()
        var doc= await Xml.Document.create()
        var root= await doc.CreateXmlDeclaration("1.0","utf8","yes")
        await doc.AppendChild(root)
        var elemento1= await doc.CreateElement("element1")
        var elemento2= await doc.CreateElement("element2")
        await elemento1.AppendChild(elemento2)
        await elemento2.setInnerText("Hola mundo!")
        await doc.AppendChild(elemento1)
        console.info(await doc.getOuterXml())
 
        var tasks=[root.dispose(), elemento1.dispose(),
            elemento2.dispose(), doc.dispose()]
 
        await core.VW.Task.waitMany(tasks)
    }
    catch(er){
        console.error(er)
    }
}
 
 
var testxmlScope= async function(){
    try{
        
 
        var Xml= {}
        // Cargar los tipos ...
        var scope= clr.beginScope()
        Xml.Document= clr.get("System.Xml.XmlDocument")
        await Xml.Document.loadMembers()
 
        var doc= await scope(Xml.Document).create()
        var root= await scope(doc).CreateXmlDeclaration("1.0","utf8","yes")
        await doc.AppendChild(root)
 
        var elemento1= await doc.CreateElement("element1")
        var elemento2= await doc.CreateElement("element2")
        await elemento1.AppendChild(elemento2)
        await elemento2.setInnerText("Hola mundo!")
        await doc.AppendChild(elemento1)
 
        console.info(await doc.getOuterXml())
        await scope.end()
    }
    catch(er){
        console.error(er)
    }
}
 
test()
 

Readme

Keywords

none

Package Sidebar

Install

npm i vox-core-clr

Weekly Downloads

10

Version

0.0.9

License

MIT

Last publish

Collaborators

  • voxsoftware