La librería está pensada para proporcionar un framework genérico que permita la implementación de cualquier tipo de plugins basados en interfaces comunes o en paso de mensajes.
Muchos sistemas de plugins están basados en la implementación de interfaces fijos que amplían la definición de un plugin permitiendo realizar una determinada cantidad de operaciones que en cualquier caso siempre es fija, de forma que, por ejemplo si un plugin proporciona un menu se define el interfaz IPluginMenu, si implementa un toolbar la interfaz IPluginToolbar y así sucesivamente para cada una de las funcionalidades que se pretende que un plugin pueda proporcionar.
El enfoque de Monet está orientado a permitir que cada plugin pueda definir servicios, utilizables por otros plugins, en base a un contrato común (un interfaz compartido y conocido por ambos plugins) o en caso de que no sea posible definir dicho contrato o no se tenga acceso a él, permitir la comunicación entre ambos mediante un mecanismo de paso de mensajes similar al de windows.
Así mismo Monet proporciona los medios para definir Hooks, es decir, partes de código que se pretende que puedan ser interceptadas por otros plugins modificando de forma sustancial o no su comportamiento, de una forma muy similar a como funcionan los eventos estándar de .NET.
Supongamos que tenemos una aplicación normal para la que hemos creado un un plugin TCP que envía una cadena de texto a través de red.. el código de dicho plugin define algo como esto:
Ahora, 4 meses después decido que quiero encriptar el texto que se manda para mejorar un poco la seguridad de la transmisión o porque el cliente se ha quejado de que le espían, entonces puedo crear otro plugin llamado Encrypt con el siguiente código
De esta forma yo no tengo que modificar el plugin de TCP (de hecho dicho plugin lo mismo ni lo he creado yo) pero puedo extender su comportamiento y hacer que se comporte de otra forma, evidentemente el plugin de TCP deberá tener otro método hookable llamado AfterReciveText o similar para poder desencriptar la información.
Además podremos hookear interfaces para que la declaración anterior en realidad fuera..
y se intercepten todos los beforeSend de cualquier plugin de "tipo" protocolo de comunicaciones.
Eso es todo, no tenemos que ocuparnos más que de declarar que métodos hookean a cuales y el framework se encarga de poner el pegamento que une todas las piezas para que, automáticamente, al activar el plugin Encrypt beforeSend haga referencia al método HookSendText de dicho plugin.
| Nombre de Release | Fecha | Tamaño | Links |
|---|---|---|---|
| Monet Plugins Library 0.1.0-alfa | Tue, 2008-01-15 | 291.68 KB | Download |
| Monet Plugins Demo 0.1.0-alfa | Fri, 2008-01-18 13:07 | 524 KB | Download |