AJAX Control Toolkit from Codeplex is a Risk

Perhaps you know the Dragpanelextender from the AJAX Control toolkit ( March). This have the feature to store the position of a drag panel personalized in profile settings. That's a general functionality in the base class.

<ajaxToolkit:DragPanelExtender

TargetControlID="Panel1"

DragHandleID="drgPanel"

BehaviorID="HannesDrag"

ID="DragPanelExtender1" runat="server">

<ProfileBindings>

<ajaxToolkit:ProfilePropertyBinding

ExtenderPropertyName="Location"

ProfilePropertyName="HannesPosition" />

</ProfileBindings>

</ajaxToolkit:DragPanelExtender>

I used that control in a sample for a while. In my last AJAX course the postion was not stored in aspnetdb. So sample breaks.

After a long search I figured out following facts:

in floatingbeavior.js code documented out

//        var p = this.get_profileProperty();
//        if(p) {
//            var b = new Sys.Preview.Binding();
//            b.beginUpdate();
//            b.set_target(this);
//            b.set_property("location");
//            var profile = this.get_profileComponent();
//            if(!profile) profile = Sys.Preview.Services.Components.Profile.instance;
//            b.set_dataContext(profile);
//            b.set_dataPath(p);
//            b.set_direction(Sys.Preview.BindingDirection.InOut);           
//                     
//            // we must hook into the loaded event since the profile may be loaded and the location property
//            // will be different. But profile doesnt raise a change notificaiton for every property after a load
//            var a = new Sys.Preview.InvokeMethodAction();
//            a.beginUpdate();
//            a.set_eventSource(profile);
//            a.set_eventName("loadComplete");
//            a.set_target(b);
//            a.set_method("evaluateIn");

//            a.endUpdate();
//            b.endUpdate();

//            this._binding = b;
//            this._action = a;
//        }
    }

In extendercontrolebase.cs compiler directive

#if false
        /* TODO: Migrate */
        internal IScriptService EnsureProfileScriptService(ScriptManager sm, bool checkIfNeeded)
        {
...

and at the end in the Assembly with reflector

[PersistenceMode(PersistenceMode.InnerProperty), Obsolete("WARNING: ProfileBindings are disabled for this Toolkit release pending technical issues.  We hope to re-enable this in an upcoming release"), DesignerSerializationVisibility(2), Browsable(false)]
public ProfilePropertyBindingCollection ProfileBindings
{

BAM!!!

Hey guys, some people are developing productive stuff with that and you drop a basic feature without any notice!

Microsoft: AJAX Toolkit must be under full control, support and development path of Microsoft. With that status I can not suggest to use Microsoft AJAX Control Extenders. It's to much risk!

Published Thursday, March 22, 2007 8:51 AM by preishuber
Filed under: ,

Comments

# re: AJAX Control Toolkit from Codeplex is a Risk

Thursday, March 22, 2007 4:45 AM by Tudor

AJAX Control Toolkit is just a third-party library developed by some volunteers - it is not made or supported by Microsoft, so anyone using it should be aware of this and it must assume both the risks and benefits...

# re: AJAX Control Toolkit from Codeplex is a Risk

Thursday, March 22, 2007 4:56 AM by preishuber

@Tudor: thats exactly the point. Third party not useable as library for professional development.

# re: AJAX Control Toolkit from Codeplex is a Risk

Thursday, March 22, 2007 7:14 AM by Mark Wisecarver

I'm at least glad that Hannes pointed this out, even for testing purposes.

I've been using the ControlToolkit and extending it and DID NOT notice this. Thanks!

# re: AJAX Control Toolkit from Codeplex is a Risk

Thursday, March 22, 2007 8:57 AM by mike wolf

:"Third party not useable as library for professional development."

ok this is what I dont get about the .net community... this is an open source community project,  started by ms... contributed to by ms... but also other people in the community... just as something might break in a production ms release, something can break in an open source realease... the benefit is you had the source to find the problem, and even fix it... if it was published by and "supported" by ms what would be your recourse?  Complaining and hopeing your a big enough fish that they fix it for you...

# re: AJAX Control Toolkit from Codeplex is a Risk

Thursday, March 22, 2007 9:40 AM by preishuber

@mike wolf: as i understand you, your argument is "thats the deal". No warranty but source and can be fixed semself!

If id like to do that, i change over to the LAMP world. Yes i can fix the kernel- but i dont want!

My business is professional, i am focused on tasks that are making in some matter money. I must be super productive (kidding)

If i made a decision for a library i must know my partner. The history- the future. To change parts of code cause of changing library is more than expensive. As i mentioned in blog post earlier, i even would pay microsoft for a good AJAX library. Free is not equal to cheap!

# re: AJAX Control Toolkit from Codeplex is a Risk

Thursday, March 22, 2007 10:16 AM by mike wolf

I see your point, my response in general when responding to .net folk who reject open source projects for similar reasons, is you would have the same problem w/ no open source solutions... and at the end of the day your the one responsible for implemtning a solution, the benefit w/ the ajax toolkit, as opposed to say product like infragistics ajax controls, is when something is wrong you can extend and fix it...

# re: AJAX Control Toolkit from Codeplex is a Risk

Friday, March 23, 2007 1:05 AM by Rick Strahl

The Control Toolkit is an open source project with all the benefits and downsides of such a project. It's not a Microsoft product so don't expect full support or a Microsoft type update cycle.

The bottom line is this: Whenever you choose to use a tool choice you have to decide on what type of support you want. Do you want something that just works and that - if necessary you can manage yourself - or do you want something that gets rev'd once every 2 years from Microsoft that will never change (even if the implementation sucks)?

If you use the Toolkit stuff and it works for you, you don't have to go through the constant update cycle. Stick with a version that you know that works and use it, rather than upgrading to each version and potentially get broken. All things considered I think the Toolkit is relatively solid and stable, but as you point out there are those risks of change and breakage which will be much higher than from a Microsoft product.

I too think that Microsoft dropped the ball on providing more functionality "in the box" and that the Toolkit is the only thing that really makes the MS Ajax Library viable. Many people like you seem to forget that the Toolkit is not actually a Microsoft product. Take the toolkit away from MS Ajax and what are you really left with? A bare bones framework (ok, plus UpdatePanel), but not much of plug and play functionality.

# re: AJAX Control Toolkit from Codeplex is a Risk

Friday, March 23, 2007 6:37 AM by Doug

Its not as if MS Ajax.Net itself is so well supported judging from the number of 0 reply topics in the ajax.asp.net forums

# re: AJAX Control Toolkit from Codeplex is a Risk

Thursday, August 30, 2007 8:12 AM by samwagh1234

I was wanting to implement the DragPanelExtender and get Top Left Position of the Dropped panel.

Found a solution using Old Atlas Libraries in the ProfileProperty and it works. Did anybody get the position after the Dropped Panel by some way ??

# re: AJAX Control Toolkit from Codeplex is a Risk

Wednesday, December 12, 2007 10:35 AM by Joseph Baggett

I personally would not recommend enhancing the toolkit unless you had the money and time to do so.  As for the suggestion to do so, there is a ton of code you would need to modify to change something, but if that's your thing then please contribute to the community, it would be some major work, nothing like writing an extended control.  I've personally run into many problems using the library, whether they cause error in other controls or don't handle validation correctly(having to download extra assemblies to get around issues).  Right now, the library is handled as "AS IS"... and I hope in the future it becomes updated properly to integrate with .Net with no bugs.  I hope this is not abandoned by Microsoft.

# AJAX Drag & Drop Challenge

Saturday, December 22, 2007 1:52 PM by Hannes Preishuber

Drag and drop is typically feature from windows application. With Web application the user is loosing

# AJAX drag drop Challenge: new with profile support

Sunday, January 27, 2008 5:49 PM by Hannes Preishuber

I have written a proof of concept blog post about drag and drop with AJAX toolkit. In my second part

Leave a Comment

(required) 
(required) 
(optional)
(required)