Comments (30)
Talvez este issue esteja também relacionado com #3
from boletonetcore.
@igorocampos sim, talvez fechemos os dois assim.
O BoletoNetCore como dependência do BoletoNetCore.Pdf, no Nuget quando se vc faz o Install-Package do BoletoNetCore.Pdf ele já traz o BoletoNetCore.dll, creio eu. Então pra quem vai usar o BoletoNetCore.Pdf, só precisa referenciar ele mesmo.
from boletonetcore.
Faz sentido
from boletonetcore.
@olavorn @igorocampos O pacote do PDF tem aproximadamente 5mb e o BoletonetCore tem 552mb, sincetamente não faz sentido separar, pois o ganho em tamanho é muito pequeno. O que acham ?
from boletonetcore.
Como eu disse antes 5MB pra mim já é um divisor de águas. Além disso você vai perder as outras vantagens descritas (que não necessáriamente tem a ver com o peso extra).
E por fim, como @olavorn disse, quem for usar o PDF nem vai precisar instalar os 2 pacotes, apenas o do PDF, pois o outro virá automaticamente por dependência.
Agora quanto aos tamanhos citados, não sei dizer exatamente a maneira que você está medindo (Talvez você tenha confundido KB com MB?), mas deve ser avaliado o tamanho total da DLL gerada e todas as suas dependências. Acredito que foi isso que foi feito aqui.
A dll BoletoNetCore.dll
tem 481 KB no meu repo forkado (não é a ultima versão, então por isso a diferença pra menor) e a BoletoNetCore.Pdf.dll
tem 6 KB, porém é necessário somar a isso o peso da wkhtml que são 44077 KB para linux e 29280 KB para windows.
from boletonetcore.
@igorocampos Sim, KB nao MB, eu errei.
Deverão ser criados dois build e duas publicações.
from boletonetcore.
@igorocampos Então retificando, o pacote tem 5k e o principal tem 277k, Dividir,mesmo que incluindo no mesmo pacote pode confundir que usa, pois ao invest de instalar o BoletoNetCore eu devo instalar o BoletoNetCore.PDF, que instala o BoletoNetCore. Se eu instalar somente o BoletoNetCore nao consigo gerar PDF, certo ?
from boletonetcore.
Se eu instalar somente o BoletoNetCore nao consigo gerar PDF, certo ?
Correto.
Se o problema é a confusão com nomes, então isso pode ser mitigado da seguinte maneira:
- o pacote que é a base para todo o funcionamento pode ser chamado algo como
BaseBoletoNetCore
- o pacote que tem a base como dependencia pode ter o nome
BoletoNetCore
Quem não quiser a impressão de PDF (e talvez outros módulos opcionais) utiliza apenas a base.
Mas na minha humilde opinião, isso tudo é desnecessário desde que documentado (como está) corretamente. Estamos falando de programadores e não usuários finais, caso alguém tenha dúvida de qual usar, olhará na documentação.
from boletonetcore.
@igorocampos Analisando o codigo, existe apenas um metodo neste pacote, chamado MontaBytesPDF() e este projeto ainda referencia o BoletoNetCore, isto nao faz sentido. Se vocês querem realmente isolar o pacote PDF e torná-lo reutilizável em outros projetos, sugiro remover a dependencia do BoletoNetCore e passar para o metodo o arquivo HTML. Desta maneira faz mais sentido e permite que qualquer projeto que precise gerar um PDF a partir de um HTML possa utilizá-lo.
Faz sentido ?
from boletonetcore.
Prefiro BoletoNetCore.Pdf mesmo. My 2 cents..
Até pq fica tudo com namespaces alinhados.
from boletonetcore.
@olavorn Namespace separado ok, mas pacote separado ? Nao acho necessário, a não ser que faça o isolamento do código.
from boletonetcore.
Faz sentido ?
Não necessariamente. Você afirmou que a gente quer reutilizar o BoletoNetCore.Pdf em outros projetos, mas isso nunca foi dito, o que queremos é que a instalação de BoletoNetCore
não dependa de BoletoNetCore.Pdf
e suas dependências (que é o que acontecerá se tudo for um pacote só).
Agora a nova questão levantada de remover a dependência de BoletoNetCore
de dentro de BoletoNetCore.Pdf
também pode ser feita. Mas isso implica em não ter mais a vantagem falada pelo @Olavo. Além disso eu não conheço a fundo o código (nem o antigo nem o novo) para opinar sobre essa separação.
from boletonetcore.
Prefiro BoletoNetCore.Pdf mesmo. My 2 cents..
Até pq fica tudo com namespaces alinhados.
Eu também não acho que valha a pena mudar
from boletonetcore.
@carloscds, faz sentido sim. Se vc observar, quem vai usar BoletoNetCore.Pdf nao vai precisar nem se preocupar em instalar mais nada, pois a biblioteca já vem como dependencia. Faz uma grande diferenca pra quem usa só a BoletoNetCore, e é transparente pra quem usa Pdf. Pois no BoletoNetCore nao se baixam as dependencias wkhtmltopdf.
Quanto a referencia, entendo que ela é o desejado, uma vez que a ideia dessa construcao é levar a biblioteca para uma arquitetura mais próxima de IoC.
from boletonetcore.
@olavorn Sendo bem pratico, colocar uma outra biblioteca esta significando ter apenas um metodo externo, mais os arquivos necessários ao PDF. Pergunta: quem gerra um boleto hoje, o faz em HTML ou PDF ?
from boletonetcore.
Eu faço em HTML
from boletonetcore.
@olavorn Sendo bem pratico, colocar uma outra biblioteca esta significando ter apenas um metodo externo, mais os arquivos necessários ao PDF. Pergunta: quem gerra um boleto hoje, o faz em HTML ou PDF ?
Nos meus testes estou gerando PDF mais com outra lib a HtmlToPdf, pois preciso enviar o boleto por email, e o método que manda o boleto no corpo do email, na hora da impressão ta ficando meio zoado.
from boletonetcore.
@igorocampos Ok, mas é muito mais suscetível a fraude, pois dá para alterar o arquivo HTML, aqui na empresa já tivemos problemas com isto.
from boletonetcore.
@igorocampos MAs ok se quiserem manter um pacote separado, tem que criar uma estratégia para atualizar os dois pacotes no build. Eu até criei o pacote e comecei mudar o build.
from boletonetcore.
@olavorn Sendo bem pratico, colocar uma outra biblioteca esta significando ter apenas um metodo externo, mais os arquivos necessários ao PDF. Pergunta: quem gerra um boleto hoje, o faz em HTML ou PDF ?
Eu faço em HTML. A questão de fraudes por manipulação de linha digitável é algo bastante mitigável em função de atualmente só atuarmos com cobranças registradas. Nosso entendimento é esse. Além do mais, edição de PDF também é algo extremamente popular atualmente, e certamente não é impedimento hoje para fraudadores. Na contramão disso, muitos bancos tem popularizado o uso e compartilhamento direto da linha digitável para pagamento de boletos.
O Método externo se justifica pelo tamanho da aplicação com e sem o PDF, e pelo fato de o PDF ser simplesmente um meio, e não necessariamente o fim da Biblioteca, conhecimento esse agregado nas classes do BoletoNetCore. Certamente se tivessemos falando de alguns Kbs a mais, talvez eu pendesse pra um pacote único.
Criar dois pacotes nuget na mesma build entendo que é o desejado mesmo.
from boletonetcore.
Como fechamento da discussão, resumo os pontos aqui resolvidos de forma bem simplificada:
-
Quer instalar e usar somente o BoletoNetCore e usar outras bibliotecas pra imprimir PDF ou mesmo usar em HTML?
Install-Package BoletoNetCore
-
Quer usar o BoletoNetCore com Pdf?
Install-Package BoletoNetCore.Pdf
-
Já tem o BoletoNetCore instalado, e agora quer usar o PDF?
Install-Package BoletoNetCore.Pdf
(mesma coisa, ele vai verificar as dependências instaladas e apenas aplicar as diferenças)
from boletonetcore.
tem que criar uma estratégia para atualizar os dois pacotes no build. Eu até criei o pacote e comecei mudar o build.
Atualmente com a PR que fiz, que já foi dado merge no master, qdo a solution sofre build, ambos pacotes já são gerados na respectiva pasta bin. Fora isso, tem mais alguma coisa que você gostaria que o projeto fizesse?
from boletonetcore.
@igorocampos Sim, precisamos criar um myget para cada pacote.
from boletonetcore.
@igorocampos Você atualizou o processo de build em Build.ps1 e no yaml ou esta falando apenas doVisual Studio ?
from boletonetcore.
Não sei como o CI/CD vai se comportar, mas a alteração que fiz está diretamente no csproj
, eu acho que se o CI/CD utiliza o MSBuild é para criar os arquivos dos pacotes juntamente com as DLLs
from boletonetcore.
@igorocampos Ok, eu vou ajustar no CI/CD
from boletonetcore.
-
Para o nuget trazer as dependências, é necessário configurar o pacote BoletoNetCore e publicar no nuget também.
-
Além disso, acho que no nuspec do BoletoNetCore.Pdf tem que trazer a referência da dependência conforme instrução abaixo*:
https://docs.microsoft.com/en-us/nuget/reference/nuspec#dependencies-element
- depende de 1) estar publicado, senão vai quebrar os dois pacotes
from boletonetcore.
@olavorn Vamos entao fazer dois pacotes ?
from boletonetcore.
Eu entendo que temos que seguir o plano aqui definido:
Só que para isso,
Install-Package BoletoNetCore
deve funcionar (no momento não funciona)
e
Install-Package BoletoNetCore.PDF
deve instalar BoletoNetCore como dependência (no momento não instala)
from boletonetcore.
@olavorn Projeto no Nuget esta marcado como beta:
Install-Package BoletoNetCore -Version 1.0.0-beta7
O outro pacote precisa ser criado e colocado no build, talvez tenhamos que criar um build especifico para ele.
from boletonetcore.
Related Issues (20)
- Erro durante a geração do registro HEADER do arquivo de REMESSA. Santander. HOT 2
- [Itaú] Atribuir código de barras retornado do banco HOT 1
- Carteira não implementada: 17/19 HOT 4
- Número do Convênio Líder HOT 6
- CodigoConvenio Não Aparece no Boleto Final HOT 15
- Erro ao instanciar a classe Banco HOT 3
- Implementação - Banco Daycoval HOT 3
- Daycoval - Registro de nota fiscal a cada Detalhe HOT 9
- Cecred/AILOS - Lote de remessa, campo Convênio esta com o numero do banco HOT 1
- Geração de PDF em 3.1 e 6.0 HOT 4
- Cecred/AILOS - Nosso numero na Impressao incorreto
- Erro ao tentar utilizar IBanco na camada de DI HOT 2
- Geração de CNAB 240 Segmento A
- O que faz com que o codigo de barras nao gere corretamente? HOT 5
- Leitor Código de Barras
- Sabem me dizer se é compatível com a API Itau Cash v2 ? HOT 1
- Sicoob Carteira 20 HOT 1
- Tamanho arquivo Pdf (Boleto) gerado. HOT 5
- Impressão de vários boletos HOT 3
- Mensagens de erro pouco explicativas. HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from boletonetcore.