Pergunta

Temos alguns projetos que envolvem a construção de um aplicativo composto talvez de 50% de funcionalidades personalizadas, mas que depois inclui, digamos, um wiki, um fórum e outros componentes que são "rodas" que já foram inventadas e que não temos. deseja reescrever do zero.

Esses aplicativos de terceiros geralmente possuem seus próprios bancos de dados, temas e sistemas de autenticação.Fazer com que as coisas funcionem como um logon único ou um tema comum, ou marcar/pesquisar entidades em vários subaplicativos são problemas bastante desafiadores, na minha experiência.Quais são algumas das melhores práticas para este tipo de projeto de integração?

Nossa abordagem, até agora, tem sido tentar escolher seus componentes com cuidado, escolhendo aqueles que tenham uma API claramente definida, de preferência via HTTP (como REST ou SOAP), embora isso nem sempre seja possível (não encontramos uma API decente). fórum que funciona dessa maneira).Há sugestões que as pessoas possam dar a qualquer pessoa que esteja tentando fazer isso, como suspeito que muitos de nós fazemos cada vez com mais frequência hoje em dia?

Foi útil?

Solução

Certifique-se de que a interface entre seu aplicativo e o aplicativo ou biblioteca de terceiros seja tal que você possa substituí-lo facilmente por outra coisa, apenas para garantir.Em alguns casos o software de terceiros pode ser apenas uma implementação de uma API padrão (Java faz muito isso com JDBC, JMS, JNDI, ...).Em outros casos, isso significa agrupar a biblioteca de terceiros em alguma API que você criar.

É claro que há momentos para jogar essa ideia pela janela e ter tudo totalmente integrado ao software de terceiros.Apenas certifique-se de que você REALMENTE deseja vincular seu aplicativo a esse terceiro.Depois de seguir esse caminho, é MUITO difícil voltar atrás e mudar de ideia.

Outras dicas

Se você estiver optando por bibliotecas de código aberto, escolha aquelas com uma boa licença.Eu descobri da maneira mais difícil (ao tentar criar um aplicativo OEM) que muitas empresas evitam licenças como a LGPL.Não vou entrar em detalhes sobre o porquê, mas eles preferem licenças estilo Apache, BSD ou MIT.

Escolha ferramentas que já existem há algum tempo.Confira a comunidade e certifique-se de que ela esteja ativa.Veja o que outras pessoas estão usando e use essas ferramentas.

Escolha tecnologias que funcionem bem juntas.Eu montei um aplicativo que usa ORM e Web Services.Spring Framework + Apache CXF + JPA para ORM criaram uma bela pilha de tecnologia.Todas as ferramentas que uso são facilmente interligadas no Spring, facilitando seu uso conjunto.A última coisa que você gostaria de fazer é escolher ferramentas nas quais você precisa escrever um monte de código apenas para usá-las juntas.

Escolha tecnologias baseadas em padrões.Dessa forma, se a biblioteca ou ferramenta morrer, você poderá facilmente mudar para outra que use o mesmo padrão.

Donald Knuth disse que ainda melhor que o código reutilizável é o código modificável, portanto, se não houver API, você deve procurar um aplicativo de código aberto que seja bem escrito e, portanto, possível de personalizar.

Quanto a bancos de dados e sistemas de login e outras partes de programação (não vejo como, por exemplo,o tema pode se beneficiar), você também pode tentar, dependendo das circunstâncias, agrupar as coisas para que o módulo acredite que está sozinho, mas na verdade fale com o seu código.

Minha abordagem tem sido usar código de terceiros para algumas funcionalidades principais.Por exemplo, eu uso Subsonic para acesso a dados, componentes Devexpress para UI e Peter Blum Data Entry Suite para entrada e validação de dados.Subsonic é de código aberto, os controles do Devexpress Peter Blum têm código-fonte disponível por uma taxa extra.Seria impossível obter a funcionalidade desses controles se eu mesmo tentasse escrevê-los.

Essa abordagem me permite focar na funcionalidade personalizada do meu aplicativo sem ter que me preocupar em como acessarei o banco de dados ou em como criarei uma lista de árvores editável e bonita.Claro que não tenho um fórum totalmente configurado e funcional, mas sei que usarei um banco de dados SQL para meu aplicativo e não terei que tentar fazer com que diferentes componentes de armazenamento de dados funcionem juntos.Não tenho um wiki, mas sei como usar os componentes devexpress ui e formatar e validar a entrada de dados é fácil com os controles de Peter Blum.Em outras palavras, aprenda ferramentas (e, claro, escolha-as com cuidado) que irão acelerar o desenvolvimento de todos os seus projetos, então você poderá se concentrar nas partes de sua aplicação que precisam ser customizadas.

Não estou muito preocupado se é de código aberto ou não, desde que o código-fonte esteja disponível.Se for open source eu doo para o projeto.Se for um componente comercial pagarei um preço justo.De qualquer forma, as ferramentas ajudam a tornar a programação divertida e os resultados têm integridade de dados e ótima aparência.Se eu desenvolver um wiki ou fórum, sei que posso fazer com que eles trabalhem juntos sem problemas.Finalmente, todas as ferramentas que mencionei já existem há muito tempo e são escritas por desenvolvedores excepcionais e de grande reputação.

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