Pergunta

Esta questão já tem uma resposta aqui:

Eu tenho trabalhado como um nativo C ++ programador para últimos anos. Agora nós estamos começando um novo projeto a partir do zero. Então, qual é sua opinião sobre a mudança para C ++ \ CLI ao custo de perder o código independente de plataforma. Existem algumas vantagens especiais que se pode ganhar mudando para C ++ \ CLI?

Foi útil?

Solução

Eu recomendaria o seguinte, com base na minha experiência com C ++, C # e .NET:

  • Se você quer ir a maneira .NET, use C #.
  • Se você não quer NET, utilize tradicional C ++.
  • Se você tem que construir uma ponte tradicional C ++ com código .NET, uso C ++ / CLI. Funciona tanto com .NET chamando classes C ++ e C ++ chamando classes de .NET.

Não vejo sentido em indo só para C ++ / CLI, se você não precisa dele.

Outras dicas

Algumas questões a considerar antes de comutação:

[1] Tem fina com colagem para o Windows? Há .NET clones para outros do sistema operacional, mas a sua aplicação não vai apenas correr de forma transparente. A complexidade pode não ser necessário.

[2] Você está considerando mudar apenas para o apoio a coleta de lixo? Se assim for, você pode apenas usar alguns ++ bibliotecas coletor de lixo C. E se você descobrir como std :: shared_ptr alavancagem, você não pode se sentir a necessidade de coletores de lixo. Uma sobrecarga pode não ser necessário.

[3] Você está considerando C ++ / CLI por causa da coleta de lixo e todas as classes úteis .NET que você pode aproveitar? Se assim for, por que não basta mudar para c #. C ++ / CLI é uma tecnologia de transição, e é melhor não investir recursos em tais coisas. c # está ficando muito maduras e utilizável.

Pessoalmente, eu iria ficar com C ++;).

Há algum benefício para você? Você provavelmente vai perder a capacidade de alternar para outro OS.

Não se preocupe se você está integrando com .NET aplicativos. Certamente não usar STL / CLR como seu desempenho é realmente horrível.

A sua tentadora para virar esse interruptor para usar as bibliotecas de classes .NET, mas existem alternativas. Se você fizer isso, você não será capaz de portar seu código tão facilmente.

Parece também que o aumento do OSS está aumentando, então agora pode ser o momento para investigar usando bibliotecas de multi-plataforma e ferramentas. Você pode implantar um aplicativo linux muito mais facilmente do que uma janela de um (enviando um sistema operacional totalmente configurado!), E você terá muito melhor ROI se você implantar clientes Linux (como eles estão livres).

Se eu fosse um homem de negócios, eu estaria olhando para, pelo menos, ter a capacidade de implantar no Linux ou Mac do que apenas somente para Windows. Estrategicamente, eu não gostaria de apostar que o mundo ficou com Microsoft em 5 anos tempo.

A principal vantagem que você iria ficar mudando para C ++ / CLI é obter acesso às bibliotecas .NET e do próprio quadro (coleta de lixo etc.). No entanto, tanto quanto eu posso dizer a razão principal C ++ / CLI existe é para facilitar a portabilidade de código C ++ existente para executar no .NET framework. Novos projetos são incentivados a usar C #.

Se você precisa usar código existente C ++ misturado com o .NET framework, então não faria sentido usar C ++ / CLI, mas em geral você deve apenas começar com C #.

Se há algo em .NET que o novo projeto precisa usar extensivamente (talvez mais simples design de GUI ou algo assim), então use C #. se não, então ficar com C ++ nativo. Eu não acho que você vai perder nada por fazer isso.

Eu não gosto de C ++ / CLI tanto que eu recomendo direção clara, como eu descrevo aqui . Alguns sugerem usando C ++ / CLI como uma ponte entre padrão C ++ e C #, mas graças à forma como C ++ / CLI é projetado, é muito entediante para usar dessa maneira (você tem que criar manualmente invólucros de código normal C ++ que podem ser chamados a partir de C #). Portanto, eu recomendaria SWIG vez para fazer a interface padrão C ++ com C # (embora se admita que, SWIG tem uma curva de aprendizado substancial ).

Dê uma olhada nesses dois artigos:

A Critical Visão de C ++ / CLI, Parte I

A Critical Visão de C ++ / CLI, Parte II

Acredito que agora você está convencido como estou de que C ++ / CLI é nem um "conjunto de extensões para C ++" (Em muitos aspectos é realmente uma subconjunto de C ++), nem se relaciona com o C ++ mais do que qualquer outra linguagem com ponto e vírgula e chaves. Além disso, C ++ / CLI é definitivamente um Janelas orientado linguagem de programação; definitivamente não é uma linguagem que um Solaris 10 servidor ou um celular Nokia telefone será feliz para ser executado. O que tem nada a ver com C ++?

Uma desvantagem principal de usar C ++ / CLR é a possibilidade de perder o seu IP (Propriedade Intelectual), se o código não é obscurecida suficently. Em geral concordo com as declarações feitas por outros membros aqui. Se você quiser independente código portátil dos MS .net VM seguida, nativo C / C ++ é o caminho a percorrer.

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