.net - una - ¿Cuáles son las ventajas y desventajas de usar servicios sobre componentes?
tagxedo ventajas y desventajas (3)
En los últimos meses, estoy trabajando en proyectos en los últimos frameworks net net.
Creo que en las últimas versiones de dot net se alientan los "servicios" sobre los componentes. ¿Es eso correcto?
He visto en luz plateada (soy un principiante en luz plateada) todas las operaciones de la capa DB están expuestas como servicios. No sé ahora que los programas de componentes también están disponibles?
¿Cuáles son las ventajas? ¿Qué pasa con el rendimiento si todas las capas están expuestas como servicios en lugar de DLLS?
Por favor, a través de un poco de luz sobre este tema, ¿dónde debería comenzar a entender este concepto correctamente?
Gracias
CAROLINA DEL SUR
Algo más que debe tener en cuenta: el hecho de que la funcionalidad esté expuesta como un "servicio" no significa que deba estar alojado en algún lugar o expuesto como un servicio web.
Podrías acceder muy bien a un servicio directamente, en la memoria.
Exponer la funcionalidad relacionada como un servicio se trata más de la interacción entre varias piezas de su aplicación. No dice nada sobre cómo desplegar / acceder a estas piezas.
La compatibilidad con "idiomas cruzados" es otra ventaja. Puede escribir un servicio en C # .net al que se puede acceder también desde Java. Entonces la reutilización va más allá del uso del lenguaje de programación.
¿Cuáles son las ventajas? ¿Qué pasa con el rendimiento si todas las capas están expuestas como servicios en lugar de DLLS?
Prestaré atención a este punto aquí. ¿Qué quieres decir con "todas las capas"? ¿Capas de aplicaciones como Business and Data Access Layer? Dudo que esto pueda ser útil (por supuesto depende de su contexto) pero, por lo general, un servicio es algo que puede reutilizarse en muchos contextos diferentes. Un ejemplo podría ser un servicio para validar el código fiscal. Luego, llamaría a este servicio desde la capa de negocios de su aplicación. No puedo imaginar un caso en el que exponga la capa empresarial como servicio separado y la capa de acceso a datos como otra capa separada. Por lo general, son bastante específicos para su aplicación que está desarrollando. Lo que podría suceder es que tenga una aplicación que, por ejemplo, se puede acceder a través de la web (como aplicación web) y hay otro punto de entrada a través de un servicio web que otras aplicaciones pueden usar (algún tipo de API). Eso tendría sentido, sin embargo, no expondría directamente su capa de negocios sino que crearía algún tipo de "puerta de enlace" que es su servicio web (una fachada liviana que delega en sus clases de lógica de negocios).
Todo tiene que ver con una arquitectura orientada a servicios, algo que ha sido común durante un tiempo y es muy popular.
La idea es que las distintas operaciones estén desacopladas entre sí para que puedan ser reutilizadas y modificadas sin volver a compilar las aplicaciones que lo utilizan. En lugar de una pieza de código en una DLL que se está modificando y copiando en todas partes, se puede implementar un servicio que represente un único punto de acceso para una pieza particular de procesamiento o fuente de información.
Supongamos que tiene un componente de validación de tarjeta de crédito. Puede escribir este código y compilarlo en una DLL y comenzar a incluir eso en todas sus aplicaciones. No hay problema con eso a menos que notes un error o cambien las reglas para la validación de CC. O tal vez desea actualizarlo para verificarlo contra una lista negra. No puede hacer ninguna de esas cosas sin recompilar las aplicaciones que lo usan.
Sin embargo, si la validación de su tarjeta de crédito se expone como un servicio, puede realizar los cambios e implementarlos en una ubicación. Siempre que la firma sea la misma (los mismos parámetros y respuesta), las aplicaciones ni siquiera tienen que saber que ha cambiado.
Otra ventaja de usar servicios sobre componentes es que los servicios pueden alojarse en cualquier lugar. Pueden estar en el servidor local o en el otro lado del mundo.
Habiendo dicho esto, como todo, debería decidir la arquitectura caso por caso. Si bien la validación de la tarjeta de crédito fue un buen ejemplo de cuándo un servicio es útil, proporcionar un servicio para representar controles HTML no tiene mucho sentido.