tag:blogger.com,1999:blog-23470706.post8380333347193678756..comments2023-07-21T22:16:46.636-07:00Comments on Developeando: Sobre arquitectura en capas – parte 2Mario H. Cornejohttp://www.blogger.com/profile/01576953695407749789noreply@blogger.comBlogger10125tag:blogger.com,1999:blog-23470706.post-84275313770119312532013-08-08T14:01:24.858-07:002013-08-08T14:01:24.858-07:00En otras palabras solamente es una forma distinta ...En otras palabras solamente es una forma distinta de solucionar ciertos problemas de reusabilidad, claro esta que no esta exenta de introducir otros problemas.<br /><br />Mientras para ti la separacion de responsabilidades la haces a nivel assebly, yo la hago a nivel clases dentro del assembly.Proteo5https://www.blogger.com/profile/03680823483581469431noreply@blogger.comtag:blogger.com,1999:blog-23470706.post-56840663117271839102013-08-08T13:49:23.079-07:002013-08-08T13:49:23.079-07:00BackTigerX
Bueno, mi error, pensé que si ponías c...BackTigerX<br /><br />Bueno, mi error, pensé que si ponías cada assembly en una maquina diferente al considerarlos servicios, por eso lo del comentario de los tiers.<br /><br />Entiendo que separas en varios assemblies las capas y sobre todo la capa de datos descomponerlas en más assemblies de acuerdo al acceso que tengan de diferentes datos.<br /><br />Lo que yo comentaba es que salvo el caso en donde los datos a consumir no estén en el mismo datacenter (o sea que se necesitan consumir los datos de forma remota) yo dejaba en un solo assembly la capa de datos y la de negocios, ya que para la forma en que diseño las aplicaciones la reusabilidad entre sistemas la hago a nivel capa de negocio.<br /><br />Por ejemplo:<br /><br />En base de datos 1 tengo la tabla de usuarios.<br />En base de datos 2 tengo el estatus de las personas en RH.<br />La capa de daos tendrá 2 clase para manipular los datos del usuario (aka CRUD o ABC) una para cada base.<br />De ahí tendré una clase de capa de negocio que consuma a las dos clases de la capa de datos para que haga por ejemplo Verificar login. Allí tendrá todo el código necesario para verificar el login haciendo lo que tenga que hacer (existe usuario y está activo empleado), pidiendo los datos que se necesiten y respondiendo si pasa o no pasa.<br />Creo el assembly con estas dos capas juntas y será llamado seguridad de la empresa.<br />En sistema X cuando necesite hacer login llamo a la capa de negocios que ya tiene programada esta funcionalidad, igual pasaría con una aplicación Y ya que es la parte de negocios la que me interesa reutilizar al tener todo lo habido y por haber relacionado con los usuarios.<br />Si bien puedo separar cada capa y cada componente de la capa de datos en su propio assembly, corro el riesgo que algo que ya se programó en una capa de negocios en aplicación X lo reprograme en Aplicación “Y” creando una segunda capa de negocios y sin la política de RH.<br />No se si me explico?<br />Proteo5https://www.blogger.com/profile/03680823483581469431noreply@blogger.comtag:blogger.com,1999:blog-23470706.post-34755465662091304782013-08-08T12:23:45.316-07:002013-08-08T12:23:45.316-07:00siguiendo con el otro comentario de proteo5, yo me...siguiendo con el otro comentario de proteo5, yo me apego mas al principio de responsabilidad unica, no me gusta mezclar el acceso a LA base de datos con los accesos a otras dependencias externas en un solo assembly, para mi son componentes con responsabilidades totalmente diferentes, y reusables en diferentes contextos. Ahora, me estoy refiriendo meramente a la separacion logica del codigo en assemblies, la 'capa de datos' no tiene que ser un solo assembly.BlackTigerXhttps://www.blogger.com/profile/05376454374607771065noreply@blogger.comtag:blogger.com,1999:blog-23470706.post-5521181418754883412013-08-08T12:14:50.992-07:002013-08-08T12:14:50.992-07:00@proteo5 er... yo no hable de tiers, y por tu come...@proteo5 er... yo no hable de tiers, y por tu comentario ya no me queda claro si conoces la distincion entre capas y tiers, yo solo me referia a que separo cada acceso a *dependencia externa* en su propio assembly, esos no son tiers, en todo caso es una capa de servicios (no hablo de servicios web)BlackTigerXhttps://www.blogger.com/profile/05376454374607771065noreply@blogger.comtag:blogger.com,1999:blog-23470706.post-1013868098107848532013-08-06T12:00:47.152-07:002013-08-06T12:00:47.152-07:00Octavio,
Creo que si es cierto en parte, para los...Octavio,<br /><br />Creo que si es cierto en parte, para los motores actuales de base de datos (mysql, MS Sql, oracle, y por el estilo) ya no es necesario.<br /><br />Sin embargo, una aplicacion se alimenta de datos de maneras adicionales, como comentaba antes, como archivos, webservices, otros dlls (.net, com, Windows API), Mensajes Queue, tcp/ip, webcams (si, las imagenes tambien son datos), lectores de huellas digitales, lectores rfid, por puertos seriales. <br /><br />Todos estos son entradas de datos que deben de interactuar unicamente con la capa de datos, salvo en los casos de que hay algunos dispositivos que los datos los mandan por la capa de presentacion como escaners, lectores de banda magnetica, lectores de codigo de barras.<br /><br />En otras palabras, lo que el sismtema consuma de datos y no intervenga el usuario va en la capa de datos.Proteo5https://www.blogger.com/profile/03680823483581469431noreply@blogger.comtag:blogger.com,1999:blog-23470706.post-41334180420689487852013-08-06T11:49:23.150-07:002013-08-06T11:49:23.150-07:00Black TigerX
Creo que no hay que confundir Capas ...Black TigerX<br /><br />Creo que no hay que confundir Capas con Tiers. No es del todo buena practica poner cada capa en un tier.<br /><br />Normalmente en la forma que yo lo hago es si el proyecto solo es de un solo tipo de nodo pues pongo las tres capas en ese paquete. <br /><br />Solo si digamos un nodo es web y otro winforms porque asi lo requiere el usuario pues hago un paquete dll para la capa de negocios y la capa de datos y un paquete web para presentacion y el otro paquete winforms solo para presentacion.<br /><br />Si la fuente de datos es remota, entonces hago un paquete de servicio para datos.<br /><br />Hay muchas variantes, nada es rigido en cuestion de los tiers, siempre va de acuerdo a los problemas que se busca resolver.Proteo5https://www.blogger.com/profile/03680823483581469431noreply@blogger.comtag:blogger.com,1999:blog-23470706.post-42534134472269212442013-08-06T10:50:32.411-07:002013-08-06T10:50:32.411-07:00Entonces, todo se podría resumir en que "ya n...Entonces, todo se podría resumir en que "ya no es necesario escribir nuestro propio ORM cada vez que se desarrolla una aplicación porque ya hay muchos disponibles"?Octaviohttp://blog.alvarezp.orgnoreply@blogger.comtag:blogger.com,1999:blog-23470706.post-56286569907555327212013-08-05T07:02:27.745-07:002013-08-05T07:02:27.745-07:00@proteo: yo separo cada uno de esos componentes en...@proteo: yo separo cada uno de esos componentes en su propio asembly, no como capa, sino como componentes colaterales (servicios).<br /><br />Con respecto a las capas, estas siguen estando ahi, solo que ahora son implicitas, en muchos casos generadas en tiempo de ejecucion, dependiendo de la libreria que se use.BlackTigerXhttps://www.blogger.com/profile/05376454374607771065noreply@blogger.comtag:blogger.com,1999:blog-23470706.post-73336761913010175072013-08-02T16:32:07.659-07:002013-08-02T16:32:07.659-07:00Muy cierto lo que dice "Proteo5", toda e...Muy cierto lo que dice "Proteo5", toda entrada de datos deberia ser abstraida :)Anonymoushttps://www.blogger.com/profile/12162429439402998498noreply@blogger.comtag:blogger.com,1999:blog-23470706.post-3959218829491818092013-08-02T16:23:52.583-07:002013-08-02T16:23:52.583-07:00Cabe mencionar que la capa de datos no se limita e...Cabe mencionar que la capa de datos no se limita exclusivamente a manejadores de base de datos (MS SQL, MySQL, Oracle, y por el estilo) es buena práctica también poner los accesos a datos desde archivos (txt,excel, CSV,INI) , webservices y todo lo que el manejo externo de datos al programa, de esta forma la capa de negocios jamás será alterada si la fuente del mismo dato cambia digamos de un acceso directo a base de datos a un webservice.Proteo5https://www.blogger.com/profile/03680823483581469431noreply@blogger.com