Cooperator framework

19/06/2006 - 18:25 por Daniel A. Calvin | Informe spam
Amigos, les cuento que hace unos meses empezamos a trabajar con un grupo de
amigos en un proyecto para crear un framework que saque provecho de las
ventajas de .Net 2.0
La idea original fue de Eugenio Serrano y me invito a trabajar junto a el y
otros amigos.
El proyecto es un framewok de desarrollo, seguramente estarán pensando: otro
más :-)
Nos decidimos a hacer este nuevo con la idea principal de que sea bien facil
de usar y de acercar los objetos a mas gente de una forma facil.

Hemos trabajado con mucha energía estos últimos meses y hemos logrado armar
algo muy interesante según nuestra opinion.

Los objetivos que nos planteamos fueron:

- 100% Orientado a objetos
- Aplanar la curva de aprendizaje y facilitar el camino de quienes aún están
condicionados por el modelo relacional.
- No usar datasets
- No usamos reflection.
- Modelo totalmente tipado, esto significa que las clases de persistencia y
recuperacion de objetos devuelven un tipo especifico y no un tipo object.
- Debido a la potencia de VS2005 se pueden bindear estos objetos a los
controles sin escribir una linea de codigo, y aporvechar las venjas de
edicion de VS2005
- No depende de la estructura relacional, soporta cualquier tipo de
estructura de base de datos.
- No hay que modificar la Primary Key o crear un campo unique en las tablas.
- Usa stored procedures.
- Soporta concurrencia
- Las condiciones de busqueda se expresan mediante objetos específicos
tipados y extendibles por el programador que terminan ejecutando un Stored
Procedure en forma transparente.
- En la capa de negocio todo se expresa en términos del dominio, incluido
los filtros y busquedas.
- Genera código en base a scripts escritos en el lenguaje que prefiera el
programador. Por defecto estan en c#, pero puedo escribir un script en c#,
para generar código SQL, o puedo escribir un script en vb.net para generar
código c#.
- Hay un modelo propuesto de las clases que se generaran que se basa en el
modelo de datos, pero el programador, antes de generar las clases edita
dicho modelo en una herramienta muy facil de usar y define como sera el
modelo que desea crear.
- Si las opciones de modelado que provee la herramienta no alcanzan, el
programador puede editar los templates y generar su propio modelo.
- La herramienta de generacion, genera 2 archivos por cada clase usando
clases parciales pensado para que el programador solo modifique una de las
2.
Si mas tarde se agrega un nuevo campo a una tabla, se puede volver a generar
el otro archivo de manera de no "pisar" cualquier codigo que el programador
ya haya escrito en esa clase.
- Soporta transacciones desconectadas.
- Licencia tipo open source, aún no hemos optado por cual, pero será de
código abierto.

Todo esto lo logramos de forma poco invasiva, implementando interfaces y
valiendonos de las nuevas características del net framework 2.0, sobre todo
Generics y clases parciales.

El framework será publicado en un término no mayor a 60 días.

Nos gustaría mucho contar con algún retorno por parte de la comunidad,
principalmente que cosas les molesta de otras herraminetas de este tipo,
incluso que les gustaría tener y aún no han encontrado en otros frameworks.

Desde ya muchas gracias

Daniel Calvin

Preguntas similare

Leer las respuestas

#106 Alfredo Novoa
22/06/2006 - 20:42 | Informe spam
On Thu, 22 Jun 2006 13:23:41 +0200, "sharpman"
<sharpmanNoQuieroSpam_terra.es> wrote:

Hay tropecientos ORM en el mercado.
¿por qué tantos? ¿es que todos dan problemas?



Será por eso. A nadie le acaban de convencer y por eso se ponen a
hacer otros nuevos que siguen sin convencer.

¿y por qué Microsoft saca LINQ
en vez de su propio ORM?



Por que después de haber creado su propio ORM (que seguro que era de
los menos malos) se dieron cuenta de que era una tontería y lo tiraron
a la papelera. Con lo aprendido de ese error crearon LINQ.

¿es LINQ un ORM por dentro como apuntaba Eugenio?
¿hasta que grado?



Algo de ORM tiene, y es uno de sus mayores defectos. En el último paso
todo acaba metido en una lista. Pero la diferencia fundamental con los
ORM es que no es solamente una biblioteca de clases sino que son unas
poderosas extensiones al lenguaje que permiten trabajar con conjuntos
de datos más allá del simple filtrado.

¿Os habeis fijado en que en todos los ejemplos de uso de ORM lo único
que se hace con los datos es filtrar?

Con LINQ y SQL se puede restringir, proyectar, juntar, unir, restar,
agrupar, etc. Esta es una de las diferencias fundamentales. El
artículo del enlace que le puse a Esther lo explica muy bien.

Las principales ventajas de LINQ frente a la forma tradicional de
escribir consultas SQL entre comillas es que las consultas son
verificadas en tiempo de compilación y que hay que escribir menos
código para ejecutar consultas.

Al final LINQ no es mucho más que recuperar la vieja y buena idea del
SQL incrustado.

LINQ está muy lejos de ser perfecto, pero comparado con la práctica
totalidad de los ORM es una maravilla (y el SQL incrustado lo mismo).

¿que pasa si en mi departamento dedicamos dos años a desarrollar sobre
un ORM y luego la cosa no resulta? ¿me voy buscando otro curro?



No necesariamente, puedes vivir de mantener un código lleno de
laberintos de punteros a objetos que solo tu eres capaz de comprender
a duras penas. Para eso los ORM son muy buenos.

Por cierto que yo suelo ver Gran Hermano y acabas de decir que es basura. ¿debo
considerarlo un insulto por tu parte? ;-D



Gran Hermano es completamente inofensivo y un ORM puede hacerle mucho
daño a tu bolsillo por muy gratis que sea.



Saludos
Respuesta Responder a este mensaje
#107 Alfredo Novoa
22/06/2006 - 20:51 | Informe spam
On Thu, 22 Jun 2006 14:11:29 +0200, "Esther Rodriguez"
wrote:

no esta hablando coherentemente. No distingue entre lo que es la integridad
de datos y las reglas de negocio.



No dejas de demostrar públicamente tu ignorancia. "Regla de negocio"
no es más que el equivalente informal de "Regla de integridad".


* También ha puesto ejemplos de reglas de negocio que se pueden plasmar
solo con sql. Para el que le interese ese método, claro.



Nadie ha dicho lo contrario. Yo puedo también crear un formulario con
Assembly, pero de ahí a que sea eficiente o rentable hay un mundo.



Es una buena comparación. Implementar las reglas de negocio con un
lenguaje de 3ª generación como C# en lugar de con uno de 4ª como SQL
es una tontería aun más grande que implementar las reglas de
presentación en un lenguaje de 2ª generación como el ensamblador.

La superioridad en nivel de abstracción de SQL sobre C# 2.0 es mayor
que la de C# sobre el ensamblador.

Por cierto que yo suelo ver Gran Hermano y acabas de decir que es basura.
¿debo
considerarlo un insulto por tu parte? ;-D




A menos que seas el productor, no :)



¡Ahora va a resultar que Esther Rodriguez es la productora del RUP y
nosotros sin saberlo! X-D


Saludos
Respuesta Responder a este mensaje
#108 Esther Rodriguez
23/06/2006 - 00:50 | Informe spam
Algo de ORM tiene, y es uno de sus mayores defectos. En el último paso
todo acaba metido en una lista. Pero la diferencia fundamental con los



¿Si? ¿Todo acaba metido en una lista? ¿Que lista?

¿Os habeis fijado en que en todos los ejemplos de uso de ORM lo único
que se hace con los datos es filtrar?




Pues no. Me he fijado que hacen mucho más.

No necesariamente, puedes vivir de mantener un código lleno de
laberintos de punteros a objetos que solo tu eres capaz de comprender
a duras penas. Para eso los ORM son muy buenos.




Creo que el problema que tiene usted Alfredo es que cree que como ahora LINQ
forma parte del lenguaje, que usted lleva razón con su filosofía de dejar
que el RDBMS controlo las reglas de negocio (que por cierto, no no son
reglas de integridad). Usted no entiende que sigue habiendo capas de
abstracción y que lo único que hace LINQ es facilitar la interacción con los
datos, no eliminar capas.

Me gustaría saber mucho sobre que sistemas desarrolla usted porque no todo
se base en un RDBMS.

Gran Hermano es completamente inofensivo y un ORM puede hacerle mucho
daño a tu bolsillo por muy gratis que sea.




Una mente cerrada y prepotente también hace daño al bolsillo ya que limita
las capacidades de uno para desarrollarse profesionalmente. Pero en fin,
eso es otro tema.
Respuesta Responder a este mensaje
#109 Ricardo Passians
23/06/2006 - 04:01 | Informe spam
forma parte del lenguaje, que usted lleva razón con su filosofía de dejar
que el RDBMS controlo las reglas de negocio (que por cierto, no no son
reglas de integridad). Usted no entiende que sigue habiendo capas de
abstracción y que lo único que hace LINQ es facilitar la interacción con
los datos, no eliminar capas.

Me gustaría saber mucho sobre que sistemas desarrolla usted porque no todo
se base en un RDBMS.




Estamos hablando de sistemas de información, y por tanto centrados en los
datos.

Para mi "regla de integridad" no es en definitiva un concepto bien definido
ni absoluto. Como usted misma dice, todo depende del nivel de abstracción.
Es relativo. Algunos dirán que la exigencia (NOT NULL) de la columna
LimiteDeCredito de la tabla CLIENTE es una regla de integridad.
Otros dirán que es una regla de negocio porque la BD no sabe ni entiende la
razón de esa exigencia declarativa.

Dónde termina una "regla de integridad" y empieza una "regla de negocio" ?
Para mí no es claro determinarlo. Depende de hasta donde se detalle el
asunto.

Mi punto de vista es que la mayor cantidad de "reglas" (i o n) posible debe
delegarse a la propia base de datos pues así la aplicación simplifica su
mantenimiento en un mundo donde las reglas son cambiantes en el tiempo.

Capa de negocios mmm... no deja tampoco de ser un concepto impreciso y
no necesariamente físico.

Saludos
Respuesta Responder a este mensaje
#110 Daniel A. Calvin
23/06/2006 - 04:14 | Informe spam
Estimados colegas

tal vez enviar el email que genero toda esta polémica ha si sido un error.
les pido disculpas a todos

les cuento que sinceramente lo unico que esperaba del envio era recibir el
retorno de que características esperaban, quienes adoptan el tipo de
arquitectura propuesta en Cooperator, encontrar en alguna herramienta de
este tipo. solo eso.

mis sinceras disculpas

atentemente

Daniel



"Daniel A. Calvin" escribió en el mensaje
news:%
Amigos, les cuento que hace unos meses empezamos a trabajar con un grupo
de
amigos en un proyecto para crear un framework que saque provecho de las
ventajas de .Net 2.0
La idea original fue de Eugenio Serrano y me invito a trabajar junto a el
y
otros amigos.
El proyecto es un framewok de desarrollo, seguramente estarán pensando:
otro
más :-)
Nos decidimos a hacer este nuevo con la idea principal de que sea bien
facil
de usar y de acercar los objetos a mas gente de una forma facil.

Hemos trabajado con mucha energía estos últimos meses y hemos logrado
armar
algo muy interesante según nuestra opinion.

Los objetivos que nos planteamos fueron:

- 100% Orientado a objetos
- Aplanar la curva de aprendizaje y facilitar el camino de quienes aún
están
condicionados por el modelo relacional.
- No usar datasets
- No usamos reflection.
- Modelo totalmente tipado, esto significa que las clases de persistencia
y
recuperacion de objetos devuelven un tipo especifico y no un tipo object.
- Debido a la potencia de VS2005 se pueden bindear estos objetos a los
controles sin escribir una linea de codigo, y aporvechar las venjas de
edicion de VS2005
- No depende de la estructura relacional, soporta cualquier tipo de
estructura de base de datos.
- No hay que modificar la Primary Key o crear un campo unique en las
tablas.
- Usa stored procedures.
- Soporta concurrencia
- Las condiciones de busqueda se expresan mediante objetos específicos
tipados y extendibles por el programador que terminan ejecutando un Stored
Procedure en forma transparente.
- En la capa de negocio todo se expresa en términos del dominio, incluido
los filtros y busquedas.
- Genera código en base a scripts escritos en el lenguaje que prefiera el
programador. Por defecto estan en c#, pero puedo escribir un script en c#,
para generar código SQL, o puedo escribir un script en vb.net para generar
código c#.
- Hay un modelo propuesto de las clases que se generaran que se basa en el
modelo de datos, pero el programador, antes de generar las clases edita
dicho modelo en una herramienta muy facil de usar y define como sera el
modelo que desea crear.
- Si las opciones de modelado que provee la herramienta no alcanzan, el
programador puede editar los templates y generar su propio modelo.
- La herramienta de generacion, genera 2 archivos por cada clase usando
clases parciales pensado para que el programador solo modifique una de las
2.
Si mas tarde se agrega un nuevo campo a una tabla, se puede volver a
generar
el otro archivo de manera de no "pisar" cualquier codigo que el
programador
ya haya escrito en esa clase.
- Soporta transacciones desconectadas.
- Licencia tipo open source, aún no hemos optado por cual, pero será de
código abierto.

Todo esto lo logramos de forma poco invasiva, implementando interfaces y
valiendonos de las nuevas características del net framework 2.0, sobre
todo
Generics y clases parciales.

El framework será publicado en un término no mayor a 60 días.

Nos gustaría mucho contar con algún retorno por parte de la comunidad,
principalmente que cosas les molesta de otras herraminetas de este tipo,
incluso que les gustaría tener y aún no han encontrado en otros
frameworks.

Desde ya muchas gracias

Daniel Calvin

Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida