how to beat 3rd party controls backward incompatiblities

G

Guest

Encapsulating 3rd party controls to avoid backword incompatiblities



Hi all,

Environment : VB6\ VS2003\ VS2005, VB.NEt in Winforms, 3rd party component
is a GRID from Sheridan & Devexpress and is used extensively for data display
and manupyulation on all the 100 each forms in the applications.

We have developed two inhouse enterprise level application each taking
around 2-3 years of development time and we used 3rd party controls like
Grids and Dropdowns for enhanced UI funationality. but the problem is that
after every 6 months or so these 3rd party control vendors come out with new
version which might most of the time be breaknig the compatiblity with the
order version. On the first application that we have developed back in 1999
to 2002, i was using this version from sheridan ( which is now infragistics)
and we never upgraded to version till this date becuase the new version was
not backward compatible, and now those due to these controls the application
does not work on some operating systems and upgrading the application to the
vesion would be an almost total overwrite of the UI because the control's
menthods and properties are so tighly integrated with the code.

And same in the case with the new application that we started developing in
2002 till 2004 end, upgrading to the new vesion of these 3rd party components
is like total overwrite.

so now for furthur development i am thinknig that i might want to
encapsulate\ inherit\ create another layer over these controls and use that
object's methods & properties so that if the 3rd party component version
changes i will just have to modify the code in my object which would reflect
all the places it is being used and this way i can very easily upgrade my
version of the 3rd party component. but i think that this might require quite
smoe work since these component have a lot of methods and properties and not
even talking about events since i dont know how i can encapsulate them.

Also another reason might be even if i am not using this controls for lets
say an internet version of the same desktop application then i might jsut
have to change the internal working of this object to encapsulate this new
controls and no other code might change.

i am pretty sure this problem has been encountred by a lot of guys out
their, please suggest, point me to resources, code samples, ideas and what
ever you think.

thanks


sAMEER
 
M

Marina Levit [MVP]

I think putting another layer of abstraction around the object is the way to
go. Any developer code is always going to communicate through the
abstraction layer, and never directly deal with the infragistics grid. In
fact, the developer code doesn't know if under the hood there is an
infragistics grid, or a regular .net grid, or another type of grid - nor
does it care.

This approach in general has many advantages:

1. Common control behavior that you need can all be in one spot. So you
don't need developers rewriting the same code over and over.
2. You standardize behavior and look and feel. So all your grids look and
act the same, regardless the app
3. If you need to change code due to upgrades, or due to switching vendors,
you only do it in one spot. No application code needs to change. Not to
mention, if you need to switch vendors, your developers would have to delete
all grid designer code, and drag on a new grid, and redo all that work. Then
retrofit all their code to work against the new grid. Encapsulating the grid
in your own control means everything still works as long as you update your
encapsulating control - because all developers are coding against this
'virtual grid'.
 
G

Guest

Thaks Marina,

Really sound the way i want to go , are their any kind of MS application
Blocks or code samples or examples or guidelines or whitepapers that i can
use to get this done, i want a starting point? Please suggest.

thanks again.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top