Muitos de nós desconheceremos esta diferença que é realmente importante de compreender durante o desenvolvimento. A resposta possível a esta pergunta, se colocada, será “Framework é uma colecção de várias bibliotecas”. No entanto, esta definição não é inteiramente verdadeira. “Quem chama quem”, ou seja, a relação chamador/callee define a diferença entre os dois termos. É o nosso código que chama o código da biblioteca enquanto que, no enquadramento, é o código do enquadramento que chama o nosso código. Vamos ver como.
Library
Uma biblioteca fornece um conjunto de funções/objectos/módulos de ajuda que o código da sua aplicação chama para uma funcionalidade específica. As bibliotecas centram-se normalmente num âmbito restrito (por exemplo, strings, IO, sockets), pelo que as suas APIs também tendem a ser mais pequenas e requerem menos dependências. Trata-se apenas de uma colecção de definições de classe. Porque é que precisamos delas? Sendo a razão muito simples, ou seja, reutilização de código, utilizar o código que já foi escrito por outros programadores. Por exemplo, alguma biblioteca tem um método chamado findLastIndex(char) para encontrar o último índice de um determinado carácter numa cadeia. Podemos chamar imediatamente a função findLastIndex(charToFind) da biblioteca e passar os caracteres cuja posição precisamos de encontrar como um parâmetro na chamada de função.
Framework
Framework, por outro lado, definiu funções ou objectos abertos ou não implementados que o utilizador escreve para criar uma aplicação personalizada. (Os utilizadores de C++/Java compreenderão isto, pois é muito semelhante à implementação de uma função abstracta). Uma vez que uma estrutura é em si mesma uma aplicação, tem um âmbito mais vasto e inclui quase tudo o que é necessário para fazer uma aplicação do utilizador de acordo com as suas próprias necessidades. A Wikipedia torna-o mais claro:
“Na programação de computadores, uma estrutura de software é uma abstracção na qual o software que fornece funcionalidade genérica pode ser selectivamente alterado por código adicional escrito pelo utilizador, fornecendo assim software específico da aplicação”
P> Assim, a principal diferença está na “Inversão de Controlo”, vulgarmente designada por IoC. Quando chamamos um método a partir de uma biblioteca, estamos no controlo. Mas na estrutura, o controlo é invertido, ou seja, a estrutura chama-nos. Define um esqueleto onde a aplicação define as suas próprias características para preencher o esqueleto. Por exemplo, em Javascript, normalmente utilizamos isto:
$(document.ready(){ // this call will be done by the jquery // framework when document will be ready. function() { /* your code */ // our implementation inside the framework's function }});
Enquanto na biblioteca, normalmente temos o seu objecto para chamar as suas funções ou simplesmente chamamo-las. Ex:
str = "Geeks.ForGeeks"var pos = str.lastIndexOf("."); // simply calling function of string library
P>Pontos Importantes:
- Biblioteca: Executa um conjunto de operações específicas e bem definidas. Exemplos : Protocolos de rede, compressão, manipulação de imagem, utilitários de cordas, avaliação de expressão regular, matemática, etc
- Framework: É conhecido por ser um esqueleto onde a aplicação define o conteúdo da operação através do preenchimento do esqueleto. Exemplos de estruturas: Sistema de aplicação Web, gestor de Plug-in, sistema GUI. A estrutura apenas define o conceito, mas uma aplicação define ainda mais a funcionalidade que é útil para os utilizadores finais.
- Inversão de controlo: Quando chamamos um método a partir de uma biblioteca, estamos no controlo. Mas na estrutura, o controlo é invertido, ou seja, a estrutura chama-nos.
Referência:
- Video Tutorial
Este artigo é contribuído por Ekta Goel. Se gosta de GeeksforGeeks e gostaria de contribuir, pode também escrever um artigo utilizando o contribute.geeksforgeeks.org ou enviar o seu artigo por correio para [email protected]. Veja o seu artigo que aparece na página principal do GeeksforGeeks e ajude outros Geeks.