The LinFu Reimplementation Plan, and Dogfooding





0/5 (0 vote)
The LinFu re-implementation feature list.
Before I hit the ground coding, let's go over some of the features that were in LinFu v1.0 that will also be in 2.0:
With that in mind, I've decided to implement the following features first:
As for LinFu's Design by Contract v3.0, my goal is to make it injection-agnostic. That means that the library itself should be completely unaware of how it's actually being injected into a service instance. It will allow you to inject contracts using a 3rd-party dynamic proxy generator (such as Castle), and most importantly, it should make no distinction between LinFu's static AOP injection and its own proxy generator.
Probably the most striking difference that you'll see between v1 and v2 is that LinFu will no longer be split into multiple projects (aside from PostWeaver.exe, and the MSBuild task for LinFu.AOP). There might be some who might say that clumping all of LinFu into one DLL violates the principle of Separation of Concerns, but in practice, it will save you an untold amount of headaches when managing your project dependencies.
I realize that rebuilding LinFu is a very tall order, and I'm putting my heart and soul into this one to make sure that it's the best code that I'll ever write. This is going to take some time to redo, and I'll keep posting more and more updates on my blog as time progresses.
- Dynamic Proxies
- Late Binding / Multiple Dispatch
- Duck Typing
- Mixins
- Universal Event Handling
- Closures with Lambda Arguments
- Design By Contract
- AOP (static and dynamic weaving)
- Inversion of Control / Dependency Injection
- Adaptive Object Models
- A MyXaml Engine Clone
With that in mind, I've decided to implement the following features first:
- Inversion of Control / Dependency Injection
- Dynamic Proxies
- Design by Contract
- Static AOP Weaving
As for LinFu's Design by Contract v3.0, my goal is to make it injection-agnostic. That means that the library itself should be completely unaware of how it's actually being injected into a service instance. It will allow you to inject contracts using a 3rd-party dynamic proxy generator (such as Castle), and most importantly, it should make no distinction between LinFu's static AOP injection and its own proxy generator.
Probably the most striking difference that you'll see between v1 and v2 is that LinFu will no longer be split into multiple projects (aside from PostWeaver.exe, and the MSBuild task for LinFu.AOP). There might be some who might say that clumping all of LinFu into one DLL violates the principle of Separation of Concerns, but in practice, it will save you an untold amount of headaches when managing your project dependencies.
I realize that rebuilding LinFu is a very tall order, and I'm putting my heart and soul into this one to make sure that it's the best code that I'll ever write. This is going to take some time to redo, and I'll keep posting more and more updates on my blog as time progresses.