Posts Tagged: lenguajes


27
ene 12

Invocando un método de un objeto especifico usando Quartz .NET y Spring .NET

No Gravatar

En algunas ocaciones necesitamos dejar una tarea programada que se ejecute cada cierto tiempo, para hacer eso se puede utilizar Quartz.

¿Que es Quartz?

Es un sistema de calendarización de tareas que puede ser integrado o usado virtualmente con cualquier otro sistema de software, en este contexto una tarea calendarizada (“job scheduler”) es un sistema que es responsable de ejecutar o notificar a otros componentes de software cuando un tiempo predeterminado ha sucedido.
http://quartznet.sourceforge.net/faq.html

¿Que es un Trigger?

Es un procedimiento que se ejecuta cuando se cumple una condición establecida al realizar una operación.

¿Que es Spring?

Es un “framework” de código abierto de desarrollo de aplicaciones para la plataforma Java. La primera versión fue escrita por Rod Jonhson, quien lo lanzó primero con la publicación de su libro Expert One-on-One Java EE Design and Development (Wrox Press, octubre 2002). También hay una versión para la plataforma .NET, Spring .NET.
http://es.wikipedia.org/wiki/Spring_Framework
http://www.springframework.net/doc-latest/reference/html/introduction.html#introduction-overview

¿Que es .NET?

.Net es un “framework” de Microsoft que hace un énfasis en la transparencia de redes, con independencia de plataforma de hardware y que permita un rápido desarrollo de aplicaciones.
http://es.wikipedia.org/wiki/.NET

Si estas utilizando el “framework” Spring .NET esto te puede ser de utilidad.

Entre las caracteristicas del “framework” Spring se encuentra la integración de clases para el soporte de calendarización, actualmente Spring soporta “Quartz Scheduler” (http://quartznet.sourceforge.net/).

“Quartz” usa objetos Trigger,Job y JobDetail para realizar calendarización de todo tipo de tareas.

Por propositos de conveniencia, Spring ofrese una serie de clases que simplifican el uso de “Quartz” en aplicaciones basadas en “Spring”.

Usando MethodInvokingJobDetailFactoryObject
En ocaciones se necesita invocar un método de un objeto especifico. Usando MethodInvokingJobDetailFactoryObject Se puede hacer de la siguiente manera:

JobDetail :


<object id="EjemploJob"
type="Spring.Scheduling.Quartz.MethodInvokingJobDetailFactoryObject, 
Spring.Scheduling.Quartz">
<property name="TargetObject" ref="smsService" />
<property name="TargetMethod" ref="EnviarUnMensaje" />
</object>

El resultado del ejemplo anterior será llamar el método “EnviarUnMensaje” de un objeto de la clase“smsService”


public class smsService {
  // propiedades y eventos
  public void EnviarUnMensaje() {
    // realizar la tarea de enviar un mensaje
  }
}
<object id="smsService" type="business.Sms.SmsServiceImp, enviosms.business"/>

Para hacer que los resultados de las tareas “MethodInvokingJobDetailFactoryObject” sean no concurrentes, poner la bandera “concurrent” a “false”.


<object id="EjemploJob"
type="Spring.Scheduling.Quartz.MethodInvokingJobDetailFactoryObject, 
Spring.Scheduling.Quartz">
<property name="TargetObject" ref="smsService" />
<property name="TargetMethod" ref="EnviarUnMensaje" />
<property name="Concurrent" value="false" />
</object>

Nota: Por omisión, las tareas se ejecutaran de manera simultanea

Configurando tareas usando “triggers” y SchedulerFactoryObject

Hemos creado una tarea “JobDetail” de ejemplo (EjemploJob), necesitamos ahora calendarizar esa tarea. Esto se hace usando “triggers” y SchedulerFactoryObject.
Varios tipos de “triggers” estan disponibles con “Quartz”. “Spring” ofrece dos subclases de “triggers” :

CronTriggerObject and SimpleTriggerObject.

Usaremos de ejemplo un SimpleTriggerObject.

Los “Triggers” necesitan ser calendarizados. “Spring” ofrece un SchedulerFactoryObject que trata a los “triggers” como propiedades, SchedulerFactoryObject calendariza las tareas actuales con esos “triggers”.


<objectid="TriggerEjemplo" 
type="Spring.Scheduling.Quartz.SimpleTriggerObject, 
Spring.Scheduling.Quartz">

<property name="JobDetail" ref="EjemploJob" />

<!-- 10 segundos -->

<property name="StartDelay" value="10s" />

<!-- repetir cada 120 segundos -->

<property name="RepeatInterval" value="120s" />

</object>

El “trigger” configurado se ejecutara cada 50 segundos con un retardo inicial de 10 segundos.
Ya solo resta configurar el “SchedulerFactoryObject”


<object id="quartzSchedulerFactory"
type="Spring.Scheduling.Quartz.SchedulerFactoryObject, Spring.Scheduling.Quartz">
<property name="triggers">
<list>
<ref object="TriggerEjemplo" />
</list>
</property>
</object>

Usando Quartz tendremos en nuestra aplicación un proceso que se repite cada 120 segundos y que
hace la llamada al evento EnviarUnMensaje() de un objeto de la clase smsService.

Más info aqui:

http://www.springframework.net/docs/1.2.0/reference/html/scheduling.html

Compartir y Disfrutar

  • Facebook
  • Twitter
  • Delicious
  • Digg
  • StumbleUpon

13
ene 12

Desarrollo de aplicaciones para ambientes tridimensionales

No Gravatar

Una de las aplicaciones que hemos desarrollado tiene que ver con la visualizacion de ambientes tridimensionales, y realiza entre otras cosas navegación, despieces y simulaciones y permite el control documental de proyectos, este desarrollo es una segunda versión mejorada de otro sistema que anteriormente hicimos con un motor gráfico llamado Glscene, para Delphi.

Para mejorar la nueva versión recurrimos a un motor gráfico con mejores caracteristicas (NeoAxis) y nos trasladamos a Visual Studio para desarrollar con C#, el motor gráfico que utilizamos cumplió con las espectativas, se mejoró el tiempo de carga de los modelos 3d al utilizar un formato más compacto en los modelos, permitió tener mayor cantidad de objetos y escenarios en una misma escena, además de otras caracteristicas que el anterior motor no tenia.

“NeoAxis Game Engine” es un moderno motor grafico 3D para simulaciones 3D, visualizaciones y juegos.

Este motor que utilizamos es una excelente herramienta para desarrollar aplicaciones 3d de alto impacto.

Algunas de sus caracteristicas son :

  • Las aplicaciones creadas con NeoAxis pueden correr en Windows, Mac y Linux
  • Tiene varias herramientas tales como Editores : Objetos, de GUI, de Mapas,
  • de Modelo Físico, de Terreno,de Sistema de Partículas, para calcular Luces Estaticas.
  • Importa modelos y texturas de 3D Studio Max, Maya, Softimage, XSI, Blender.
  • API de programación basada en .Net y lenguaje C#
  • Efectos especiales (efectos de partículas, Animación, etc)
  • Manejo de Luces, manejo de materiales, efecto de agua
  • Efectos de Física ( Cuerpos rigidos, Uniones, Vehículos, soporta NVIDIA PhysX y ODE)
  • Soporte para Red(Multijugador, Servidor dedicado)
  • Manejo de dispositivos de entrada
  • Como joysticks, Kinect, controladores Xbox 360 .
  • Desarrollo Web (a través de NeoAxos Wen Player) usando los navegadores web mas conocidos
  • Lo más importante, cuenta con un desarrollo constante y el soporte del equipo de desarrollo y muy buena documentación.

http://www.neoaxis.com/

Esta imagen  del sitio de NeoAxis muestra una aplicación para la simulación de accidentes en fábricas (un ejemplo de lo que se puede hacer con el motor), este ejemplo es un poco similar a lo que hemos estado desarrollando.

Aplicaciones como esta son posibles de desarrollar por el equipo de Qbit Mexhico.

 

Compartir y Disfrutar

  • Facebook
  • Twitter
  • Delicious
  • Digg
  • StumbleUpon

7
feb 08

Envío de mensajes masivos usando Dcod SMS

No Gravatar

Avances de DcodSMS

Ya hace algunas semanas atrás habiamos estado trabajando en una aplicacion multiplataforma para envío de mensajes SMS a celulares en toda la república mexicana y algunos países de latinoamérica, actualmente el servicio ya deja de ser un alpha y pasa a ser un beta ya funcional, el cual puede ser accedido desde http://sms.dcod.com.mx/ la aplicación ha mejorado mucho, soportando envíos simultaneos masivos, no como anteriormente que se enviaba 1 mensaje a la vez.. Creo que antes había comentado también que cambiamos de plataforma de desarrollo y de servidor, para mantener mayor estabilidad nuestro servidor ahora se basa en apache sobre linux, lo veo mucho mejor que IIS. Esta nueva versión en estado beta viene cuenta con una interfaz web desde la cual pueden enviarse mensajes, consultar saldos, consultar estado de envío y ver historial de mensajes enviados. Los Webservices estan terminados y han sido probados con lenguajes como Delphi, C#, PHP, Flash, Flex, y Java, todavía faltan algunos otros pero seguimos desarrollándolos como ejemplos. Actualmente estamos elaborando la documentación para uso del API y algunos casos de uso en diferentes lenguajes de programación; la ayuda e información adicional puede ser obtenida desde http://sms.dcod.com.mx/wiki/index.php/Portada. El servicio continua desarrollándose y esperando nuevas ideas para mejorarlo.

Compartir y Disfrutar

  • Facebook
  • Twitter
  • Delicious
  • Digg
  • StumbleUpon

Qbit Mexhico Blog is using WP-Gravatar