2011-08-08 14 views
5

una pregunta para principiantes. He hecho muchos desarrollos Java (por ejemplo, GAE) y desarrollo móvil como iOS y Android. Estoy investigando Windows Azure como la plataforma para nuestros servicios de servidor con los que interactúan nuestros dispositivos móviles. Tengo que admitir que me cuesta entenderlo. Parte de esto es una sobrecarga de acrónimos. ¿Hay algún buen indicador de cómo los distintos acrónimos se unen?Azure vs WCF vs ASP.NET vs ... ¿Cómo encaja?

He trabajado en algunos de los tutoriales, pero en su mayoría se centran en hacer un sitio web en Azure. En nuestro caso, realmente no hay páginas web, sino servicios (algunos REST, otros de lo contrario) a los que llaman los dispositivos. Para llegar, tal vez, a una pregunta específica: ¿cómo funciona una función de trabajador, o una función web, recuperar el contenido de una publicación http enviada al punto final que creé para ella?

+0

Mi opinión solamente: si está desarrollando en Java, probablemente debería elegir Google o Amazon sobre Azure. Azure hace que sea increíblemente fácil desarrollar aplicaciones basadas en la nube, pero solo cuando estás en el ecosistema de Microsoft (es decir, .NET, WCF, ASP). –

+0

No estoy de acuerdo, uno debe elegir la tecnología que mejor resuelva un problema determinado. Lo mejor en este caso significa más eficiente, rentable y en el menor tiempo posible. Dado lo que puede hacer Azure (y el ecosistema MS), sería irresponsable no mirar los beneficios y los posibles usos. –

+0

Preferiría GAE, pero la empresa es una tienda de MS, por lo que la elección es preestablecida. – onnoweb

Respuesta

6

La respuesta a esto debería ser bastante fácil. Azure, hacia usted, es un proveedor de alojamiento . Le ayuda a escalar sus servidores de aplicaciones en función de la demanda (por ejemplo, número de clientes móviles que descargan & instalando su aplicación).

Habla un poco de marketing: Azure reduce el costo de propiedad de sus propias soluciones porque le quita la inversión inicial para calcular (adivinar) la cantidad de hardware que necesita y luego construir/alquilar un centro de datos y/o hardware. También proporciona algún tipo de middleware para sus aplicaciones, como AppFabric, para que puedan comunicarse en la "nube" un poco mejor. También obtiene equilibrio de carga en Azure, alojamiento distribuido (por ejemplo, centros de datos de Europa, centros de datos de EE. UU ...), mecanismo a prueba de errores ya existente (instanciación de instancia automática si uno falla) y, obviamente, pague sobre la marcha & lo que usa beneficios.

A partir de allí, ASP.NET es un marco de aplicación, específicamente, un marco de aplicación web. Le ayuda a escribir aplicaciones basadas en web usando ocho WebForms o MVC. Por lo que indicó, esto no debería serle de mucha utilidad (solo para ejecutar un sistema de fondo). Pero si necesita una aplicación web además de eso, sí, ASP.NET funciona perfectamente con Azure (obviamente).

Por último, WCF o la Windows Communication Foundation, es otro marco, esta vez por escrito y servicios que consumen. Estos son servicios web u otros, p. Servicios basados ​​en TCP, incluso servicios basados ​​en MSMQ. Esto es, en mi opinión, lo que debería estar buscando para exponer su back-end. WCF le proporciona la capacidad de especificar fácilmente un contrato y la implementación, dejando el alojamiento del servicio y la creación de instancias en IIS (IIS es el servidor web de Microsoft, que también se ejecuta bajo las cubiertas de Azure).

Ahora, para tratar de responder a su pregunta: Me gustaría tener un rol web, alojando un servicio WCF, expuesto en un punto final público. Su aplicación móvil desde allí llamará a este punto final público (definido por una dirección y un puerto, obviamente) y usará servicios web basados ​​en estándares para comunicarse con sus servicios.

¿Tiene esto sentido?

Shameless plus: He escrito sobre estas palabras de moda y whatnots on my blog, which you are welcome to check out.

+0

Gracias! Eso ayuda a poner algunas de las piezas en contexto. Los árboles y el bosque y todo eso. – onnoweb

4

Creo que la mayor parte de lo que está viendo es la forma .NET de hacer las cosas. (ASP.NET y WCF son tecnologías .NET). Windows Azure es una plataforma que puede ejecutar todo tipo de cosas (aunque la mayoría de la gente lo usa para .NET). En una función web de Windows Azure, su código solo se ejecuta bajo IIS (un servidor web), y puede ejecutar ASP.NET, WCF, PHP, etc. dentro de eso.

Creo que la forma más común de construir API REST en Windows Azure es utilizar ASP.NET MVC 3 o WCF para construir un servicio REST y luego alojarlo en una función web. Cómo llegar a los datos publicados en su endpoint depende de la tecnología que use. Bajo ASP.NET MVC 3, es posible escribir algo como:

[HttpPost] 
public ActionResult CreateMessage(string title, string body) 
{ 
    // use title and body here... they'll be the parameters in the HTTP post 
    return Content("Message created!"); 
} 
0

Puede usar Windows Communication Foundation (WCF) para publicar un extremo de servicio. Esto podría ser un punto final SOAP o REST.

Este punto final del servicio estaría alojado en una función web. Puede pensar en un rol web como servidor con IIS.

Una función de trabajador es un poco como un servicio de Windows.

Tome como ejemplo un escenario donde recibirá algunos datos a través de un servicio web, y luego haga algunos cálculos y luego almacene el resultado. En este caso, tendría un rol web con un servicio web que recibiría los datos. Almacenaría los datos en una cola. Un programa en la función de trabajador supervisaría la cola, recogería cualquier dato nuevo, haría el cálculo y almacenaría el resultado en una tabla.