C # é realmente uma linguagem multiplataforma?


20

O C # (e a plataforma .net em geral) parece estar se tornando uma boa opção para aplicativos com vários destinos:

  • estrutura oficial do MS .net: desenvolvimento completo do windows, asp.net dev, Windows phone Dev, etc.
  • mono e todos os seus derivados: monotouch, monodroid: o resto do mundo. Hoje essas ferramentas são RTM.

  • Isso significa que o C # está se tornando uma boa linguagem para segmentar as plataformas mais populares: desktop, web e móvel?

  • Ainda é melhor usar a linguagem "nativa" das plataformas de destino (objetivo C, Java, etc.)
  • É apenas uma tela de fumaça e apenas linguagem de marketing?

Observe que estou realmente consciente de que não poderei copiar / colar o código entre plataformas. Mas tenho certeza de que as camadas inferiores dos aplicativos (modelos, negócios etc.) podem ser reutilizadas, mas sei que terei que adaptar as camadas superiores (Gui etc.) à plataforma. Meu objetivo é mais focado nas habilidades necessárias do que no compartilhamento de código técnico.

[edit] Eu sou desenvolvedor em uma empresa que usa massivamente c #. É por isso que falei sobre c # em um plano para expandir a gama de plataformas de destino na minha empresa.

Respostas:


12

Sim, em geral, o .NET Framework é ótimo para aplicativos direcionados a uma ampla variedade de dispositivos. Mas isso não é exclusivo do .NET; Java estava fazendo isso muito antes. O ponto a ser lembrado é que não há alternativa real às ferramentas nativas para uma plataforma específica.

Os aplicativos para Mac criados com o .NET nunca serão parecidos com os aplicativos nativos do Mac OS X, e isso é considerado um problema pela grande maioria. dos usuários do OS X. Isso pode não ser importante para você estrategicamente, dependendo se o seu modelo de negócios valoriza maximizar a saturação em vez de maximizar a satisfação do usuário, mas certamente é algo a ter em mente ao fazer uma escolha.

Os sistemas GUI no Linux e Windows são um pouco mais flexíveis em termos de quais aplicativos parecem "nativos" e se encaixam bem na plataforma. Mas culpo isso principalmente pela falta de diretrizes claras de interface e pelo fato de os desenvolvedores de aplicativos historicamente estarem dispostos a ignorar os que existem. Muitos usuários de Mac preferem o Mac precisamente por causa de sua interface de usuário consistente.

Considerando que você precisará adaptar a camada da GUI à plataforma específica (e possivelmente reescrevê-la em um idioma completamente diferente, como Objective-C), que permite aproveitar a plataforma .NET apenas para o código da biblioteca. E então não há uma vitória muito clara para C # sobre C ++, na minha opinião.

Para o desenvolvimento rápido de aplicativos, existem poucas alternativas melhores que C # e .NET. Enviar um aplicativo rapidamente e disponibilizá-lo imediatamente em diversas plataformas é certamente uma vantagem comercial. Mas, para verdadeiras aplicações multiplataformas que visam realmente satisfazer o usuário, não é necessariamente a solução ideal.


9
"Os aplicativos para Mac criados com o .NET nunca serão parecidos com os aplicativos nativos do Mac OS X, ...". Deixe-me apresentar-lhe o MonoMac

3
@ Dimitris: Digamos que eu sou cético, na melhor das hipóteses. O pessoal do Qt tentou isso, e as pessoas ainda pulam por terem conseguido. Eles estão errados: eles não. Os aplicativos Qt não se parecem com aplicativos nativos do OS X. Eles estão ... errados. Não vejo capturas de tela no link que você sugeriu, mas mesmo que elas obtenham a interface do usuário perfeita, elas ainda terão todos os detalhes de comportamento e implementação em falta. Obrigado pela referência, no entanto. É algo para se estar otimista.
Cody Grey #

7
@Cody Gray: O MonoMac parece e age nativamente porque não é uma API de plataforma cruzada, mas envolve nativamente a API Cocoa subjacente. Parece e age nativo porque é nativo.

1
@ Gray Gray: MonoMac é para Mac o que MonoTouch é para iOS. Você pode escrever aplicativos nativos, basta usar C # em vez de Obj-C. Não é "faça WinForms ou Gtk parecerem bons no Mac".

2
Só queria entrar na conversa acima, já que estou no meio da construção de um sistema que abrange iPad e Windows Phone, ASP.NET MVC3 e NT Services que fazem interface com um sistema de controle de robótica. Mono, MonoDroid, MonoTouch, etc., como Cody apontou acima, é uma maneira de escrever código em C # que permite tirar proveito do poder do C # e do .NET Framework (incluindo Linq) enquanto também desfruta de acesso irrestrito ao seu APIs "nativas" da plataforma escolhida ... ao mesmo tempo em que evita os muitos problemas de gerenciamento de memória inerentes à maioria dos códigos C / C ++ / ObjC nativos.
Richard Turner

6

Microsoft .NET é a implementação oficial do CLR, DLR, BCL, CLI e CLS. Outras empresas, grupos, comunidades ou grupos de trabalho não estão associados à Microsoft de uma maneira que eles possam ter uma implementação 1: 1 da versão mais recente da estrutura e idioma.

Basicamente, você precisa revisar quais idiomas e recursos da estrutura você gostaria de aproveitar em um projeto concreto e verificar se eles estão presentes em implementações .NET não oficiais.

Se você espera uma solução compiladora única e a distribui em todos os lugares, está errado: você precisa fazer um estudo de caso.


São muitos TLAs !
Tamlyn

@tamlyn yeah hahahaha
Matías Fidemraizer

Agora que muito do .NET é open source, as coisas mudaram ....
Ian

@Ian Sure .......
Matías Fidemraizer

2

Uso C # em jogos executados em máquinas XBOX e Windows, uso em aplicativos do Compact Framework para soluções de robótica, uso o MonoTouch para desenvolvimento de iPad, tenho alguns aplicativos da Web em execução no Linux e algumas outras soluções. Geralmente, há uma maneira de fazer suas coisas em uma determinada plataforma. A camada principal é praticamente a mesma para a maioria deles (é necessário um estudo de caso). O problema - e eu o considero uma série - é o ambiente de desenvolvimento. Estou acostumado ao Visual Studio e seus recursos. Mas o MonoDevelop, por exemplo, me deixa maluco.


1
A Novell lançou recentemente uma extensão do VS 2010 para que você possa desenvolver o código Mono no VS.
Morgan Herlocker
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.