Imagen

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


CARTA PORTE V3.1

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#

Mensaje por RickWayne »

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#

Mensaje por acanas »

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#

Mensaje por acanas »

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#

Mensaje por ErnestoHDZ »

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#

Mensaje por JONYLBCD »

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#

Mensaje por acanas »

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
Build Events- Post Build
Build Events- Post Build
POST_BUILD_VS.png (12.16 KiB) Visto 10698 veces
Zyphersoft Development
JONYLBCD
Mensajes: 2
Registrado: Vie Sep 22, 2017 2:28 am

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

Mensaje por JONYLBCD »

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#

Mensaje por chipx0r »

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/413 ... it-systems
pzhero
Mensajes: 1
Registrado: Mié Nov 22, 2017 1:56 pm

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

Mensaje por pzhero »

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#

Mensaje por joelhdez89 »

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.
Cerrado