1. #1
    Sencha User
    Join Date
    Dec 2007
    Posts
    17
    Vote Rating
    0
    aritchie is on a distinguished road

      0  

    Default ExtDirect stack based on Castle Framework (.NET) /w .NET 4 Support

    ExtDirect stack based on Castle Framework (.NET) /w .NET 4 Support


    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

  2. #2
    Sencha User
    Join Date
    Dec 2007
    Posts
    17
    Vote Rating
    0
    aritchie is on a distinguished road

      0  

    Default


    Updated to 2.2.0.0. Please view first message in this thread for details

  3. #3
    Sencha User
    Join Date
    Dec 2007
    Posts
    17
    Vote Rating
    0
    aritchie is on a distinguished road

      0  

    Default 2.3.0.0 Release /w .NET 4.0 Support

    2.3.0.0 Release /w .NET 4.0 Support


    Homepage: http://code.google.com/p/acrextdirect/
    Binaries: http://acrextdirect.googlecode.com/f....3.0.0_bin.zip
    Source (SVN): http://acrextdirect.googlecode.com/svn/trunk/
    Documentation: http://code.google.com/p/acrextdirec.../Documentation


    [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.

  4. #4
    Sencha User
    Join Date
    Dec 2007
    Posts
    17
    Vote Rating
    0
    aritchie is on a distinguished road

      0  

    Default 2.3.1.0 Patch Release

    2.3.1.0 Patch Release


    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

    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