2012-01-27 15 views
13

Para obtener un poco de perspectiva, hemos estado utilizando formularios web ASP.NET por edades.¿[HTML5 + jQuery] (no ASP.NET) + WCF es una solución válida para una aplicación web de nivel empresarial?

También conocemos los beneficios de MVC sobre los formularios web, sin embargo, se lanza una opción alternativa que consiste en eludir todas esas capas de abstracción y pasar de una página .HTML pura al servicio WCF.

No .ASPX, no .cshtml/.vbhtml, solo archivos .HTML puros para evitar la lógica y la representación del servidor. Esa es la idea sugerida por algunos, y cada vez es más atractiva con HTML5 y sus características. La capacidad de apuntar a más dispositivos teniendo un control total sobre el HTML también es un factor determinante.

Sé que es factible desde un punto de vista técnico, especialmente con jQuery haciendo las cosas mucho más fáciles, pero me preocupa que al tirar toda la abstracción del lado del servidor (código subyacente en formularios web, controlador y vista) vinculante en MVC) terminaremos haciendo más plomería de la cual no tuvimos que preocuparnos previamente.

La cuestión se reduce a:

  1. ¿Es una preocupación válida, y si es así qué tipo de cañerías podríamos terminar haciendo?
  2. ¿Qué es exactamente lo que podríamos perder lanzando todo el framework ASP.NET a un lado (desde el lado de la aplicación web) y simplemente confiando en la comunicación directa a nuestro servicio WCF desde páginas HTML puras?

Nota: He utilizado el término 'nivel empresarial' recalcar que esto no es un simple aplicación web con unas pocas páginas en las que la decisión definitiva de la arquitectura subyacente es irrelevante, estamos hablando de gran aplicación culo aquí :)

Editar: para ser más claro, las principales áreas que son de interés para nosotros en este enfoque son:

  • autenticación y Autor ization -> MVC maneja esto de una manera muy directa con los atributos (p. AuthorizeAttribute), este enfoque "estático" significa que la WCF tendrá que manejar tokens, encriptarlos/descifrarlos y decidir quién puede hacer todo por su cuenta mientras mantiene toda esta información en cada llamada. ¿Es esta la única solución?

  • Separación de preocupación -> MVC hace claramente que, y lo hace muy bien puede que añadir. Sin embargo, este enfoque te obliga a escribir explícitamente en tu HTML cuál es la llamada a la función WCF. Entonces, no solo su capa de presentación maneja qué dibujar, sino que también tiene incorporada la lógica de qué llamar para obtener sus datos y cómo distribuirlos en la página. Esto puede no ser tan importante, pero en contraste, ViewBag en MVC le brinda la opción de tener sus URL de servicio WCF como una propiedad dinámica, lo que significa que la lógica ahora es parte de su controlador y no su página HTML. Cambiar esa lógica exime la molestia de pasar por páginas HTML por completo.

  • Encuadernación & Validación -> He puesto estos dos en la misma cesta, porque en última instancia, una vez que el servicio WCF responde con un objeto JSON que contiene toda la información de mi página necesita para funcionar (incluyendo las reglas de validación) alguien va tiene que unirlo a esos controles inactivos.

Espero que la idea sea lo suficientemente clara, y gracias de antemano.

Respuesta

3

No ha "lanzado toda la abstracción del lado del servidor", está dividiendo la funcionalidad de forma diferente a una aplicación web estándar. La abstracción del lado del servidor ahora proviene del servicio WCF que está suministrando datos al nivel de presentación

Deberá usar las API de estilo web para devolver el JSON y facilitar el consumo, y sugeriría utilizar la nueva API web para eso, ya que le da un control detallado sobre la interacción HTTP que estaba un tanto oculta en implementaciones REST previas en WCF

Obviamente, seguir esta ruta no es una bala de plata; aún tendrá que preocuparse por los viajes de ida y vuelta (Sería muy fácil tener partes compuestas de su UI web haciendo llamadas separadas al backend para datos que terminan con páginas muy lentas de renderizar. Pero desde el punto de vista arquitectónico no hay ninguna razón por la cual este enfoque sea particularmente menos restrictivo que tener una aplicación web tradicional.

Probablemente, el único inconveniente es que para cada página habrá al menos dos recorridos de ida y vuelta - uno para obtener el HTML + JS y el otro para que el JS obtenga los datos - con una aplicación web tradicional solo hay una ida y vuelta para lograr lo mismo que los datos se carga del lado del servidor cuando se realiza la página en primer lugar

+1

Es cierto que la abstracción ahora reside en el WCF. En cuanto a la nueva API web, ha estado bajo nuestro radar desde hace un tiempo y es una herramienta muy buena para esta solución. No estamos tan preocupados por el todo "cómo comunicarnos con WCF y con qué", sino más como "¿De qué tenemos que preocuparnos ahora que estamos escribiendo páginas estáticas?" Algunas preocupaciones: implican seguridad, como autorización y autenticación. – Alucardz

+0

... validación, gestión de sesión, posible localización, etc. ... No estoy diciendo que esto no sea factible, por supuesto que WCF puede manejarlo perfectamente bien, pero al hacerlo no estamos "reinventando" la rueda "por así decirlo? – Alucardz

+0

"Probablemente el único inconveniente es que para cada página habrá al menos dos recorridos de ida y vuelta", no es un problema si toda la interacción del usuario estándar está anidada en una sola página. –

2

Puede consultar algunas bibliotecas js más avanzadas como KendoUI por ejemplo, que harán la mayor parte de la instalación de fontanería para usted. Puede disfrutar de algunas características realmente geniales, que los desarrolladores de ASP.NET han usado con el código del lado del servidor, listas para utilizar solo con el código del lado del cliente. El marco aún está en desarrollo y puede esperar que aparezcan más funciones interesantes.

dislaimer: Trabajo en Telerik, aunque no participe directamente en el producto y también lo usamos internamente. No soy del equipo de ventas ni del desarrollo, solo creo que es justo lo que necesitas.

+0

Gracias por su respuesta. – Alucardz

+0

Hemos considerado usar KendoUI y Sencha también. Esto, sin embargo, solo responde a la parte de la interfaz de usuario del problema, con el que realmente no tenemos ningún problema, hay muchos frameworks geniales como los que mencionaste. – Alucardz

Cuestiones relacionadas