2010-01-31 10 views
5

Estoy buscando información sobre mi arquitectura de proyecto actual. Hay tres componentes: servidor, escritorio y dispositivo móvil.Ayuda de diseño de arquitectura

tengo 2 objetivos:.

1) enviar datos (Aprox no más de 100 KB de texto) desde el escritorio (aplicaciones multi plataforma de cliente que se ejecuta en Windows XP/Vista/7 y Mac OS X) a un servidor (Windows Server 2008, IIS 7, WCF RESTful service) para guardar en una base de datos (Sql Server). Los servicios deben ser escalables porque se desconoce la cantidad de dispositivos de escritorio y la frecuencia con la que envían datos.

2) Un servicio para recuperar datos de la base de datos (Servidor Sql) y enviarlos a un dispositivo móvil (aplicación Iphone y Android. Tamaño del mensaje no más de 100 KB de texto). El servicio debe ser escalable porque se desconoce el número de dispositivos móviles y la frecuencia con la que se conectan.

Mi solución propuesta:

el lado del servidor (SQL Server y Windows Server 2008): estoy mirando a los servicios WCF REST JSON para comunicarse con aplicación de escritorio (s) y la aplicación móvil (s) . Me gusta WCF porque soy más hábil en C#, tengo cierta experiencia en la implementación de WCF, después de investigar un poco, parece que todas las tecnologías utilizadas para las plataformas (Windows XP/Vista/7 y Mac OS X) pueden comunicarse fácilmente con WCF RESTful.

  • ¿Algún problema fundamental de alto nivel con el servicio WCF en este escenario?
  • Solo he implementado WCF en una máquina con Windows Server 2003 con ~ 800 dispositivos que se conectan cada 15 minutos. El servidor era un servidor físico interno que se ejecutaba en una red privada. Necesito que esta solución sea alojada y escalable. ¿Alguna recomendación para alojar un Windows Server 2008? ¿Hay una mejor tecnología para alojar el servicio? (No estoy muy familiarizado con el funcionamiento de la nube)

Los servicios estarán guardando y recuperando datos de un servidor SQL. Me gustaría usar LINQ to SQL como mi capa de acceso a datos. Según tengo entendido, hay grandes tarifas de licencia asociadas al servidor SQL, por lo que es posible que deba ir con SQL Server Express por el momento.

  • Prefiero mantener los servicios de WCF y la base de datos alojados por separado (2 máquinas de diferencias). ¿Alguna recomendación para alojar servidores sql (o express)? ¿Hay un servicio de alojamiento que pueda escalar mejor para mi base de datos? ¿Tiene sentido mantener estos en 2 máquinas de diferencia?

escritorio (lado del cliente) estoy obligado a desarrollar para Windows XP/Vista/7 y Mac OS X. planeo escribir una aplicación .NET para ejecutar en la máquina (s) de Windows. I "m todavía en el aire si voy a escribir (y aprender: P). XCode o tratar mono Cualquier idea multiplataforma

  • ¿Debo esperar a tener ningún problema fundamental conseguir las aplicaciones de escritorio? hablar con mis servicios REST WCF?

applicaitons móviles estoy obligado a desarrolladores para el iPhone y Android. Hay muchos ejemplos de lo que el servicio REST WCF llamadas usando Objective C y el SDK de Android. I' Estoy considerando probar una plataforma cruzada (es decir, Appcelerator).¡Desde un alto nivel parece que estas plataformas móviles cruzadas han creado una capa de script Java que funciona tanto con iPhone como con Android!

  • Cualquier pensamiento sobre el uso de la tecnología de plataforma cruzada para escribir una aplicación móvil para funcionar en iPhone y Android?

  • ¿Algún problema fundamental al llamar al servicio WCF RESTful en javascript?

Perdón por la publicación algo larga. Nunca he diseñado una solución de este tamaño. Todos los comentarios son apreciados.

¡Gracias!

+0

[¿Cómo pensar un diseño unificado para la arquitectura de dispositivos múltiples?] (Http://izlooite.blogspot.com/2011/07/how-to-think-unified-design-for-multi.html) –

Respuesta

2

Como evidentemente desea utilizar las tecnologías de Microsoft, las sugerencias sobre Mono probablemente tengan sentido para usted y sin dudas le facilitarán las cosas.

Sin embargo, creo que puede comprometer elementos de la experiencia del usuario para usuarios de Mac y iPhone, lo que no es ideal, ya que estos usuarios tienden a tener las mayores expectativas para una gran experiencia de usuario.

Entiendo que no vivimos en un mundo ideal, pero si lo hiciéramos desarrollaría un cliente separado para cada plataforma, optimizado para las necesidades de cada plataforma. A menos que su aplicación esté realizando una gran cantidad de manipulación de datos, la capa de datos ahora está resumida en el servidor vw su interfaz JSON, por lo que no obtendrá mucho de compartir los objetos de datos en todas las implementaciones.

Como parece que está implementando el proyecto en un pequeño equipo (¿usted?), Entonces le sugiero que considere la implementación de una solución web con el JavaScript HTML que se comunica con el servidor a través de JSON.

La otra opción es que utilice un cliente de flex/air en windows y mac y flash en el android y la solución de Adobe para compilar flex/air en el código de iPhone.

Buena suerte.

0

Por su lado del cliente se puede considerar el uso Appclerator porque va a ejecutar en todas las plataformas que usted necesita con poco o ningún código adicional, y está diseñado para ser utilizado para aplicaciones de tipo de aplicaciones web

0

Usted debe considere MonoTouch para el iphone. Podrás compartir gran parte del código del escritorio. Yo usaría Mono en la Mac por la misma razón. Android es el hombre extraño. Eventualmente, alguien podría crear algo como MonoTouch para Android pero no lo suficientemente pronto como para ayudarte.

Cuestiones relacionadas