2010-05-21 25 views
5

Estoy manteniendo una aplicación que actualmente es solo un servicio web (construido con WCF) y un servidor de bases de datos. El servicio web está construido en capas con una parte de acceso a datos de linq a sql con funcionalidad central en un ensamblaje propio y, además de eso, el ensamblado de servicio web que contiene el código WCF. El ensamblaje central también maneja todas las reglas de lógica de negocios (muy pocas en realidad).Arquitectura para la nueva aplicación web ASP.NET

El cliente ahora quiere una interfaz web para la aplicación en lugar de simplemente acceder a ella a través de otras aplicaciones que consumen el servicio web. Estoy bastante perdido en el diseño de aplicaciones web modernas, por lo que me gustaría obtener algunos consejos sobre qué arquitectura y marcos utilizar para la aplicación web. La aplicación web usará el mismo ensamblaje de núcleo con reglas de negocio y la capa de acceso a datos de linq a sql como el servicio web.

Algunos conceptos que he pensado son:

  • ASP.NET MVC (o MVC-2)
  • Webforms
  • AJAX controla - posiblemente leting los controles AJAX acceder al servicio web existente a través JSON.

¿Hay algún otro concepto que deba analizar? ¿Cuál es el mejor para un proyecto nuevo?

Las herramientas de desarrollo son Visual Studio 2008 Team Edition para Desarrolladores que se dirigen a .NET 3.5. Una actualización a Visual Studio 2010 Premium (o tal vez incluso Ultimate) es posible si ofrece algún beneficio.

+0

se recomienda usar .NET 4 si es en absoluto una opción. Ha habido muchas mejoras en WinForms y WCF. – R0MANARMY

+0

@ R0MANARMY ¿podría proporcionar una fuente que enumere las mejoras para WCF/WinForms? –

Respuesta

11

Definitivamente cavar en ASP.NET MVC2.

Todos nuestros proyectos se están desarrollando con ASP.NET MVC2. No es solo altamente escalable. Es altamente testable también. Lo que conduce a aplicaciones mucho mejores mantenibles a largo plazo.

WebForms vs. puntos MVC2 - (hablando de la experiencia):

Escalabilidad:

En nuestra empresa hemos tenido una gran cantidad de aplicaciones que utilizan formularios Web que luego fueron actualizados y modificados por nosotros, según sea necesario por nuestros clientes

Creo que su cliente solicitará más cambios en la aplicación en un futuro próximo. Hacer llamadas a otros servicios, y tal vez tendrá que volver a trabajar partes del producto final para que coincidan con sus deseos.

Y con la próxima plataforma Cloud Computing y la plataforma Windows Azure probablemente necesite mantenerse al día con su código.

ASP.NET MVC es totalmente compatible con el concepto de poder ampliar su aplicación en cualquier momento que desee.

Recuerdo que uno de nuestros clientes se acercó a pedirme una extensión para su aplicación (tienen un sistema de administración de miembros) y la función contendría algo así como un enlace para exportar la vista actual como un archivo csv para que podría hacer cosas de oficina con él (principalmente cartas en serie).

No fue realmente un gran problema establecer esa función. (Tardó alrededor de 2 horas, incluyendo pruebas de escritura) - vamos a pruebas:


Comprobabilidad:

Usando WebForms verdad es que no tenemos pruebas de escritura interés mucho porque era un puro dolor que hacer asi que. Recuerdo haber escrito algunas pruebas para tener al menos algunas pruebas, pero descartemos ese tema ... (: p)

Tuvimos pruebas para nuestras clases personalizadas pero no pudimos probar todas las manejadores de eventos dentro de WebForms.

Nuestro CodeBase es mucho más limpio y ahorrador de usar gracias a este entorno comprobable. Acabo de ver algo del código, modificarlo, ejecutar todas las pruebas y: ¡Oh, rompió un comportamiento extraño! - Arreglemos eso de nuevo. Antes, recuerdo estar sentado con mi compañero de trabajo depurando e intentando encontrar esos errores durante horas.

Con ASP.NET MVC2 ahora somos sin pruebas! Preguntamos a todo tipo de personas (incluso las que no son de la Web) para proporcionar casos de prueba que podríamos incluir en nuestro TestSuite.

Y sí, hay algunos AJAX-Controls también:


AJAXability:

Usted preguntó acerca de controles AJAX y en conjunción con ASP.NET MVC le recomiendo a la salida Telerik ASP.NET MVC UI Controls.

Si eso no es algo para usted, sino que también hacen un amplio uso de jQuery y jQuery UI

con ASP.NET MVC y las Vistas HTML, las bibliotecas no son sólo un placer de usar, que acaba de ver increiblemente hermoso.

Ya no hay autogeneración random-html-tag-id-value!

Pero lo que más me gusta es: finalmente puedes reutilizar tu código nuevamente.


Hay mucho más en esas estructuras que solo eso, existe el sistema de plantillas T4. Auto-Andamio para sus ViewModels/DomainModels con el método Html.EditorFor() y por supuesto no es una gran manera y fácil de usar y las IoCDI paradigmas.

Suponiendo que ha hecho la pregunta con etiquetas relacionadas principalmente con .NET Framework, probablemente se quede con ella.

sólo para mantener el cargo completo, también hay otros marcos que son igual de bueno (o incluso mejor):

And many many more!

+0

+1 para una gran visión general con explicaciones y motivaciones. –

1

También hay DynamicData que pueden ser apropiados si necesita acceso CRUD simple a sus datos.

+0

DynamicData parece interesante, pero lamentablemente mis necesidades en este proyecto son un poco más avanzadas que las de CRUD simple en función de las entidades exactas en la base de datos. –

-1

Sólo mi opinión a utilizar MVC en los sitios del cliente y Web Forms dentro de las páginas de administración (sitio)

+0

Si tiene convenciones de entrada/html, no podrá usarlas en su sección de administración. También podría tener dificultades para que su CSS funcione en ambas secciones. ¿Qué pasaría si estuviera haciendo seguridad con AuthenticationFilters? ¿Cómo los usaría en la sección WebForms? (Claro que es posible, pero con MVC "simplemente funciona"). Lo mejor es elegir una tecnología y mantenerla a menos que tenga un caso de uso muy específico que requiera algo diferente. – Ryan

0

El Web Service Software Factory (WSSF) puede ser útil en su situación.

Esto le permitirá definir sus contratos (entidad XML devuelta (si XML elige), etc.) mientras diseña la comunicación servidor/cliente utilizando WCF (o el protocolo de comunicación de servicios web estándar).

WSSF favorece ASP.NET MVC o ASP.NET MVP. Se muestra un ejemplo simple de la arquitectura MVPhere, más this article.

En cuanto a mí, a menudo vengo con una arquitectura híbrida con un poco de ambos MVC y MVP, ya que ambos tienen diferentes puntos fuertes que combinados se complementan mutuamente puntos de mejora.

Cuestiones relacionadas