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(){
await clr.loadAssembly("System.Xml")
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= {}
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= {}
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()