Pergunta

Qual é a diferença entre OpenWrap e Nuget. E o que você prefere?

Foi útil?

Solução

O OpenWrap é um projeto de código aberto que prevê gerenciamento de dependência em aplicativos, não apenas no horário de construção, mas também em tempo de execução.

Como tal, nossos recursos são direcionados para a resolução dinâmica de dependências, seja para aplicativos WPF compostos, desenvolvimento de aplicativos da Web ou utilitários em todo o sistema. Isso torna nossa implementação muito diferente do que Nuget faz.

Então, aqui estão as coisas que são diferentes (provavelmente vou esquecer muito, mas ah bem).

  • Nenhuma dependência do Visual Studio e foco na produtividade na linha de comando e não em uma interface do usuário
  • Nenhuma dependência do PowerShell, OW vem com seu próprio sistema de comando que permite desenvolver, implantar e executar seus próprios comandos, seja no nosso shell (a ferramenta O.exe) ou do próprio msbuild.
  • O OpenWrap usa o OpenWrap para construir e se implantar e é amigável ao XCOPY a cada passo do caminho.
  • Possui um repositório de pacotes em todo
  • Suporta resolução dinâmica de dependência em tempo de execução, caso você queira fazer isso
  • Possui um formato de pacote extensível, para que você possa criar novos tipos de dependências em um pacote e ter o OpenWrap ajudá -lo em seu aplicativo
  • Suporta pacotes e pacotes de Nuget e Pacotes Nuget
  • Fica bem longe das complicações do XML e ODATA, e opta por DSLs simples baseados em texto que são fáceis e rápidos de aprender
  • Apoie a construção integrada, para que você possa construir e empacotar sua solução de uma só vez
  • Suporta repositórios personalizados em um compartilhamento de rede que você pode publicar no shell do OpenWrap ou nas tarefas do msbuild
  • Fornece nivelamento de dependência, escolhendo automaticamente qual combinação de versões de pacotes são resolvidas
  • A integração do Resharper significa que qualquer alteração que você faz com suas dependências é refletida no VS em tempo real
  • A integração do TeamCity significa que você pode criar, embalar e implantar seu pacote usando exatamente o mesmo processo, a partir de um script msbuild ou da linha de comando
  • Construtores extensíveis significa que você pode alterar a maneira como a construção é acionada no OpenWrap
  • Suporte para corredores de teste e testes de envio ao lado de pacotes
  • Usa os pontos de extensibilidade do msbuild suportados para incluir referências de montagem e deixa o código que você construiu sozinho. Depois de enviar binários, você não tem dependência do código do OpenWrap, apenas no tempo de construção.

Isso é apenas para as diferenças, pois é disso que você pediu, então não vou incomodá -lo com o que fazemos o mesmo que outros gerentes de pacotes.

Outras dicas

Só queria entrar com alguns pensamentos do lado do Nuget. Seb deixa de fora alguns detalhes que valem a pena apontar.

  • Enquanto nossa interface do usuário principal é baseada no VS, a montagem do NUGET CORE não tem nenhum laço com vs. O produto do ASP.NET Web Pages possui um gerenciador de pacotes baseado na Web. Escrevi uma postagem no blog mostrando um exemplo de uso do Nuget para criar um site que se atualize em tempo de execução. http://haacked.com/archive/2011/01/15/building--self-updating-site-using-uget.aspx
  • O NUGET fornece um poderoso console do PowerShell. Os pacotes Nuget podem adicionar novos comandos ao console. Ver http://blog.stevensanderson.com/2011/01/13/scaffold-your-aspnet-mvc-3-project-with-the-mvcscaffold-package/. Como antes, este é um cliente para Nuget e Nuget Core não exige.
  • O NUGET está disponível para instalação na Galeria de Extensão VS e é muito fácil de começar imediatamente.
  • A Nuget suporta apontar o cliente em um diretório (ou compartilhamento de rede) contendo um conjunto de pacotes e o trata automaticamente como um repositório. Então, se você não quer lidar com Odata, não precisa. Mas também incluímos uma implementação da nossa galeria para que não haja necessidade de lidar manualmente com o ODATA/XML em qualquer caso.
  • A NUGET não exige que você implante nenhuma parte do NUGET como parte do seu aplicativo. Ele fica de mãos dadas e está focado em automatizar as etapas que você seguiria sem Nuget para adquirir e implantar suas dependências. Para ficar claro, como Seb aponta, também não o OpenWrap. Eu só queria deixar claro que Nuget também não exige isso.

Um dos princípios principais do NUGET (e uma diferença importante no OpenWrap) é que ele não tenta mudar a maneira como você trabalha. Em vez disso, torna muito mais fácil fazer as coisas que você já faz hoje.

Diga, por exemplo, que você está tentando usar uma biblioteca Foo, que depende de uma biblioteca de bares. Hoje, você teria que encontrar manualmente essas bibliotecas, copiá -las para sua máquina e adicionar referências a elas. Em seguida, as versões mais recentes serão lançadas e você fará movimentos semelhantes para atualizá -las.

Nesse cenário, Nuget e OW facilitarão trazer essas referências, mas a principal diferença é que Nuget o faz de uma maneira completamente não invasiva. Ou seja, ele colocará os binários em sua máquina e os referencia da mesma maneira como se você tivesse feito isso manualmente. Depois de fazer isso, o arquivo do seu projeto é completamente 'normal', sem vínculos com o Nuget no Build ou RunTime.

O que isso significa é que, se você receber algumas bibliotecas via Nuget e colocar seu projeto no controle de origem, outro desenvolvedor poderá usar seu projeto sem precisar de Nuget.

A abordagem do OpenWrap também tem méritos, mas, para seguir esse caminho, você deve estar disposto a usar o OpenWrap o tempo todo, e não ser facilmente capaz de se afastar dela.

Existem muitas outras diferenças (como o apoio rico versus em Nuget), mas é isso que considero a diferença mais fundamental entre os dois.

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