AOP (Programación Orientada a Aspectos) con Delphi

La lista de las características que trae MeAOP son las siguientes:
- Authentication
- Caching
- Context passing
- Error handling
- Lazy loading
- Debugging
- logging, tracing
- profiling
- monitoring
- Performance optimization
- Persistence
- Resource pooling
- Synchronization
- Transactions
- Remote Method Calling
Configurando la librería:
Primero debemos descargar la última versión estable de su SDK, que en éste caso es la MeSDKv1.2 y que podéis descargar aquí. Una vez descargada, tenemos que configurar las fuentes del proyecto. Abrimos el Delphi, y nos dirigimos a Tools -> options, luego en el nodo Environment Options -> Delphi Options -> Library - Win32, y en library path, añadimos las siguientes rutas:

Ahora creamos nuestro proyecto con el siguiente código:
si observamos su ejecución, podemos comprobar como cumple con los diversos aspectos programados, la parte de login y de mostrar información pre y post.



Ahora, solo hay que jugar un poco más con la librería para explotar todas sus opciones. Muy buen trabajo el de Riceball LEE.
Primero debemos descargar la última versión estable de su SDK, que en éste caso es la MeSDKv1.2 y que podéis descargar aquí. Una vez descargada, tenemos que configurar las fuentes del proyecto. Abrimos el Delphi, y nos dirigimos a Tools -> options, luego en el nodo Environment Options -> Delphi Options -> Library - Win32, y en library path, añadimos las siguientes rutas:

Ahora creamos nuestro proyecto con el siguiente código:
unit Unit3; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, uMeSystem, uMeTypInfo, uMeInterceptor, uMeFeature, uMeLog, uStringsLogger, uLogFeature, uLoginFeature, uLoginManager; type TForm3 = class(TForm) Button1: TButton; Memo1: TMemo; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); private FLogStrs: PStringsLogger; procedure DoLoginStatus(Sender: TObject); public { Public declarations } end; var Form3: TForm3; GLogFeature: TMeLogFeature; implementation {$R *.dfm} procedure TForm3.Button1Click(Sender: TObject); begin ShowMessage('Hello!'); end; procedure TForm3.DoLoginStatus(Sender: TObject); begin if Sender is TLoginManager then if TLoginManager(Sender).IsLogined then Caption := 'Logined' else Caption := 'not Logined'; end; procedure TForm3.FormCreate(Sender: TObject); begin FLogStrs := New(PStringsLogger, Create(Memo1.Lines)); GLogger.AddLogger(FLogStrs); GLogger.Level := vlDebug; GLogger.Active := True; GLogFeature := TMeLogFeature(TMeLogFeature.AddTo(TForm3, @TForm3.Button1Click, 'Button1Click')); GLoginManager.OnStatus := DoLoginStatus; end; initialization TMeLoginFeature.AddTo(TForm3, @TForm3.Button1Click, 'Button1Click', TypeInfo(TNotifyEvent)); end.
si observamos su ejecución, podemos comprobar como cumple con los diversos aspectos programados, la parte de login y de mostrar información pre y post.



Ahora, solo hay que jugar un poco más con la librería para explotar todas sus opciones. Muy buen trabajo el de Riceball LEE.
- Enlaces de interés:
This is very informative. Could you please attach the sample application as well?
ReplyDelete