Mi empresa tiene mucha experiencia en el desarrollo de .NET y uno de nuestros productos en un sistema ERP. Recientemente, un cliente nos preguntó si podíamos proporcionar una interfaz de tableta para ese sistema, es decir, un software que le permita al cliente ver información del producto y crear pedidos en una tableta.
Por supuesto, no estamos entusiasmados con la idea de invertir mucho tiempo y dinero en aprender Objective-C, comprar estaciones de trabajo de desarrollo de Mac, pagar tarifas a Apple, etc. solo para este proyecto ( podríamos poder vender la aplicación para algunos clientes adicionales después, pero el mercado es muy pequeño, ya que solo sería útil para los clientes existentes de nuestro sistema ERP).
¿Entonces, qué debemos hacer? Hasta donde puedo ver, tenemos las siguientes opciones:
Escriba una " aplicación de Windows antigua y simple " (WPF) y ejecútela en una tableta con Windows 7, como Samsung Slate o Acer Iconia.
Inconvenientes: dispositivos pesados y caros con un tiempo de ejecución corto (en comparación con las tabletas "reales").
Espere las tabletas basadas en Windows 8 ARM y escriba una aplicación Metro (WinRT).
Inconvenientes: espere al menos un año; no está claro si Windows 8 ARM admitirá la instalación de aplicaciones B2B personalizadas sin pasar por la tienda de aplicaciones.
Use mono para Android y escriba una aplicación .NET para Android.
Inconvenientes: otra biblioteca de UI (diferente de WPF y Silverlight); algunos proveedores no permiten la carga lateral de aplicaciones.
Hasta ahora, las opciones 1 y 3 parecen ser las más realistas. ¿Me perdí algún inconveniente o ventaja obvia? ¿Hay alguna otra opción que aún no haya considerado? ¿Has estado en una situación similar y (con éxito) has elegido una opción en particular?
Respuestas:
JQuery Mobile + Phone Gap Build .
Esto básicamente dice "usa HTML5 y JavaScript para construir tu aplicación", como se ha dicho antes, pero con un giro importante.
El servicio Phone Gap Build de Nitobi (ahora propiedad de Adobe) permite a los desarrolladores convertir aplicaciones HTML5 / JavaScript en aplicaciones "nativas" (aplicaciones realmente híbridas) que pueden implementarse localmente en un dispositivo. Tengo entendido que, básicamente, lo que sucede debajo del capó es empaquetar un pequeño binario nativo que llama al navegador nativo y carga su sitio desde un archivo: // URL.
No necesita apuntar a ningún marco de JavaScript específico: el mismo HTML y JavaScript que funcionarían realmente bien en una aplicación web móvil funcionará bien.
El soporte fuera de línea tampoco es difícil. Con el almacenamiento del navegador local bien compatible con muchos dispositivos móviles, puede crear aplicaciones fuera de línea realmente potentes de esta manera. Su mejor práctica es empaquetar localmente sus dependencias externas en lugar de usar un CDN, para que su aplicación funcione bien sin conexión.
Los marcos como KnockoutJS y BackboneJS son muy útiles para permitirle crear aplicaciones JavaScript bien diseñadas, y funcionan bien con el servicio de compilación de Phone Gap.
Cuando el dispositivo está en línea, puede hacer que acceda fácilmente a los servicios ASP.NET/MVC, WebAPI o WCF para actualizar los datos.
Las aplicaciones resultantes son realmente bastante buenas y se pueden distribuir en los mercados de Apple y Android. Ya hay muchas aplicaciones en esos mercados creados con Phone Gap Build y otros productos similares, y el 99% de las personas (incluida la mayoría de los desarrolladores) no pueden notar la diferencia.
Obviamente no vas a tratar de construir Angry Birds de esta manera (aunque, con Canvas, supongo que podrías intentarlo), funciona maravillosamente bien con el tipo de aplicaciones de las que estás hablando.
No confíes en mi palabra. PhoneGap ha estado haciendo rondas en el circuito PodCast, habiendo estado recientemente en Hanselminutes , DotNetRocks y Tablet Show . Además, escribí sobre eso en una publicación reciente del blog .
fuente
Suena bien dentro de la capacidad de HTML 5 (y las tecnologías relacionadas generalmente mencionadas en el mismo aliento) Escriba una aplicación web enriquecida e inmediatamente respaldará cualquier dispositivo con un navegador .
fuente
Recomiendo desarrollarlo como una aplicación web MVC. Esto le permitirá ejecutarlo en la mayoría de los dispositivos, desde una computadora de escritorio hasta un teléfono inteligente, siempre que lo diseñe bien. HTML5 puede funcionar, pero dependerá de los tipos de dispositivos / navegadores que necesitará admitir. Sería bueno si puedes salirte con la suya. Asegúrese de diseñarlo donde pueda adaptar partes de él para que sea un backend de WCF en una aplicación de Metro en el futuro.
fuente
Si desea aprovechar el conocimiento .NET existente, debe optar por un enfoque SOA y poner tanta funcionalidad como sea posible en un servicio web (SOAP o REST, elija el que más le convenga). De esa manera, solo necesita una pequeña aplicación cliente en el dispositivo, que solo llamaría a la funcionalidad del servicio web y mostraría los resultados. Esto debería ser mucho más fácil de desarrollar que un cliente completo que implemente la lógica empresarial, sin importar el cliente que elija.
También permite agregar soporte para diferentes dispositivos más adelante, todo lo que necesita es una pequeña aplicación cliente para el nuevo dispositivo.
Para elegir un dispositivo, veo dos criterios:
En cualquier caso, no espere dispositivos que aún no están en el mercado. Eso descartaría su opción 2 (Windows 8 en tabletas ARM).
fuente
Cualquier aplicación de Windows significará que está vinculado a MS. Además, Silverlight e iOS / IE 10 no van bien juntos. Elija HTML 5 y JavaScript con servicios web y / o JQuery. Las herramientas de terceros como la interfaz de usuario de Telerik-Kendo deberían hacer que su GUI sea lo suficientemente genial para la aplicación LOB. Dot Net solo podría ser de valor en el lado del servidor.
fuente
Ese último comentario lo dice todo realmente: 'Dot Net solo podría ser de valor en el lado del servidor', tal vez Microsoft debería haberlo llamado. ¿No? O .WindowsOnly?
Ni siquiera puede escribir aplicaciones del lado del cliente de Windows RT en .Net.
Es cierto que para jugar en el juego multiplataforma, su lógica de negocios y servicios de datos escritos en .Net, tienen que vivir en un servidor de Windows y exponer una API amigable para la web. La última API web de ASP.Net tiene una fortaleza casi industrial en abril de 2013. Esto le permitirá exponer sus objetos .Net como JSON para que las aplicaciones JQuery / JS del lado del cliente puedan integrarse fácilmente.
En el lado del cliente, no puede usar .Net. Debe escribir todo su código de UI en HTML / CSS / JQuery y su lógica utilizando JS con quizás Knockout para el enlace orientado a datos.
Para nosotros, los desarrolladores de .Net, simplemente dibujar nuestra interfaz de usuario SIN TENER QUE ESCRIBIR MARKUP es el Nirvana de desarrollar aplicaciones LOB. Quien presente un marco .Net del lado del cliente que funcione tan bien como VS / .Net / WinForms / C # / VB.Net gobernará el mundo, y NO, en mi opinión, Mono no está en ninguna parte (no hay soporte de proveedores de componentes de terceros) cerca de VS / .Net / WinForms.
fuente
.NET 4.5.1 Windows Store/WinRT
solicitudes y las he publicado en la tienda. Usé C # si te preguntas y toda la aplicación está almacenada en el lado del cliente.