Diferença entre assembly e DLL

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.