Página 2 de 3
Re: AYUDA: XmlSerializer bastante lento. VB/C#
Publicado: Mar Abr 25, 2017 11:13 pm
por gilberto
Hola Martin.
No soy experto en programación VB ni en VB.net pero tengo mi parte del código que si funsióna y utilizo visual estudio 2010 y 2012.
Los namespace los tengo referenciados al SAT no son locales y tarda mili segundos en crear el XML.
Y es importante recalcar que el código que utilizo también lo encontré aquí.
Dime si le echamos montón y hacemos fusionar tu código.
Un saludos a los miembros de este foro.
me quito el sombrero.
Re: AYUDA: XmlSerializer bastante lento. VB/C#
Publicado: Mié Abr 26, 2017 9:28 am
por s3cr3to
Nota adicional. Si tienes falla en los DNS de tu Internet, esto afecta la velocidad de resolución de los url y para que te cuento.
Cuando corras tu aplicación usa este comando (como administrador) para que veas a donde se conecta tu programa, ejemplo:
Código: Seleccionar todo
>netstat -bf
Conexiones activas
Proto Dirección local Dirección remota Estado
[javaw.exe]
TCP 192.168.1.88:48355 ssss.aaaa.lan:ms-sql-s ESTABLISHED
[javaw.exe]
TCP 192.168.1.88:48370 a123-12-0-234.deploy.static.akamaitechblahblah.com:http ESTABLISHED
Aquí se observa a donde se está conectando java. Cuando veas que ya no se conecta al sat resolviste tu problema.
Re: AYUDA: XmlSerializer bastante lento. VB/C#
Publicado: Mié Abr 26, 2017 9:39 am
por s3cr3to
Tip adicional, solo si realmente estas urgido y aún no resuelves lo anterior.
Con este truco con el logré acelerar el proceso (no en milisegundos pero si en pocos segundos), más o menos recuerdo que aproveche que tenemos una intranet (IIS) ahí recree un minisitio con las rutas de los urls + archivos usados por la definición del cfdi y añadí en el archivo "hosts" una referencia que en windows 8.1 64bits seria:
Código: Seleccionar todo
este archvio está en:> dir c:\Windows\System32\drivers\etc\hosts
10/03/2017 12:22 p. m. 1,058 hosts
su contenido de puede ver con:> type c:\Windows\System32\drivers\etc\hosts
# ...
127.0.0.1 www.sat.gob.mx
El archivo "hosts" está protegido por windows y solo como administrador puedes editarlo.
Si bien, esto acelero la creación del cfdi en su momento genera situaciones adicionales:
1) Debes estar al pendiente y actualizar periódicamente los archivos del fake-sitio
2) Con este truco la PC dejará de acceder al verdadero sitio del sat, en mi caso, como la PC está exclusivamente dedicada a generar cfds me sirvió sin problema hasta que se resolvió la situación.
Y con esto el programa generó en segundos y no en minutos como nos ocurrió en aquella ocasión.
* Y también se puede instalar el minisitio usando un servidor web local con nginx o apache.
Son al menos unas 2 a 3 horas para implementar este solución temporal que al final es muy útil para muchos casos semejantes: cuando hay sitios que desaparecen por completo y tienes alguna aplicación necesita descargar algún viejo certificado o librería (me estas leyendo mugre idse.imss?)
***
Con esto voy a poder generar de las unidades en Delphi, las cuales Delphi no puede generar debido al cochino error que satan se niega a corregir en el xsd de Pagos10/catPagos:
Código: Seleccionar todo
http://www.sat.gob.mx/sitio_internet/cfd/Pagos/Pagos10.xsd
http://www.sat.gob.mx/sitio_internet/cfd/catalogos/Pagos/catPagos.xsd
Entonces hago un fakesitio, le digo al host donde está y Delphi bien contento podrá hacer uso de un catPagos.xsd "corregido a la Mexicana". ¿o como le hiciste tú DADO?
Re: AYUDA: XmlSerializer bastante lento. VB/C#
Publicado: Jue Abr 27, 2017 2:40 pm
por MartinSosa
Bien, les comento, deje locales los archivos catCFDI.xsd y tdCFDI.xsd
PERO:
En el archivo cfdv33.cs (C#) borre todos los elementos de enumeracion, solo deje uno por cada enumeración para usarlo en una clase de prueba y que creen? Lo hace bastante rápido! ahora la duda seria, como incluir tooodos esos elementos de enumeración en mi programa real?? o que alternativas tengo?
Re: AYUDA: XmlSerializer bastante lento. VB/C#
Publicado: Jue Abr 27, 2017 3:40 pm
por maildejuan
buenas tardes,
eso es probablemente por que el archivo catCFDI.xsd pesa mas de 6 Mb ...
en mi caso para emisión de facturas pienso ponerme de acuerdo con las áreas contable-fiscal de la empresa para manejar catálogos "light" con las opciones que usemos en la empresa ...
para la validación de facturas recibidas, estaba pensando en hacer unas modificaciones al xsd para hacer las adecuaciones correspondientes para que no se validen los tipos de datos con base en el archivo catCFDI.xsd ... en su lugar, manejar una tabla en SQL Server y hacer mmm no se, un select count(*) from TABLA where ATRIBUTO = "valor del campo en el xml" ... algo así ... pero es solo una idea, necesito hacer pruebas de performance ...
saludos
Re: AYUDA: XmlSerializer bastante lento. VB/C#
Publicado: Vie Jun 02, 2017 12:44 pm
por M-ARISTA
Que tal buen día, estoy teniendo el mismo problema de la lentitud
y tu encontraste la solución de ese problema??

Re: AYUDA: XmlSerializer bastante lento. VB/C#
Publicado: Vie Jun 02, 2017 4:35 pm
por MartinSosa
M-ARISTA escribió:Que tal buen día, estoy teniendo el mismo problema de la lentitud
y tu encontraste la solución de ese problema??

El problema es la cantidad inmensa de elementos de ennumeracion de la clase que es generada a partir de los esquemas .xsd en mi caso la clase "cfdv33.cs"
Re: AYUDA: XmlSerializer bastante lento. VB/C#
Publicado: Vie Jun 09, 2017 6:12 pm
por jcarpio7
Buen día.
Alguno de ustedes ya logro hacer que la serialización sea mas rápida?
Re: AYUDA: XmlSerializer bastante lento. VB/C#
Publicado: Mié Ago 09, 2017 4:10 pm
por acanas
Si, de hecho el problema de que el serializer sea lento es porque tienen todo el catalogo de códigos postales y de claveprodsrv en el mismo ensamblado que representa la clase de Comprobante y tarda en procesar tantos elemento. En mi caso me pasaba exactamente lo mismo que mencionan en esta publicación y lo que hice fue omitir esos 2 catálogos y en los atributos donde se ocupan el código postal y clave del SAT los deje como simples strings en vez de los enumeradores originales (de hecho si se fijan en los xml de cfdi 3.3 timbrados o en el XSD original son puros strings). Con dichos cambios la velocidad de Deserialización/Serialización del objeto Comprobante es bastante rápida. De hecho ya pude hacer mi primer timbre y creo que de aquí en adelante ya me aviento más fácilmente lo que me falta completar del cfdi 3.3
Eso si el control de los codigos postales y claves de producto y servicio para poder validarlos mejor los metí a una tabla de mi sistema o también lo que pueden hacer es separar en otro ensamblado que no vaya usarse para serializar Grabar todo los catálogos de Claves y Codigos Postales.
Re: AYUDA: XmlSerializer bastante lento. VB/C#
Publicado: Lun Sep 04, 2017 9:06 am
por ErnestoHDZ
acanas escribió:Si, de hecho el problema de que el serializer sea lento es porque tienen todo el catalogo de códigos postales y de claveprodsrv en el mismo ensamblado que representa la clase de Comprobante y tarda en procesar tantos elemento. En mi caso me pasaba exactamente lo mismo que mencionan en esta publicación y lo que hice fue omitir esos 2 catálogos y en los atributos donde se ocupan el código postal y clave del SAT los deje como simples strings en vez de los enumeradores originales (de hecho si se fijan en los xml de cfdi 3.3 timbrados o en el XSD original son puros strings). Con dichos cambios la velocidad de Deserialización/Serialización del objeto Comprobante es bastante rápida. De hecho ya pude hacer mi primer timbre y creo que de aquí en adelante ya me aviento más fácilmente lo que me falta completar del cfdi 3.3
Eso si el control de los codigos postales y claves de producto y servicio para poder validarlos mejor los metí a una tabla de mi sistema o también lo que pueden hacer es separar en otro ensamblado que no vaya usarse para serializar Grabar todo los catálogos de Claves y Codigos Postales.
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