Pergunta

Qual é a diferença entre um framework e biblioteca ?

Eu sempre pensei em uma biblioteca como um conjunto de objetos e funções que se concentra em resolver um problema particular ou uma área específica de desenvolvimento de aplicações (ou seja, acesso de banco de dados); e um quadro, por outro lado, como uma coleção de bibliotecas centrada em uma determinada metodologia (ou seja, MVC) e que abrange todas as áreas de desenvolvimento de aplicações.

Foi útil?

Solução

Na verdade, esses termos podem significar um monte de coisas diferentes, dependendo do contexto em que são usados.

Por exemplo, em quadros de Mac OS X são bibliotecas apenas, embalado em um pacote. Dentro do pacote você vai encontrar uma biblioteca dinâmica real (libWhatever.dylib). A diferença entre uma biblioteca nua eo quadro no Mac é que um quadro pode conter várias versões diferentes da biblioteca. Ele pode conter recursos extras (imagens, cadeias localizadas, arquivos de dados XML, UI objetos, etc.) e se o quadro é liberado para público, que normalmente contém os arquivos .h necessárias que você precisa para usar a biblioteca.

Assim, você tem tudo dentro de um único pacote que você precisa para usar a biblioteca em sua aplicação (uma biblioteca C / C ++ / Objective-C sem .h é bastante inútil, a menos que você escreva-se de acordo com alguma documentação biblioteca), em vez de um monte de arquivos para se mover (um pacote Mac é apenas um diretório no nível de Unix, mas os deleites UI-lo como um único arquivo, muito bonito como você tem arquivos JAR em Java e quando você clicar nele, você geralmente don 't ver o que está dentro, a menos que você selecione explicitamente para mostrar o conteúdo).

Wikipedia chama quadro um "chavão". Ele define uma estrutura de software como

A estrutura de software é uma re-utilizáveis projetar para um sistema de software (ou subsistema). A estrutura de software podem incluem programas de apoio, código bibliotecas, uma linguagem de script, ou outro software para ajudar a desenvolver e cola juntos os diferentes componentes de um projeto de software. Várias partes do quadro pode ser exposto através de uma API ..

Então eu diria que uma biblioteca é apenas isso, "uma biblioteca". É uma coleção de objetos / funções / métodos (dependendo do seu idioma) e sua aplicação "links" contra ele e, assim, pode usar os objetos / funções / métodos. É basicamente um arquivo contendo código reutilizável que normalmente pode ser compartilhado entre vários aplicativos (você não tem que escrever o mesmo código repetidamente).

Um quadro pode ser tudo que você usar no desenvolvimento de aplicações. Pode ser uma biblioteca, uma coleção de muitas bibliotecas, uma coleção de scripts, ou qualquer peça de software que você precisa para criar seu aplicativo. Quadro é apenas uma muito vaga prazo.

Aqui está um artigo sobre um cara sobre o tema " Biblioteca vs. Framework ". Eu pessoalmente acho que este artigo é altamente discutível. Não é errado o que ele está dizendo que não há, no entanto, ele está apenas escolhendo uma das várias definições de enquadramento e compara isso à definição clássica de biblioteca. Por exemplo. ele diz que você precisa de um quadro para a sub-classing. Realmente? Eu posso ter um objeto definido em uma biblioteca, eu posso ligar contra ela, e sub-classe-lo no meu código. Eu não vejo como eu preciso de um "framework" para isso. De alguma forma ele prefere explica como a estrutura termo é usado hoje em dia. É apenas uma palavra sensacionalistas, como eu disse antes. Algumas empresas liberar apenas uma biblioteca normal (em qualquer sentido de uma biblioteca clássica) e chamá-lo um "quadro" porque soa mais chique.

Outras dicas

A biblioteca executa específica, operações bem definido.

A framework é um esqueleto onde a aplicação define a "carne" da operação, preencha o esqueleto. O esqueleto ainda tem código para a ligação das partes, mas o mais importante trabalho é feito pelo aplicativo.

Exemplos de bibliotecas: Os protocolos de rede, compressão, manipulação de imagem, serviços públicos de cadeia, avaliação da expressão regular, matemática. Operações são auto-suficientes.

Exemplos de estruturas: sistema de aplicação Web, Plug-in gerente, sistema GUI. O quadro define o conceito, mas a aplicação define a funcionalidade fundamental que os usuários finais se preocupam.

Eu acho que a principal diferença é que os quadros a seguir a " Hollywood princípio ", ou seja " não ligue para nós, vamos chamá-lo. "

De acordo com a Martin Fowler :

A biblioteca é essencialmente um conjunto de funções que você pode chamar, estes dias normalmente organizados em classes. Cada chamada faz algum trabalho e retornos controle para o cliente.

A framework incorpora alguns abstrato projetar, com mais comportamento embutido. A fim de usá-lo você precisa inserir seu comportamento em vários lugares o enquadramento seja por subclasses ou ligando suas próprias classes. o código do framework em seguida, chama o seu código nesses pontos.

Biblioteca:

É apenas um coleção de rotinas (programação funcional) ou definições de classe (programação orientada a objeto). O atrás razão é simplesmente reutilização de código , ou seja, obter o código que já foi escrito por outros desenvolvedores. As aulas ou rotinas normalmente definir operações específicas em uma área específica de domínio . Por exemplo, existem algumas bibliotecas de matemática, que pode deixar desenvolvedor apenas chamar a função sem refazer a implementação de como um algoritmo funciona.

quadro:

No quadro, todo o controle de fluxo já está lá, e há um monte de manchas brancas predefinidos que devemos preencher com o nosso código . Um quadro é normalmente mais complexa. É define um esqueleto onde a aplicação define suas características próprias para preencher o esqueleto. Desta forma, o seu código será chamado pela estrutura quando adequadamente. A vantagem é que os desenvolvedores não precisam se preocupar se um projeto é bom ou não, mas apenas sobre a implementação de funções específicas de domínio.

Biblioteca, quadro e sua representação da imagem Código:

Biblioteca, quadro e sua relação imagem Código

KeyDifference:

A principal diferença entre uma biblioteca e um quadro é “Inversão de Controle” . Quando você chamar um método de uma biblioteca, você está no controle. Mas com um quadro, o controle é invertido: A estrutura chama você . Fonte.

Relação:

Ambos definido API, que é usado para programadores de usar. Para colocar esses juntos, podemos pensar em uma biblioteca como uma determinada função de uma aplicação, um quadro como o esqueleto do aplicativo, e uma API é conector para colocar esses juntos. Um processo de desenvolvimento típico normalmente começa com um quadro, e preencher funções definidas em bibliotecas através da API.

Você chama Biblioteca.

Quadro te chama.


? ?? ? ?
? ? ? ? ?
? ? ? ?

Como eu sempre descreveu-o:

A Biblioteca é uma ferramenta.

Um quadro é um modo de vida.

Uma biblioteca você pode usar qualquer parte pequena ajuda. Um quadro que você deve comprometer o seu projeto inteiro para.

Eu como resposta Cohens, mas uma definição mais técnica é: Seu código chama uma biblioteca. A estrutura chama seu código . Por exemplo, um framework GUI chama o seu código através de manipuladores de eventos. Um framework web chama seu código através de algum modelo de solicitação-resposta.

Isto também é chamado inversão de controle - de repente o quadro decide quando e como executar seu código em vez do contrário, como com as bibliotecas. Isto significa que um quadro também têm um impacto muito maior sobre a forma como você tem de estruturar o seu código.

Do ponto de vista desenvolvedor Web:

  1. Biblioteca pode ser facilmente substituível por outra biblioteca. Mas Framework não é possível.

    Se você não gosta biblioteca data jquery picker, você pode substituir com outro selecionador de data como data de bootstrap selecionador ou pickadate.

    Se você não gosta AngularJS em que você construiu o seu produto, você não pode simplesmente substituir com quaisquer outros frameworks. Você tem que reescrever sua base de código inteiro.

  2. Na maior parte biblioteca leva muito menos curva de aprendizagem em comparação com Frameworks. Por exemplo:. Underscore.js é uma biblioteca, Ember.js é um framework

Eu esqueço onde vi essa definição, mas eu acho que é bastante agradável.

Uma biblioteca é um módulo que você chama de seu código e um quadro é um módulo que chama seu código.

Um quadro pode ser feita de diferentes bibliotecas. Vamos dar um exemplo.

Vamos dizer que você quer cozinhar um peixe curry. Então você precisa de ingredientes como óleo , especiarias e outros utilitários . Você também precisa de peixe que é a sua base para preparar o seu prato em (Estes são dados de sua aplicação). todos os ingredientes juntos chamado de framework . Agora você vai usá-los um a um ou em combinação para fazer o seu peixe curry que é o seu produto final . Compare isso com um framework web , que é feita de underscore.js , bootstrap.css , bootstrap.js , fontawesome , AngularJS etc. Por exemplo, Twitter Bootstrap v.35 .

Agora, se você considerar apenas um ingrediente, como por exemplo óleo . Você não pode usar qualquer óleo que você quer, porque então ele vai arruinar o seu peixe (de dados). Você só pode usar Olive Oil . Compare isso com underscore.js . Agora, o que marca de óleo que você deseja usar é com você. Alguns prato foi feito com Americano Azeite (underscore.js) ou Indian Azeite (lodash.js). Isso só vai mudar o gosto de sua aplicação. Uma vez que eles servem quase o mesmo propósito, o seu uso depende da preferência do desenvolvedor e são facilmente substituíveis.

 enter descrição da imagem aqui


Framework : Uma coleção de bibliotecas que fornecem propriedades únicas e comportamentos para a sua aplicação. (Todos os ingredientes)

Biblioteca : Um conjunto bem definido de instruções que fornecem propriedades únicas e do comportamento para seus dados. (Óleo na peixe)

Plugin : Uma compilação de utilidade para uma biblioteca (ui-router -> AngularJS) ou muitas bibliotecas em combinação (data-picker -> bootstrap.css + jQuery), sem que o seu plugin pode agora trabalho como esperado.


P.S. AngularJS é um framework MVC, mas uma biblioteca JavaScript. Porque eu acredito Biblioteca estende comportamento padrão da tecnologia nativa (JavaScript neste caso).

Esta é a forma como eu penso nisso (e já vi racionalizada por outros):

Uma biblioteca é algo contido dentro de seu código. E um quadro é um recipiente para a sua aplicação.

aqui está ligado a artigo amargo por Joel Spolsky , mas contém uma boa distinção entre caixas de ferramentas, bibliotecas, frameworks e tal

A funcionalidade de biblioteca implementa para um fim estreito-escopo Considerando que um quadro tende a ser uma coleção de bibliotecas que fornecem suporte para uma ampla gama de recursos. Por exemplo, as alças System.Drawing.dll biblioteca desenho funcionalidade, mas é apenas uma parte do quadro global .NET.

Biblioteca -. Qualquer conjunto de classes ou componentes que podem ser usados ??como os Deems cliente apto para realizar uma determinada tarefa
Framework - mandatos algumas orientações para você "plug-in" em algo maior do que você. Você simplesmente fornecer a peças específicas para seu aplicativo / requisitos de uma forma publicada-necessário, de modo que 'o framwework pode tornar sua vida mais fácil'

As bibliotecas são para facilidade de uso e efficiency.You pode dizer por exemplo que a biblioteca Zend nos ajuda a realizar diferentes tarefas com suas classes bem definidas e functions.While um quadro é algo que normalmente obriga uma certa maneira de implementar uma solução, como MVC (MVC) (referência) . É um sistema bem definido para a distribuição de tarefas como em MVC.Model contém lado do banco de dados, vistas são para UI Interface, e os controladores são para a lógica de negócios.

Eu acho que você fixado para baixo muito bem a diferença: o quadro fornece um quadro em que fazemos o nosso trabalho ... De alguma forma, é mais "constranger" do que uma biblioteca simples
. O quadro também é suposto para adicionar consistência a um conjunto de bibliotecas.

Eu acho biblioteca é um conjunto de utilitários para alcançar um objetivo (por exemplo, soquetes, criptografia, etc). Framework é uma biblioteca + RUNTIME EINVIRONNEMENT. Por exemplo, ASP.NET é um framework: aceita solicitações HTTP, criar objeto página, invoque lyfe cicle eventos, etc. Framework que tudo isso, você escrever um pouco de código que será executado em um momento específico do ciclo de vida de solicitação atual!

De qualquer forma, muito interestering pergunta!

Não me lembro a fonte desta resposta (Eu acho que eu encontrei em um .ppt na internet), mas a resposta é bastante simples.

A Biblioteca e um quadro são um conjunto de classes, módulos e / ou código (dependendo da linguagem de programação) que pode ser usado em suas aplicações e ajuda-lo a resolver um "problema" especifico.

Esse problema pode ser log ou informações debuging em um aplicativo, desenhar gráficos, criar um formato de arquivo específico (html, pdf, xls), conectar-se a uma base de dados, criar uma parte de uma aplicação ou uma aplicação completa ou um código aplicada a um design Pattern .

Você pode ter um quadro ou uma biblioteca para resolver todos estes problemas e muitos mais, Normaly os quadros ajuda a resolver problemas mais complexos ou maiores, mas que uma consecuence de sua diferença principal, não uma definição principal para ambos.

A principal diferença betwen uma biblioteca e um quadro é a dependência betwen o seu próprio código, nas palavras oder usar um Framework você necessidade de uso quase todas as classes, módulos ou código no FW, mas para usar uma biblioteca você pode usar uma ou poucas classes, módulos ou código no lib em seu próprio aplicativo

Isto significa que se um quadro tem, por exemplo, tem 50 aulas, a fim de usar a estrutura em um aplicativo que você precisa para uso, deixe disse, 10-15 ou mais classes em seu código, porque é assim que se destina a Framework, algumas classes (objetos de que as classes) são entradas / parâmetros para métodos em outras classes no quadro. Veja o .NET framework, Primavera, ou qualquer framework MVC.

Mas, por exemplo, uma biblioteca de log, você pode apenas usar uma classe Log em seu código, e ajuda-lo a resolver o "problema registrando", isso significa Indiferente que a biblioteca log não tem mais classes em seu código , como aulas para arquivos punho, saídas de tela punho, ou bases de dados ainda, mas você nunca toque / uso que as classes no seu código, e essa é a razão de por que é uma biblioteca e não um quadro.

E também há mais categorias do que estruturas e bibliotecas, mas que está fora do tópico.

A sua interpretação soa muito bom para mim ... Um biblioteca pode ser qualquer coisa que é compilado e auto-suficiente para reutilização em outros códigos, não há literalmente nenhuma restrição sobre o seu conteúdo.

A framework por outro lado, espera-se ter uma gama de facilidades para o uso em alguns arena específica de desenvolvimento de aplicações, tal como o seu exemplo, MVC.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top