Daniel provides a comparison of AJAX frameworks . It is especially useful these days since everyone is starting to develop his own AJAX framework.
Not all frameworks are presented (reasons explained), but it’s a good start. Keep up the good work !
Daniel provides a comparison of AJAX frameworks . It is especially useful these days since everyone is starting to develop his own AJAX framework.
Not all frameworks are presented (reasons explained), but it’s a good start. Keep up the good work !
This very nice article from IBM gives some information about Aspect-Oriented Programming (AOP), and why it is good for programmers.
The author clears the myths and understanding about AOP.
Basic Integration of Db4o with Spring.NET is now done. Nothing has been tested yet, but testing should soon start…
I have created a JIRA issue for this. I hope that this will get integrated and reviewed into Spring.NET.
Content of the issue :
It would be nice to have Spring.NET integrated with db4o.
I have implemented basic integration here :
http://samokk.is-a-geek.com/Projects/Spring.Net/db4o.tar.gzNothing has been tested yet.
I’ll post updates to the same address.The current version supports :
- Db4o Platform Transaction Manager :
- Db4o Template, that supports both ICallback and delegate method.
- Db4oUtils, that provides utilities to create / dispose connections
- IDb4oDataSource / BasicDb4oDataSource : the exact same thing as a Java JDBC DataSource (Abstract Factory), but for Db4o. BasicDb4oDataSource delegate connection creation to 4 concrete IDb4oConnectionParameters :
* FileDb4oConnectionParameters : Direct file access
* MemoryDb4oConnectionParameters : In-memory database
* EmbeddedClientDb4oConnectionParameters : client to an embedded server
* RemoteClientDb4oConnectionParameters : client to a remote serverThese classes work with the Spring.Data classes I found in the sandbox. Do not hesitate to add them to CVS, they are licensed under whatever-license suits you (Apache, BSD, LGPL, whatever)
After having spent several more hours on the Db4o/Spring.NET integration issue, here are some of my conclusions concerning Spring.NET internals :
Most of the logic for integrating a Data Access/Transaction support technology to Spring.NET is to be implemented inside 3 major entities :
Let’s see how everything fits together :
Previous issues :
As previously stated, I am currently working on Spring.NET and db4o Integration.
This thread deals with some of my questions regarding what’s currently available in db4o that will allow me to do the job.
Here’s the likely roadmap :
This email from Novell is particularly interesting to read.
I believe that they got it right : if you want things to go forward, you sometimes have to create something even though some people won’t like it sometimes.
It is especially true for Novell, since they are trying to push the .NET framework and as soon as we talk about high level languages, all the C/ASM-lovers stand against it.
Compared to its Java peer, Spring.NET’s transaction support is still in its infancy and somewhat undocumented.
According to some posts in the forum, Transaction support should come with version 1.1 (currently in CVS).
In the meantime, those of us who have to deal with transactions still have to find a solution.. The first step is to get a nightly snapshot build of the CVS and copy the Spring.Data classes from the sandbox.
The second step is to understand how Transactions are supported and the last step is to add support for your Data backend if it is not yet supported (only ADO.NET is supported, as far as I know.. Maybe iBatis.Net is too, at least partially).
So, concerning the second step, this thread should help to understand once people give some answers…
This post is to give more details of what I understand in the hope that it will help someone else in the same position :
So, overall, things do not seem that complex.. Let’s analyze a bit more.
PlatformTransactionManager is the main actor on the scene. Its role is to Create/Reuse transactions, commit and rollback transactions. It conforms to the IPlatformTransactionManager interface that defines the following methods :
ITransactionDefinition defines all the gory details of the transaction (Propagation behavior, Isolation Level, Timeout, etc). See Wikipedia for more information about these general Database concepts.
So basically, when we want to perform a transacted set of tasks, the code should look like (taken from Spring Java documentation) :
DefaultTransactionDefinition def = new DefaultTransactionDefinition();
def.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRED);
TransactionStatus status = txManager.getTransaction(def);
try {
// execute your business logic here
}
catch (MyException ex) {
txManager.rollback(status);
throw ex;
}
txManager.commit(status);
In other words, this is the manual way of demarcating transactions (e.g. the “wrong” way). But at least, things are pretty clear about what’s done on the system. (txManager is the platform transaction manager, AdoPlatformTransactionManager, for example).
The good news is that it is exactly how TransactionTemplate wraps service code, in the Execute() method :
public object Execute(ITransactionCallback callback)
{
ITransactionStatus status = _platformTransactionManager.GetTransaction( this );
object result = null;
try
{
result = callback.DoInTransaction( status );
}
catch ( Exception ex )
{
rollbackOnException( status, ex );
throw ex;
}
_platformTransactionManager.Commit( status );
return result;
}
As you can see from the code no magic is done here, we purely rely on the PlatformTransactionManager to perform some logic that will make sure the connections and transactions don’t get mixed and matched between threads…
So, let’s see how PlatformTransactionManager works.. Of course, you can already envision that a lot of things are going to be pretty much the same no matter what the concrete platformTransactionmanager is. In fact, no matter whether you use ADO.Net, iBatis.Net, or whatever else, the following workflow handling is hardcoded into AbstractPlatformTransactionSupport, from which all concrete PlatformTransactionsupport should inherit :
The basic idea here is that the three methods (GetTransaction(), Commit() and Rollback() are implemented and use the Strategy Design Pattern to delegate actual processing to the concrete subclasses (All the Do*() methods).
So, all the dirty work of complying with the API is already done, and the real work left is about coding the parts that are different with each system, such as beginning a transaction (DoBegin()).
The link with TransactionSynchronizationManager is done, for example in DoBegin by :
TransactionSynchronizationManager.BindResource(DbProvider,
txMgrStateObject.ConnectionHolder);
The ConnectionHolder (which represents the Connection + Transaction) is bound to the thread by the static BindResource which will use a [ThreadStatic] Collection to take care of the Threading stuff. (See more information about the TreadStatic Attribute on MSDN).
However, one thing that I am still unsure about is how connection ressources are disposed. After committing, we do not want to close the session, we just want to tell the PlatformTransactionManager that the resource is now free to reuse for some other thread.
To put it in a nutshell, in order to add support for a new transaction system, here are the required elements :
This should be enough to get a working implementation. I’ll create one for db4o OO database.
Thanks to Novell !! See this announcement from Miguel de Icaza or this one from Alexandre Gomes for Xgl and the new compositing manager ..
I am looking forward to having everything working on my Ubuntu box… And having applications (f-spot, etc…) using this technology intensively.
So now, what does the Graphical Layering look like, under Linux ? How is Cairo/Glitz related to Xgl ? As far as I understand :
So, as far as I understand, things would be rendered this way :
More information about this ?
Other information about the subject :
This particularly interesting post shows how good Spring is : 70% reduction of code after EJB to Spring migration..
I guess Erik is talking about EJB 2, but it’s still very interesting !
This Topic [Fr] explains photography basics. It is really well done, so it’s worth taking a look at it.