O termo que você está procurando é uma plataforma que suporta arquiteturas de plug -in ou
Sistemas de módulo . Muitos tipos diferentes de software podem se enquadrar nessa categoria, dependendo das funções específicas que eles desempenham. Aqui estão alguns exemplos:
Sistemas operacionais: *
Linux: Utiliza extensivamente os módulos de kernel carregáveis (LKMS) para adicionar drivers de dispositivo, sistemas de arquivos e outras funcionalidades no nível do sistema.
Navegadores da web: *
Firefox: Historicamente, o Firefox era muito popular por suas extensões (embora o sistema de extensão tenha mudado com o tempo).
*
Chrome: Usa extensões, embora com diretrizes mais rigorosas de segurança e API do que o Firefox mais antigo.
servidores da web: *
apache: Usa módulos para adicionar funcionalidade como suporte a PHP, reescrita de URL, recursos de segurança etc.
Sistemas de Gerenciamento de Conteúdo (CMS): *
WordPress: Usa plugins extensivamente. O WordPress é totalmente baseado em plug-in.
*
drupal: Usa módulos.
*
joomla!: Usa extensões.
Ambientes de desenvolvimento integrado (IDES): *
Código do Visual Studio: Fortemente baseado em extensões. Quase todos os recursos do VS Code são implementados como extensões.
*
eclipse: Usa plugins.
*
Intellij Idea (e outros JetBreins Ides): Usa plugins.
Software de edição de áudio/vídeo: *
Adobe Photoshop: Usa plugins para filtros, formatos de arquivo e outros recursos.
*
Adobe Premiere Pro: Usa plugins para efeitos, transições e suporte ao codec.
*
Audacia: Usa plugins (efeitos, análise de áudio, etc.).
Software de modelagem 3D: *
Blender: Usa scripts e complementos do Python para uma ampla gama de funcionalidades.
*
Autodesk Maya: Usa scripts e plugins MEL (idioma incorporado maia).
Motores de jogo
: *
Unidade: Usa "ativos" (que podem incluir código, modelos, texturas etc.) que podem ser adicionados aos projetos.
*
Motor irreal: Usa plugins.
Outros exemplos: *
players de mídia (por exemplo, VLC): Use plugins para suporte ao codec e outros recursos.
*
editores de texto (por exemplo, texto sublime): Use plugins para suporte ao idioma, conclusão de código, etc.
*
Sistemas de banco de dados (por exemplo, PostgreSQL): Deixe extensões para adicionar novos tipos de dados, funções e outros recursos.
Principais recursos de módulos/plugins de suporte de software: *
API bem definida (interface de programação de aplicativos): Isso é crucial. O software fornece um conjunto definido de funções, classes e estruturas de dados que os plugins podem usar para interagir com o sistema principal. Uma API estável é vital para que os plugins não quebrem com todas as atualizações de software.
*
Mecanismo de carregamento do plugin/módulo: O software precisa de uma maneira de descobrir, carregar e inicializar plugins. Isso pode envolver diretórios de digitalização, usar arquivos de configuração ou fornecer uma interface de gerenciamento de plug -in.
*
Considerações de segurança: Importante. O software precisa isolar os plugins em certa medida para impedir que plugins maliciosos ou mal escritos colidam com todo o sistema ou comprometendo a segurança. Isso geralmente envolve sandboxing ou limitação das permissões que os plugins têm.
*
Gerenciamento de dependência: Um sistema para gerenciar dependências (outros plugins, bibliotecas ou recursos) que os plugins exigem.
*
Metadados do plug -in: Informações sobre um plug -in (nome, versão, autor, descrição, dependências) que o software pode usar para gerenciar plugins.
Considerações importantes ao escolher uma plataforma com uma arquitetura de plug -in: *
A qualidade da API: É bem documentado, estável e abrangente?
*
O tamanho do ecossistema de plug -in: Já existem muitos plugins disponíveis para as tarefas que você precisa executar?
*
O modelo de segurança: Quão bem a plataforma se protege de plugins maliciosos?
*
O processo de desenvolvimento do plugin: É fácil criar e distribuir plugins para a plataforma?
*
desempenho: Quanto os plugins afetam o desempenho geral do software?
Em resumo, existem muitos programas de software * que permitem que usuários e desenvolvedores estendam sua funcionalidade por meio de módulos ou plugins. O programa específico que você precisa depende inteiramente do tipo de funcionalidade que você está tentando estender.