Unnecessary Overhead

Dec 27, 2010 at 4:06 PM

I appreciate your intent with using a "prettier" user interface like Scintilla/Ascend - but it is adding much unnecessary overhead into this project.  If your intention is to simply display the generated scripts with syntax highlighting, you could use native .NET controls like a browser and HTML or a Rich Text box - or add Scintilla/Ascend as a separate "enhanced" add-on that can be selected at setup time...  Is your goal to actually be able to edit and run the script from DBDIFF rather than the Management Studio?

I have created a .NET interop COM wrapper for this with the intent of an extremely lightweight diff engine... to have to distribute all kinds of GUI stuff SHOULD be completely unnecessary.  I have to distribute all of this just to run a simple diff:

  • Ascend.dll
  • Ascend.Resources.dll
  • Ascend.Windows.Forms.dll
  • DBDiff.Front.dll
  • DBDiff.Schema.dll
  • DBDiff.Schema.SQLServer.dll
  • DBDiff.COMDiff.dll


It looks like 3 of these components are purely GUI related and not really necessary to running the actual engine.  I disagree with the idea of incorporating things like progress bars into the engine, where you pass a progress bar control to the engine.... IMHO you should using more events so a user who who wants a progress bar can subscribe to a progress event if they so desire.  

Please forgive if I looked at this wrong, but those were my initial observations.  If you would like I could send you my COMDiff layer.  It consists of ICOMDiff interface, ICOMDiffEvents interface, and COMDiff class which implements the ICOMDiff interface and sources the ICOMDiffEvents interface.  I used your OCDB layer as a model for this, but exposing it as a COM interface allows us to use it in legacy or scripted environments.



Brian A. Manlove


Keller, TX USA

Dec 27, 2010 at 4:08 PM

P.S. - I forgot to add, I really like the project and it is quite impressive.  Looks like you have put a lot of work into this and it would be nice to see it succeed where others have failed.  Good luck!!!

Dec 27, 2010 at 4:12 PM

Also, your OCDB layer is returning origen.ToSql();  I think it should be returning origen.ToSqlDiff().ToSQL();

If your intent is to simply return the delta.


Dec 28, 2010 at 2:48 PM

Yes, you have right. It's a good observation.

But you don't need reference the GUI components, if you want only a COM wrapper. You can do a with only  DBDiff.Schema.dll and DBDiff.Schema.SQLServer.dll.

I you want, please send me your COM layer. I'm interesting in this!.


Dec 28, 2010 at 3:26 PM

For an example of someone using just the differencing engine, check out the MigrationScriptGenerator project: