2009-04-21 15 views
6

Yo trabajo para una gran agencia del gobierno estatal que es un poco detrás de los tiempos. Nuestras habilidades están desactualizadas y las congelaciones presupuestarias impiden cualquier capacitación o contratación de nuevos empleados/consultores (despedir personas también es imposible). El diseño de objetos comerciales, la implementación de patrones de diseño, el establecimiento de bibliotecas de códigos y servicios, pruebas de unidades, control de fuentes, etc. son todas las cosas que no encontrará que se hagan aquí. Somos tan 0 en Joel Test como posiblemente puedas obtener. ¡La buena noticia es que solo podemos subir desde aquí!Saltando a la arquitectura N-Tier con WCF?

Desarrollamos aplicaciones CRUD de escritorio (en C++, C# o Java) que llegan directamente a la base de datos de Oracle a través de una conexión ODBC. Básicamente, la GUI está llena de sentencias SQL y código de patchwork. Se nos ha dicho que avancemos hacia una arquitectura de n niveles orientada a servicios para evitar el acceso directo a la base de datos y eliminar la necesidad de Oracle Client en las máquinas de los usuarios.

¿Es WCF el camino hacia el que deberíamos bajar? Hemos realizado algunos de los tutoriales de aplicación de n niveles (como this one) y parecen fáciles de implementar, pero no sabemos lo suficiente como para saber si estamos considerando las tecnologías correctas. Utilizar los DataSets mecanografiados en .NET parece una buena solución para ahorrarnos meses/años de trabajo (en lugar de crear nuevos objetos comerciales desde cero para numerosos proyectos). ¿Es este enfoque enlatado viable para un primer paso?

+1

Gracias por la contribución de todos. Parece que podemos seguir adelante con una prueba de concepto completa. Dado que tantas respuestas se hicieron eco de la misma cosa, simplemente fui con la primera. – BikeMrown

Respuesta

4

Recientemente comencé a usar servicios WCF para mi capa de datos en algunas aplicaciones web y debo decir que es frustrante al principio (la primera semana más o menos), pero vale la pena una vez que se implementa el código.

Primero debe probar con una pequeña aplicación existente, o tal vez una prueba de concepto para asegurarse de que se ajuste a sus necesidades.

Por la descripción del entorno en el que se encuentra, estoy seguro de que se dará cuenta del beneficio casi de inmediato.

+0

¿Podría responder http://stackoverflow.com/questions/9498962/contract-first-soa-designing-business-domain-wcf? – Lijo

2

La última compañía para la que trabajé eligió WCF por casi la misma razón que usted describe anteriormente. Hay una gran cantidad de documentación y libros buenos para WCF, es relativamente fácil trabajar y WCF admite muchas opciones de configuración.

Puede haber algunos dolores de cabeza cuando comienza a tratar de hacer que WCF funcione de una manera no específicamente diseñada de la caja. Estos son generalmente problemas de configuración. Pero sitios como este o IDesign pueden ayudarlo a través de ellos.

+0

¡Gran página web que aún no había visto, gracias! – BikeMrown

+0

¿Podría responder http://stackoverflow.com/questions/9498962/contract-first-soa-designing-business-domain-wcf? – Lijo

2

En primer lugar, sin duda no (lo siento por el énfasis) preocuparse por el tiempo que ahorrará usando mecanografiadas DataSet 's frente a crear sus propios objetos de negocio. Por lo general, no es allí donde pasará la mayor parte de su tiempo de desarrollo. Prefiero usar objetos comerciales yo mismo.

En su situación, me gustaría implementar primero una prueba de concepto. Uno que aborda todos los problemas que pueda enfrentar. Esta prueba de concepto debe implementar un caso de uso completo, comenzando en el cliente, recuperando datos de la base de datos y devolviéndolos al cliente. Debe sentirse seguro acerca de su implementación antes de continuar.

Luego, sobre la elección de la tecnología. WCF es definitivamente una buena opción para la comunicación entre sus aplicaciones cliente y la capa de servicio. Supongo que tanto sus clientes como su capa de servicio se convertirán en aplicaciones de C#. Eso hace las cosas mucho más fáciles ya que la interoperabilidad entre diferentes plataformas (Java/C# por ejemplo) aún no es trivial, aunque debería funcionar en la mayoría de los casos.

+0

Sí, las capas de cliente y servicio se moverán a C# exclusivamente. Veo tu punto acerca de los objetos comerciales. Acabo de imaginar que los conjuntos de datos tipeados pueden hacer que la transición sea menos desalentadora para algunos de nuestros desarrolladores a medida que aprenden más sobre el diseño de objetos. – BikeMrown

+0

No estoy de acuerdo con que los conjuntos de datos mecanografiados le enseñen más sobre el diseño orientado a objetos, sino todo lo contrario. Son una capa delgada alrededor de un DataReader y mucho sucede detrás de escena para que funcionen de la manera en que lo hacen. No es una tecnología realmente transparente y bastante compleja una vez que empiezas a usarla. –

+0

Mi comentario puede haber sido engañoso. Estoy de acuerdo con usted acerca de los conjuntos de datos tipeados y los conflictos conflictivos. Me refería a los conjuntos de datos tipeados como un recurso provisional para hacer que su proyecto avance, no como una experiencia de aprendizaje para objetos comerciales. Tu punto hace que me pregunte si solo los confundirá por la naturaleza opaca/compleja de la tecnología. – BikeMrown

2

Eche un vistazo a Entity Framework (ya que hay un par de proveedores de Oracle disponibles para él) en conjunto con .NET 3.5 SP1 que habilita la serialización incorporada WCF de sus clases generadas por EF.

Aquí es un buen blog para empezar: http://blogs.msdn.com/dsimmons

2

CSLA podría ser una buena opción para sus aplicaciones de escritorio de N-Capas. Es compatible con WCF, tiene una gran comunidad de desarrolladores y está bien documentada. Está muy orientado a objetos.

+0

¡Muy interesante! Aún no me había encontrado con CSLA y parece bastante prometedor. Gracias por el consejo. – BikeMrown

+0

Un buen aspecto de CSLA es que puede elegir utilizar Remoting, WCF o un protocolo personalizado simplemente cambiando la configuración, no su código. En un par de años, Microsoft podría tener otro marco de comunicaciones preferido. CSLA puede darle a su aplicación algo de aislamiento de esto. –

+0

¿Podría responder http://stackoverflow.com/questions/9498962/contract-first-soa-designing-business-domain-wcf? – Lijo

Cuestiones relacionadas