Minha empresa tem muita experiência no desenvolvimento de .NET e um de nossos produtos em um sistema ERP. Recentemente, um cliente nos perguntou se poderíamos fornecer uma interface de tablet para esse sistema, ou seja, um software que permita ao cliente visualizar informações do produto e criar pedidos em um tablet.
Obviamente, não estamos entusiasmados com a ideia de investir muito tempo e dinheiro na aprendizagem do Objective-C, na compra de estações de trabalho de desenvolvimento para Mac, no pagamento de taxas à Apple etc. apenas neste projeto ( talvez possamos vender o aplicativo para alguns clientes adicionais posteriormente, mas o mercado é muito pequeno, pois só seria útil para clientes existentes do nosso sistema ERP).
Então o que deveríamos fazer? Tanto quanto posso ver, temos as seguintes opções:
Escreva um " aplicativo Windows simples e antigo " (WPF) e execute-o em um tablet com Windows 7, como o Samsung Slate ou o Acer Iconia.
Desvantagens: dispositivos pesados e caros com pouco tempo de execução (em comparação com tablets "reais").
Aguarde os tablets baseados no Windows 8 ARM e escreva um aplicativo Metro (WinRT).
Desvantagens: Aguarde pelo menos um ano; não está claro se o Windows 8 ARM oferecerá suporte à instalação de aplicativos B2B personalizados sem passar pela loja de aplicativos.
Use mono para Android e escreva um aplicativo .NET para Android.
Desvantagens: mais uma biblioteca de interface do usuário (diferente do WPF e Silverlight); alguns provedores proíbem o carregamento lateral de aplicativos.
Até agora, as opções 1 e 3 parecem ser as mais realistas. Perdi algumas desvantagens ou vantagens óbvias? Existe outra opção que eu ainda não considerei? Você já esteve em uma situação semelhante e (com sucesso) escolheu uma opção em particular?
Respostas:
Construção do JQuery Mobile + Phone Gap .
Isso significa basicamente "use HTML5 e JavaScript para criar seu aplicativo", como já foi dito antes, mas com uma reviravolta importante.
O serviço Phone Gap Build da Nitobi (agora de propriedade da Adobe) permite que os desenvolvedores convertam aplicativos HTML5 / JavaScript em aplicativos "nativos" (aplicativos realmente híbridos) que podem ser implantados localmente em um dispositivo. Entendo que basicamente o que está acontecendo sob o capô está compactando um pequeno binário nativo que chama o navegador nativo e carrega o site a partir de um arquivo: // URL.
Você não precisa segmentar nenhuma estrutura JavaScript específica - o mesmo HTML e JavaScript que funcionariam muito bem em um aplicativo da web para dispositivos móveis funcionará bem.
O suporte offline também não é difícil. Com o armazenamento do navegador local bem suportado por muitos dispositivos móveis, é possível criar aplicativos offline verdadeiramente poderosos dessa maneira. É uma boa prática empacotar suas dependências externas localmente, em vez de usar uma CDN, para que seu aplicativo funcione bem offline.
Estruturas como KnockoutJS e BackboneJS são muito úteis para permitir a criação de aplicativos JavaScript bem projetados e funcionam bem com o serviço de compilação do Phone Gap.
Quando o dispositivo está on-line, você pode facilmente acessar o back-end do serviço ASP.NET/MVC, WebAPI ou WCF para atualizar os dados.
Os aplicativos resultantes são realmente muito bons e podem ser distribuídos nos mercados da Apple e Android. Já existem muitos aplicativos nesses mercados criados com o Phone Gap Build e outros produtos similares, e 99% das pessoas (incluindo a maioria dos desenvolvedores) não sabem a diferença.
Obviamente, você não tentará criar o Angry Birds dessa maneira (embora, com o Canvas, suponha que tente), ele funciona maravilhosamente bem com os tipos de aplicativos de que você está falando.
Não aceite minha palavra. O PhoneGap está fazendo as rondas no circuito PodCast, tendo participado recentemente em Hanselminutes , DotNetRocks e Tablet Show . Além disso, escrevi sobre isso em uma postagem recente no blog .
fonte
Parece coisas bem dentro da capacidade do HTML 5 (e as tecnologias relacionadas geralmente mencionadas na mesma respiração). Escreva um aplicativo da Web rico e você imediatamente suporte qualquer dispositivo com um navegador .
fonte
Eu recomendo desenvolvê-lo como um aplicativo da Web MVC. Isso permitiria que você o executasse na maioria dos dispositivos, de um desktop a um smartphone, desde que você o projete bem. O HTML5 pode funcionar, mas dependerá dos tipos de dispositivos / navegadores que você precisará oferecer suporte. Seria bom se você pudesse usá-lo. Certifique-se de que você o arquitetou onde poderia adaptar partes dele para ser um back-end do WCF para um aplicativo Metro no futuro.
fonte
Se você deseja aproveitar o conhecimento .NET existente, opte por uma abordagem SOA e coloque o máximo de funcionalidade possível em um serviço da Web (SOAP ou REST, escolha o que melhor lhe convier). Dessa forma, você só precisa de um aplicativo cliente pequeno no dispositivo, que chamaria apenas a funcionalidade de serviço da web e exibia os resultados. Isso deve ser muito mais fácil de desenvolver do que um cliente completo que implementa a lógica de negócios, independentemente do cliente escolhido.
Ele também permite adicionar suporte para diferentes dispositivos posteriormente, tudo o que você precisa é de um aplicativo cliente pequeno para o novo dispositivo.
Para escolher um dispositivo, vejo dois critérios:
De qualquer forma, não espere por dispositivos que ainda não estão no mercado. Isso excluiria sua opção 2 (Windows 8 em tablets ARM).
fonte
Qualquer aplicativo do Windows significa que você está vinculado ao MS. Além disso, o Silverlight e o iOS / IE 10 não combinam bem. Escolha HTML 5 e JavaScript com Web Services e / ou JQuery. Ferramentas de terceiros, como a interface de usuário do Telerik-Kendo, devem deixar sua GUI legal o suficiente para o aplicativo LOB. O Dot Net só pode ter valor no lado do servidor.
fonte
Esse último comentário diz tudo: "O Dot Net só pode ter valor no lado do servidor" - talvez a Microsoft devesse ter chamado. Não é? Ou .WindowsOnly?
Você não pode nem escrever aplicativos do lado do cliente Windows RT em .Net.
É verdade que, para jogar no jogo multiplataforma, a lógica de negócios e os serviços de dados escritos em .Net precisam viver em um servidor Windows e expor uma API amigável da Web. A mais recente API da Web do ASP.Net é praticamente industrial em abril de 2013. Isso permitirá que você exponha seus objetos .Net como JSON, para que os aplicativos do lado do cliente JQuery / JS possam se integrar facilmente.
No lado do cliente, você não pode usar .Net. Você precisa escrever todo o seu código de interface do usuário em HTML / CSS / JQuery e sua lógica usando JS com talvez Knockout para ligação orientada a dados.
Para nós, desenvolvedores de .Net, simplesmente desenhar nossa interface do usuário SEM TER QUE ESCREVER O MARKUP é o Nirvana do desenvolvimento de aplicativos LOB. Quem criar uma estrutura .Net do lado do cliente que funcione tão bem quanto VS / .Net / WinForms / C # / VB.Net governará o mundo - e NÃO - na minha opinião, o Mono não está em lugar algum (sem suporte de fornecedores de componentes de terceiros) perto de VS / .Net / WinForms.
fonte
.NET 4.5.1 Windows Store/WinRT
aplicativos e os publiquei na loja. Eu usei C # se você está pensando e todo o aplicativo é armazenado no lado do cliente.