Imagen

DESCARGA SOFTWARE PARA FACTURA ELECTRONICA DE AQUI.
Facturacion, Validacion, Addendas, Librerias de programacion, etc.


ECODEX TIENE ESTOS NUEVOS DATOS DE CONTACTO :
Comercializacion y Ventas - Evelia Vicke evicke@ecodex.com.mx 33-16-03-03-48
Soporte - Humberto Guerrero soporte@ecodex.com.mx 33-34-90-46-03

AYUDA: XmlSerializer bastante lento. VB/C#

Y para empezar Que es una Factura Electronica? Como empiezo? Necesito Autorizacion? Que medios hay para Facturar Electronicamente? estos y todos los temas de iniciacion deberan estar aqui
RickWayne
Mensajes: 1
Registrado: Vie Sep 08, 2017 5:30 pm

Re: AYUDA: XmlSerializer bastante lento. VB/C#

Mensajepor RickWayne » Vie Sep 08, 2017 5:31 pm

Prueba SGEN, me redujo el constructor del XMLSerializer de 3 minutos a milisegundos.

La escritura a archivo si no la reduce, pero esta toma 1 minuto

saludos

Avatar de Usuario
acanas
Mensajes: 477
Registrado: Mar Ene 11, 2011 3:18 pm

Re: AYUDA: XmlSerializer bastante lento. VB/C#

Mensajepor acanas » Vie Sep 08, 2017 10:48 pm

Ja! es cierto ya no me acordaba del viejo sgen (en mi viejo proyecto del cfdi 3.2 lo usaba por lo mismo pero ya lo había olvidado por completo).

En los build events de tu proyecto debes incluir una línea como esta:
"C:\SGEN4\sgen.exe"/force /assembly:"$(TargetPath)"
y automáticamente creara una versión serializada del ensamblado reduciendo notablemente la inicialización del ensamblado en el proceso de serialización/deserialización del ensamblado. De cualquier forma es mejor quitar todo lo referente a codigo postal y claveprodsrv del ensamblado puesto que es innecesario, es mejor controlarlo desde la base de datos y la velocidad mejora notablemente, ahora con sgen pues mejor.
Zyphersoft Development

Avatar de Usuario
acanas
Mensajes: 477
Registrado: Mar Ene 11, 2011 3:18 pm

Re: AYUDA: XmlSerializer bastante lento. VB/C#

Mensajepor acanas » Vie Sep 08, 2017 11:00 pm

Hola Acanas! Buenos días crees que me puedas ayudar con una copia de tus archivos xslt y xsd? Al serializar la cadena original me queda incompleta y no me permite generarla de manera correcta para posteriormente sellarla, :( De antemano muchas gracias y gracias a todos los que publican su valiosa aportación en este foro.
Saludos


En realidad deberías usar los oficiales pero si ya se te hizo mucho alboroto, pero sospecho que tu problema de la cadena original es por esto:

en el archivo cadenaoriginal_tfd_1_1.xslt note que no se estaba buscando desde Complemento/TimbreFiscalDigital entonces se le agregue esta modificación y ya me funciona correctamente la cadena original del TFD:

Código: Seleccionar todo

<!-- Aquí iniciamos el procesamiento de la cadena original con su | inicial y el terminador || -->
<xsl:template match="/Complemento/TimbreFiscalDigital">|<xsl:apply-templates select="/tfd:TimbreFiscalDigital"/>||</xsl:template>
Zyphersoft Development

ErnestoHDZ
Mensajes: 12
Registrado: Jue May 08, 2014 2:15 pm

Re: AYUDA: XmlSerializer bastante lento. VB/C#

Mensajepor ErnestoHDZ » Lun Sep 11, 2017 3:24 pm

acanas escribió:
Hola Acanas! Buenos días crees que me puedas ayudar con una copia de tus archivos xslt y xsd? Al serializar la cadena original me queda incompleta y no me permite generarla de manera correcta para posteriormente sellarla, :( De antemano muchas gracias y gracias a todos los que publican su valiosa aportación en este foro.
Saludos


En realidad deberías usar los oficiales pero si ya se te hizo mucho alboroto, pero sospecho que tu problema de la cadena original es por esto:

en el archivo cadenaoriginal_tfd_1_1.xslt note que no se estaba buscando desde Complemento/TimbreFiscalDigital entonces se le agregue esta modificación y ya me funciona correctamente la cadena original del TFD:

Código: Seleccionar todo

<!-- Aquí iniciamos el procesamiento de la cadena original con su | inicial y el terminador || -->
<xsl:template match="/Complemento/TimbreFiscalDigital">|<xsl:apply-templates select="/tfd:TimbreFiscalDigital"/>||</xsl:template>

Muchas gracias Acanas, me ha sido muy útil la información un saludo

JONYLBCD
Mensajes: 2
Registrado: Vie Sep 22, 2017 2:28 am

Re: AYUDA: XmlSerializer bastante lento. VB/C#

Mensajepor JONYLBCD » Dom Sep 24, 2017 11:02 pm

Hola Alguien me ayuda con la serialización lenta tengo el mismo problema
acanas segui la recomendacion de dividir los catalogos aparte pero no logro hacer que no tarde
este es mi codigo

Código: Seleccionar todo

string fullPatch = Path.GetTempPath() + "tmp\\xml\\";
            Directory.CreateDirectory(fullPatch);
            XmlTextWriter xmlTextWriter = new XmlTextWriter(fullPatch + "xmlSello.xml", Encoding.UTF8)
            {
                Formatting = Formatting.Indented
            };
            XmlSerializer xs = new XmlSerializer(typeof(Comprobante));
            xs.Serialize(xmlTextWriter, comprobante);
            xmlTextWriter.Close();

            StreamReader reader = new StreamReader(fullPatch + "xmlSello.xml");
            XPathDocument myXPathDoc = new XPathDocument(reader);

Avatar de Usuario
acanas
Mensajes: 477
Registrado: Mar Ene 11, 2011 3:18 pm

Re: AYUDA: XmlSerializer bastante lento. VB/C#

Mensajepor acanas » Lun Sep 25, 2017 10:04 am

JONYLBCD escribió:Hola Alguien me ayuda con la serialización lenta tengo el mismo problema
acanas segui la recomendacion de dividir los catalogos aparte pero no logro hacer que no tarde
este es mi codigo

Código: Seleccionar todo

string fullPatch = Path.GetTempPath() + "tmp\\xml\\";
            Directory.CreateDirectory(fullPatch);
            XmlTextWriter xmlTextWriter = new XmlTextWriter(fullPatch + "xmlSello.xml", Encoding.UTF8)
            {
                Formatting = Formatting.Indented
            };
            XmlSerializer xs = new XmlSerializer(typeof(Comprobante));
            xs.Serialize(xmlTextWriter, comprobante);
            xmlTextWriter.Close();

            StreamReader reader = new StreamReader(fullPatch + "xmlSello.xml");
            XPathDocument myXPathDoc = new XPathDocument(reader);


De hecho en esta publicación ya se había respondido como mejorar la velocidad, la clave es activar en tu proyecto de visual studio la PRE-SERIALIZACION de tu Ensamblado de tal manera que ya no se hace a nivel de tiempo de ejecución sino que se carga desde un precompilado.

Necesitas usar la utilería de visual studio SGEN que sirve para generar el ensamblado, esto lo debes hacer en la sección de eventos POST-BUILD de tu proyecto, algo así como esto:

"C:\SGEN4\sgen.exe"/force /assembly:"$(TargetPath)"
Este evento va generar un archivo paralelo a tu ensamblado original con el mismo nombre pero finalizando en .XmlSerializers.dll el cual debes distribuir junto con tu aplicación.
Adjuntos
POST_BUILD_VS.png
Build Events- Post Build
POST_BUILD_VS.png (12.16 KiB) Visto 8547 veces
Zyphersoft Development

JONYLBCD
Mensajes: 2
Registrado: Vie Sep 22, 2017 2:28 am

Re: AYUDA: XmlSerializer bastante lento. VB/C#

Mensajepor JONYLBCD » Mar Sep 26, 2017 10:38 am

lo que hice es modificar mi clase serializada y tanto el codigo postal y la claveProSer en string y controlarlo con la aplicacion pero tengo otro problema que la serializacion no me esta creando xml como debe de ser.

no en antepone en los nodos el elemento "<cfdi:" y el pac me lo esta rechazando que sera que me hace falta.


Código: Seleccionar todo

<?xml version="1.0" encoding="utf-8"?>
<Comprobante xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Version="3.3" Serie="J" Folio="0001" Fecha="2017-09-26T11:17:04" Sello="En0ihu29TPK+ZL2fcgdENNycZfhQkGdaLORzFxn/ihz7tXPZa238575mfmNh9IUYcJikUBAsyiEqC/J9FlJzehIzQSJgP3b2jwP+dG6Djzn4JWVr9D9p7BS9EfjKRZ4ENq/SaeL6QbSGEYY1Jpr+c3aUP05A5SyXIs2LyEW8L28=" NoCertificado="00001000000302786722" Certificado="MIIEWzCCA0OgAwIBAgIUMDAwMDEwMDAwMDAzMDI3ODY3MjIwDQYJKoZIhvcNAQEFBQAwggGKMTgwNgYDVQQDDC9BLkMuIGRlbCBTZXJ2aWNpbyBkZSBBZG1pbmlzdHJhY2nDs24gVHJpYnV0YXJpYTEvMC0GA1UECgwmU2VydmljaW8gZGUgQWRtaW5pc3RyYWNpw7NuIFRyaWJ1dGFyaWExODA2BgNVBAsML0FkbWluaXN0cmFjacOzbiBkZSBTZWd1cmlkYWQgZGUgbGEgSW5mb3JtYWNpw7NuMR8wHQYJKoZIhvcNAQkBFhBhY29kc0BzYXQuZ29iLm14MSYwJAYDVQQJDB1Bdi4gSGlkYWxnbyA3NywgQ29sLiBHdWVycmVybzEOMAwGA1UEEQwFMDYzMDAxCzAJBgNVBAYTAk1YMRkwFwYDVQQIDBBEaXN0cml0byBGZWRlcmFsMRQwEgYDVQQHDAtDdWF1aHTDqW1vYzEVMBMGA1UELRMMU0FUOTcwNzAxTk4zMTUwMwYJKoZIhvcNAQkCDCZSZXNwb25zYWJsZTogQ2xhdWRpYSBDb3ZhcnJ1YmlhcyBPY2hvYTAeFw0xNDAyMDQyMjQ1MjdaFw0xODAyMDQyMjQ1MjdaMIGnMR8wHQYDVQQDExZMVUlTIEZFTElQRSBCQUxBTiBDSEFOMR8wHQYDVQQpExZMVUlTIEZFTElQRSBCQUxBTiBDSEFOMR8wHQYDVQQKExZMVUlTIEZFTElQRSBCQUxBTiBDSEFOMRYwFAYDVQQtEw1CQUNMODMwNTI5UDYyMRswGQYDVQQFExJCQUNMODMwNTI5SFlOTEhTMDkxDTALBgNVBAsTBE1BSU4wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAJeEIwQmndYVTL+wSvhhc7MQ2/0/P7erAfOS7TMg3UuCv6Ac2VrRFgsInz25A55aLEplYMtVcY33Rcz51M0CelUkYxiGfJajWmu2EHtV6AxUcwADsczuXmD1GdlWZN6TugByeclEB+CIp9yP3rpWvHTcDdWUGfB12/oP6OZ6cVI7AgMBAAGjHTAbMAwGA1UdEwEB/wQCMAAwCwYDVR0PBAQDAgbAMA0GCSqGSIb3DQEBBQUAA4IBAQDP5q/ytQZcEE5BhNY/CVOEtPblMKbXTmbF+v25/jw7w0ERh9mXBkwwQefhjK0Y2dFAe93DN4f5WAJKRZDqtGiEYgOSOfO7bdkh/b1MSMc7p8XgIDEj3JWBsJGbf28bRYMqpx5L61gj77TpoxBILs6FoDET1wvMtFOxrbp/T1c7OwgK4yQbhzXdej3Ymrb2bkDy9egc/1gfGIW1ILRoKNCeyTi/cejbzG7OrpVW87Fn/o51T75dc/8DyfAzpMbCgL7H+vqF84p5g2UbGDbWh1Rt5UHsOWiYh/BxM02Q9sZ18nsnZSaXyibgHVofF1jeZ8CHtsxis3l0y9rlgD4k7vHG" SubTotal="84" Moneda="MXN" Total="100" TipoDeComprobante="I" LugarExpedicion="97970" xmlns="http://www.sat.gob.mx/cfd/3">
  <Emisor Rfc="BACL830529P62" Nombre="Luis Felipe Balam Chan" RegimenFiscal="621" />
  <Receptor Rfc="CAPJ860129GV9" Nombre="Jonadab Chan Pat" UsoCFDI="G01" />
  <Conceptos>
    <Concepto ClaveProdServ="30191505" Cantidad="1" ClaveUnidad="MTR" Unidad="METROS" Descripcion="Un Metro de LONA" ValorUnitario="84" Importe="84">
      <Impuestos>
        <Traslados>
          <Traslado Base="0" Impuesto="002" TipoFactor="Tasa" Importe="16.00" />
        </Traslados>
      </Impuestos>
    </Concepto>
  </Conceptos>
  <Impuestos>
    <Traslados>
      <Traslado Impuesto="002" TipoFactor="Tasa" TasaOCuota="0.1600" Importe="16.00" />
    </Traslados>
  </Impuestos>
</Comprobante>

chipx0r
Mensajes: 4
Registrado: Mar Ago 02, 2016 11:04 am

Re: AYUDA: XmlSerializer bastante lento. VB/C#

Mensajepor chipx0r » Sab Oct 28, 2017 2:17 pm

Use la recomendacion de SGEN y hay una mala noticia. Solo funciona para 32-Bits, para 64-bits aunque tengas la clase de XmlSerializers y esta sea cargada; el Just-In-Time(JIT) lo recompila tardando hasta 10 minutos. Explore la opcion encadenada de (DLL-> SGEN.exe -> NGEN.exe) para inyectarla, pero despues de 2 hrs no se logró y no devolvío codigo de error claro. Hasta no encontrar una mejor solucion, lo mejor es quedarse en 32 bits.

Microsoft tiene conocimiento de este problema.
https://stackoverflow.com/questions/4137335/xmlserializer-startup-huge-performance-loss-on-64bit-systems

pzhero
Mensajes: 1
Registrado: Mié Nov 22, 2017 1:56 pm

Re: AYUDA: XmlSerializer bastante lento. VB/C#

Mensajepor pzhero » Mié Nov 22, 2017 2:02 pm

Que tal ando tambiénmareado con la tardanza de la serialización, mencionas que de preferencia poner lo todo local.

DADO escribió:Si, los que empiecen con xmlns dejalos tal cual

Sabes, creo que si estoy mal, deberia ser asi :

Código: Seleccionar todo

<xs:import namespace="http://www.sat.gob.mx/sitio_internet/cfd/catalogos" schemaLocation="D:\catCFDI.xsd"/>


Es decir, hay que respetar los namespace, pero solo cambiar los schemalocation

(Una disculpa por no darte 100% la respuesta a la primera, como te decia yo no programo en VB/C# pero trato de ayudar en lo que creo que puede ser la solucion)


Mi pregunta es ... y disculpa quiza es de kinder...

¿Como inicio para poner todo local?
¿En donde coloco esos valores?
¿Es antes de generar la clase? con XSD.EXE

podrías por favor dar los pasos.. te lo agradeceré mucho.

Gracias de antemano

joelhdez89
Mensajes: 7
Registrado: Jue Mar 01, 2012 11:33 am

Re: AYUDA: XmlSerializer bastante lento. VB/C#

Mensajepor joelhdez89 » Mié Dic 27, 2017 11:18 am

pzhero escribió:Que tal ando tambiénmareado con la tardanza de la serialización, mencionas que de preferencia poner lo todo local.

DADO escribió:Si, los que empiecen con xmlns dejalos tal cual

Sabes, creo que si estoy mal, deberia ser asi :

Código: Seleccionar todo

<xs:import namespace="http://www.sat.gob.mx/sitio_internet/cfd/catalogos" schemaLocation="D:\catCFDI.xsd"/>


Es decir, hay que respetar los namespace, pero solo cambiar los schemalocation

(Una disculpa por no darte 100% la respuesta a la primera, como te decia yo no programo en VB/C# pero trato de ayudar en lo que creo que puede ser la solucion)


Mi pregunta es ... y disculpa quiza es de kinder...

¿Como inicio para poner todo local?
¿En donde coloco esos valores?
¿Es antes de generar la clase? con XSD.EXE

podrías por favor dar los pasos.. te lo agradeceré mucho.

Gracias de antemano


Para cambiar el schemaLocation tienes que tener el archivo XSD, lo puedes descargar de aquí: http://www.sat.gob.mx/sitio_internet/cfd/3/cfdv33.xsd
(Básicamente copia todo y pegalo en un archivo de texto y renombralo a "cfdv33.xsd")

Y éste paso creo es previo a la compilación del XSD.


Volver a “Iniciando con la Factura Electronica”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 7 invitados