Assembly vs DLL
Uma biblioteca é uma coleção de recursos que podem ser usados para desenvolver aplicativos. Uma biblioteca é geralmente composta de sub-rotinas, funções, classes, valores e tipos. Durante o processo de vinculação (geralmente feito por um vinculador), bibliotecas e executáveis fazem referência uma à outra. Arquivos DLL são os arquivos de biblioteca vinculados dinamicamente. DLL foi desenvolvido pela Microsoft. Mas, devido a alguns problemas presentes nos arquivos DLL, a Microsoft criou o formato de arquivo Assembly (com a estrutura .NET). Arquivos de montagem são muito semelhantes às DLLs fisicamente, mas eles têm muitas diferenças internas.
O que é DLL?
A Dynamic Link Library (mais conhecida como DLL) é uma implementação de biblioteca compartilhada desenvolvida pela Microsoft. Ele usa as extensões .dll, .ocx ou .drv e são usadas nos sistemas operacionais Microsoft Windows e OS / 2 ... a dll é usada pelos arquivos DLL comuns. E a extensão .ocx é usada pelas bibliotecas que contêm controles ActiveX e a extensão .drv é usada pelos arquivos de driver de sistema herdados. O formato do arquivo DLL é o mesmo que os arquivos EXE do Windows (arquivos executáveis portáteis no Windows de 32 bits / 64 bits e Novo executável no Windows de 16 bits). Portanto, qualquer combinação de código, dados e recursos pode estar contida nos arquivos DLL (assim como nos arquivos EXE). Por uma questão de fato, os arquivos de dados com o formato de arquivo DLL são chamados de DLLs de recurso. Bibliotecas de ícones (com extensão .icl) e arquivos de fonte (com extensões .fon e .fot) são exemplos de DLLs de recursos.
Os componentes chamados seções formam uma DLL e cada seção possui seus próprios atributos, como somente leitura / gravável e executável / não executável. As seções de código são executáveis, enquanto as seções de dados não são executáveis. As seções de código são compartilhadas e as de dados são privadas. Isso significa que todos os processos que usam a DLL usarão a mesma cópia do código, enquanto cada processo terá sua própria cópia dos dados. A biblioteca dinâmica principal do Windows é o kernel32.dll, que contém as funções básicas (funcionalidade relacionada a arquivos e memória) no Windows. COM (Component Object Model) é a extensão da DLL para OOP (Programação Orientada a Objetos). DLLs convencionais são mais fáceis de usar do que arquivos COM.
O que é uma Assembléia?
Os arquivos de assembly foram introduzidos pela Microsoft para solucionar vários problemas presentes nos arquivos DLL. Arquivos de montagem foram introduzidos com a estrutura Microsoft .NET. Uma unidade lógica de funcionalidade executável é chamada de Assembly. Assemblies são executáveis no .NET CLR (Common Language Runtime). Fisicamente, os assemblies existem como arquivos EXE ou DLL. Mas, eles são muito diferentes das DLLs do Microsoft Win32, internamente. Um arquivo de montagem é composto de um manifesto, metadados, MISL (código do Microsoft Intermediate Language) e outros recursos. Uma montagem é autoexplicativa. O manifesto contém informações como nome, versão, cultura, nome forte, lista de arquivos, tipos e dependências. O código MISL é executado através do CLR (não pode ser executado diretamente).
Qual é a diferença entre assembly e DLL?
DLL é uma biblioteca vinculada dinamicamente. Embora os assemblies sejam fisicamente iguais às DLLs, eles são muito diferentes internamente. Não é possível manter a consistência entre um conjunto de DLLs, mas o CLR pode manter a consistência entre um conjunto de assemblies, porque os assemblies são autoexplicativos (eles contêm a lista de dependências internamente). Diferentemente das DLLs, as informações de versão são aplicadas aos assemblies (pelo CLR). A implantação lado a lado (aplicativos diferentes usando versões diferentes) é possível com montagens.