23 jul 2009

¿Múltiples Webservices o un único con muchos Webmethods?

Mi amigo Natacuin, gran programador aunque últimamente más del lado de la administración, planteo hace poco esa pregunta: se debe utilizar un único webservices con muchos webmethods o es preferible por rendimiento partirlos en varios webservices con menos webmethods.

El mismo Natacuin buscó su respuesta planteándose un escenario y una serie de pruebas reseñables las cuales se encuentran en esta entrada de su blog para consulta y mayor detalle.

La conclusión a la que llegó es que "Las diferencias existen pero no son abismales, lo que significa que para que el rendimiento sea un factor a tomar en cuenta, los request por segundo al sistema deben ser miles ". Y que la recomendación es que es preferible usar múltiples webservices, lo cual también puede redundar en otros beneficios como en un mayor orden ya que se pueden agrupar en un webservice los webmethod afines, logrando asu vez facilidad de mantenimiento e incluso de programación por cuanto se pueden atender varios webmethods por varias personas sin pensar en la consistencia del código en el caso de que no se contase con una herramienta que lo controle por nosotros.

Roy {aka. Foy}

Autor & Editor

Desarrallador y líder técnico, con experiencia en tecnologías Microsoft desde los tiempos del VB6 y el asp clásico hasta el .Net Core, pasando por COM+, javascript, angularjs, Ionic, xaml, cordova, MVC, Web Api, Sql Server, Oracle... . Ávido lector, apasionado programador.

1 comments:

Dalorzo dijo...

Hay varios temas que tomar en cuenta cuando se diseña una arquitectura de servicios:
Lo primero que considerar, es los temas generales:

1. Seguridad, quienes van a tener accesso a que?.
2. Comunicacion(DataSets o clases ( in| out)), se refiere a que se recibe y envia.

Ahora como agrupar los metods, para mi la respuesta viene de los "Patrones de Diseño", hay varios patrones que puede aplicar pero de los que seguro aplican son: Facade y Proxy.

Por ejemplo:
[Clases.Metodo]

[ReservacionesFacade]
Hotel.HacerReservacion(Persona)
Hotel.CancelarReservacion(Persona)
Hotel.VerReservaciones(Persona)

[AdministracionFacade]
Hotel.VerReservaciones(Persona)
Hotel.PagarReservacion(Persona, Tarjeta)

Hay 2 webservices que comparten un metodo, pero agrupados para exponer un "Servicio" diferentes.