Homepage: http://code.google.com/p/acrextdirect/
Binaries: http://acrextdirect.googlecode.com/f...ct-2.3.1.0.zip
Source (SVN): http://acrextdirect.googlecode.com/svn/trunk/
Documentation: http://code.google.com/p/acrextdirec.../Documentation
This ExtDirect stack was developed to be as extensible as possible and give all the goodness of the Castle Framework IoC/DI.
Features- Supports native Inversion of Control (IoC) & Dependency Injection (DI) out of the box thanks to the castle framework!
- Send simple types, complex types, nullable types, etc. No need to work with JObject, JToken, or formatted strings!
- Method resolution can be done serveral ways
- Using WCF style attributes [ServiceContract], [OperationContract]
- Without using any attributes! Use convention or windsor XML configuration to mark your direct services thus eliminating the need to dirty your business layer with any additional attributes!
- Return IQueryable<> directly from your code and have it auto-paginated & dynamically filtered
- Handles Form POST Data Binding (simple, complex, & array types)
- .NET 4.0 Support. Supports dynamic object types
Getting Started
1) Register the facility in your Windsor container
HTML Code:
<facility id="extdirect.facility” type=”Acr.ExtDirect.ExtDirectFacility, Acr.ExtDirect” />
2) Register your components (note that id is also the call name you will use from the ExtJS client)
HTML Code:
<component id="yourid" service="IYourService" type="YourImplementation" />
3) Mark your component service OR implementation class with [DirectService]
4) Mark methods in your component service OR implementation class with the [DirectMethod] attribute. For form submit or load methods, mark them [DirectMethod(DirectMethodType.FormSubmit)] or [DirectMethod(DirectMethodType.FormLoad)]
5) Register the HTTP Handler in web.config (note that you can name the path anything you want that registers with ASP.NET. Router requests will go to this url!)
HTML Code:
<add path="api.ashx" verb="*" type="Acr.ExtDirect.ExtDirectHandler, Acr.ExtDirect" />
6) Lastly, place the script tag on your page (note that this should be placed under the ExtJS scripts as it auto registers the namespace with ExtDirect!)
HTML Code:
<script type="text/javascript" src="api.ashx"></script>
UPDATES
[2.3.1.0]
Improvements
------------
- Hybrid date/time json converter to deal with dates often coming in from components as string representations and needing to go out as
date objects. This is mix between IsoDateConverter for incoming & JavaScriptDateConverter for outgoing
Bugfixes
--------
- No longer messes up exception stack trace if error is thrown from service
- DefaultFormBinder will now work properly with all structs that do not have a form binder
- DefaultFormBinder will not attempt to instantiate objects without a parameterless constructor. This is necessary to bypass any custom
DTO's that contain complex arrays that do not have custom form binders
- Now grabbing proper formbinder instead of possibly grabbing the DefaultFormBinder
[2.3.0.0]
Features
--------
- Initial .NET4 Support - Use of dynamic for both form binders and direct parameters
- Queryable Method Transformer now supports select clause
Improvements
------------
- BREAKING - renamed method appliers to method transformers to better explain what they do
- disableDefaultAppliers renamed to disableDefaultTransformers
- GetNamespace implementation is now smarter in dealing with "unnamed/default" components. Usually from Component.For<>. No one
ever really puts .Named(""). Since Blah.Blah is not allowed in the ExtDirect actions js, it will takes the last string in the . split.
[2.2.0.0]
Features
--------
- New cross-server prevention mechanism. If referrer is not within the same domain, the request is blocked. This feature is disabled by default. <preventCrossSiteRequests>
Improvements
------------
- BREAKING - IFormBinder no longer handles single types. The interface now exposes CanConvert(Type)
- MINOR BREAKING - SelfBindAttribute is deprecated. Objects that inherit implement ISelfFormBind will now be called without the parameter
attribute being marked with [SelfBind]
- Simplified AutoMapping codepath
- Cleaned up & simplified formbinder registration
- Queryable attribute renamed to QueryableMethod to prevent namespace collision
- Added string resources to make debugging multilingual (translations needed)
Bugfixes
--------
- Enum handling /w nullables in method arguments for both form & direct operations
- skipDefaultAppliers is now disableDefaultAppliers
[2.1.0.0]
New Features
------------
- ExceptionContext now contains a reference to the erroring DirectMethodInfo
- EnumStringConverter is now set as default converter
- Types can now be automapped using kernel.AutoRegisterDirectServices(typeof(DirectServiceAttribute)) or
kernel.AutoRegisterDirectServices(typeof(OperationContractAttribute))
- Added ability to NOT auto register the client side provider with ExtJS by setting <autoRegisterProvider>false</autoRegisterProvider>
Bugfixes
--------
- Fixed some bugs where crashes would occur if the configuration was not set. This would occur during code registration of components (common scenario)
- Fixed file upload causing popup save
- Fixed simple type direct operation methods
- Fixed nullable handling