0.0.9 • Published 10 years ago

vox-core-clr v0.0.9

Weekly downloads
2
License
MIT
Repository
github
Last release
10 years ago

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()
0.0.9

10 years ago

0.0.8

10 years ago

0.0.7

10 years ago

0.0.6

10 years ago

0.0.5

10 years ago

0.0.4

10 years ago

0.0.3

10 years ago

0.0.2

10 years ago

0.0.1

10 years ago