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

#26 Vyacheslav Popov
20/06/2006 - 20:17 | Informe spam
Daniel, perdona por el mal entendido, pero sigo sin comprender, que es lo
que hace Cooperator.

¿Te importa poner un ejemplo?

Saludos.

"Daniel A. Calvin" escribió en el
mensaje news:
Hola, lamento que llegues a una conclusion tan apresurada.
WCF te permite definir el transporte de objetos, abstaryendote de detalles
tales como protocolos y una serie de detalles adicionales.

Cooperator no utiliza reflection para ninguna de las cuestiones que
mencione
en el email inicial.

Que WCF la utilice no quiere decir que lo dicho antes sea falso.

De todas formas si incluimos el layer para implementar aplicaciones
distribuidas usamos reflection para crear el transporte.
Solo para eso, no invocamos metodos ni propiedades por reflection.
Todo en el framework es totalmente tipado.

La creación de la capa de transporte usa reflection solo si queres que la
misma sea configurable y solo la usa para instanciar ese objeto.

Y te invito a que tu frase:
" - No usamos reflection" es falsa!



la publiques cuando veas el producto funcionando.

No es nuestra intención mentir ni mucho menos.

Gracias

Daniel A. Calvin
MCP


"Vyacheslav Popov" escribió:

>> ¿Cuales son las nuevas características frente a ORM existentes, tales
>> como, NHibirnate, ObjectMapper.Net, etc..?
>
> Cooperator no es un ORM, va a ir un paso mas alla, vas a poder
> integrar
> facilmente WWF y WCF.
> En la segunda versión que publiquemos, tal vez, solo tal vez, incluira
> algo para implementar aplicaciones distribuidas en forma transparente.
>
> Algo asi como un WCF del sub-desarrollo.. ;-)

WCF esta orientado a programación basada en atributos. La programación
basada en atributos se consigue gracias a reflection. Luego, la
declaración
" - No usamos reflection" es falsa!



Respuesta Responder a este mensaje
#27 Vyacheslav Popov
20/06/2006 - 20:24 | Informe spam
Entonces, si no se utiliza reflection habrá que crear, como mínimo, para
cada una de las clases de dominio los métodos CRUD en la fachada de
persistencia, crear un adaptador correspondiente y pasarle el control.

Si es así, con un poco de reflection se podría ahorrar muchas líneas de
código. ¿no?

Saludos.

"Daniel A. Calvin" escribió en el
mensaje news:
Hola Lluís

Supongamos que tienes que manejar Facturas de ventas o Remitos o cualquier
documento del tipo maestro detalle.

Cooperator te permite definir objetos del dominio.

Tendrás una Facade que te entregara esos objetos completos o parcialmente
segun lo necesites, pero como una entidad única.

Y si necesitas una lista de ellos te brindará una coleccion de esos
objetos.

Tu esquema con datasts es datacentrico esto es mas OOP.



Daniel A. Calvin
MCP


"Lluís Franco" escribió:


:-)
Hola Daniel,

Una estupenda iniciativa!
Ardo en deseos de empezar a probarlo.
Sólo una pregunta: Si no utilizáis DataSets ¿cómo manejáis las
estructuras
maestro/detalle? Sobre todo la parte de las actualizaciones...

Saludos,

Lluís Franco i Montanyés
[MS-MVP-MCP Visual Basic]
Web: http://www.uyssoft.com
Blog: http://msmvps.com/lfranco
(Guía de netiquette del foro)
http://www.uyssoft.com/MSNews.aspx?sm
FIMARGE, S.A.
Principat d'Andorra

Tel.: +376 805 100
Fax: +376 824 500
Mi Perfil MVP en:
https://mvp.support.microsoft.com/profileaa1615-1a2f-4202-bc3f-aec297d967d2
This posting is provided "AS IS" with no warranties, and confers no
rights.
Este mensaje se proporciona "COMO ESTA" sin garantias y no otorga ningun
derecho




Respuesta Responder a este mensaje
#28 Daniel A. Calvin
20/06/2006 - 20:25 | Informe spam
Hola Alfredo

No hemos inventado nada, la rueda cuadrada a la que haces referencia tiene
muchos años de aplicación.

Si lees Proceso Unificado, los Patrones del GoF y algunas otras cosas, la
mayoría muy bien documentadas y formalizadas en la decada del 90'.

Vas a ver que esta rueda cuadrada existe y se usa en lugares donde la rueda
redonda no permitía implementar soluciones escalables, mantenibles, etc, etc.

De todas formas la intención no es polemizar.

Cooperator no inventa este tipo de prácticas, simplemente es una herramienta
para que, quien quiere adoptar ese estilo o arquitectura, lo pueda hacer con
un poco de facilidad.

Saludos

Daniel A. Calvin
MCP


"Alfredo Novoa" escribió:

On Tue, 20 Jun 2006 06:18:49 -0400, "Carolina Alvarez"
wrote:

>>
>>Modelo totalmente tipado, esto significa que las clases de persistencia y
>>recuperacion de objetos devuelven un tipo especifico y no un tipo object
>>
>
>Tiene ventajas reales ese esquema ?

Claro que no, es otra vez la rueda cuadrada.

Respuesta Responder a este mensaje
#29 Daniel A. Calvin
20/06/2006 - 20:26 | Informe spam
Hola Diego

Por ahora no hemos hecho nada al respecto, tal vez si hay gente que quiera
aportar su experiencia podamos encarar algo en el futuro.

Gracias
Daniel A. Calvin
MCP


"Diego (DCD)" escribió:

Hola,

parece muy interesante esta herramienta, servirá también para crear
aplicaciones para dispositivos moviles.

Un saludo.

"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
#30 Daniel A. Calvin
20/06/2006 - 20:31 | Informe spam
Vyacheslav Popov

Si es así, ¿que criterios se tendrán en cuenta para generar generalizaciones
o herencias?



Esto lo decide el desarrollador.

y ¿por que no generar el modelo relacional a partir del modelo de dominio?


No nos parecio una situación muy común. Será una característica para tener
en cuenta, aunque no creo que la implementemos.

Gracias


Daniel A. Calvin
MCP


"Vyacheslav Popov" escribió:

Hoa Daniel,

¿Entonces la idea es generar el modelo de dominio a partir del modelo
relacional?
Si es así, ¿que criterios se tendrán en cuenta para generar generalizaciones
o herencias?
y ¿por que no generar el modelo relacional a partir del modelo de dominio?


Saludos.

"Daniel A. Calvin" escribió en el mensaje
news:OIITQ6$
> Hola Vyacheslav Popov
>
> Gracias por el interes y el ofrecimiento.
>
> Coopertor hace mapeo estático. Que quiere decir eso?, no usa ni atributos,
> ni xml, ni nada que permita cambiar dinamicamente las realaciones de
> mapeo.
> En cambio genera los mappers totalmente tipados.
> La generación se hace en base a un modelo que se infiere del modelo
> relacional, pero, tiene algunas particularidades.
>
> El modelo inferido detecta relaciones que serán asociaciones potenciales.
>
> Estas Asociaciones podrán ser o Agregaciones o ser tratadas como
> Asociaciones virtuales digamos, se modelan pero no se implementan.
> Todo esto se logra por que sobre el modelo inferido luego se aplica el
> criterio del programador.
> Cooperator provee un asistente que permite tomar desciciones sobre el
> moelo inferido para mejorarlo.
> Decir que asociaciones se implementan, que nombre reciben las propiedades,
> etc, etc.
> Con todo esto se ejecutan una serie de scripts que genran el codigo, crean
> los store, etc, etc
>
> Utilizamos clases parciales para que el código generado se pueda regenerar
> sin pisar el código escrito por el programador para cada clase.
> Ocultamos aquellas cosas que ensucian las entisades de negocio recurriendo
> a la implementacion de interfaces que deben ser invocadas en forma
> explicita. Es la unica formad ever ciertas propiedades o metodos.
>
> Bue, un cantidad de cosas que no nos resultaban comodas de otros
> frameworks.
>
> En cuanto a donde se puede ver
> Eso lo estamos definiendo, aun no hemos decidido donde publicar.
> El plazo de 60días es justamente por eso y para poder completar algunos
> dealles menores, pero, importantes.
>
> Un abarzo y espero mantenerlos al tanto.
>
> Mientras tanto cualquier pregunta o sugerencia que quieran hcer será
> bienvenida.
>
> Daniel Calvin
> MCP
>
> "Vyacheslav Popov" escribió en el
> mensaje news:
>> Hola Daniel, ¡Un proyecto muy ambicioso!
>>
>> ¿Como transcurrirá el mapeo objeto-relacional?
>>
>> ¿Donde se puede ver el proyecto y documentación?
>>
>> ¿Cómo se puede participar?
>>
>> Saludos.
>>
>> "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