December 29th, 2008, 3:08 pm
You could use Cascade DataHub to move data between Excel and web browser, between Excel and Excel on a network or between custom applications and Excel. It uses DDE and TCP as the underlying mechanisms. I know that people here generally claim that RTD is better, but it isn't clear-cut. For single-value transmissions, DDE and RTD are similar in speed. It's hard to make a claim that one is better than the other.RTD does not support ranges, so every data item must be transmitted individually. For systems that move a lot of data, DDE with ranges is hugely more efficient. We have seen systems moving 4000 cells, 5 times per second, from Excel on one computer to 8 connected Excels on separate computers on a LAN. There is simply no way that RTD could do that.Also, because RTD is a COM interface, it gets preferential treatment over timers and user interface in Excel, causing Excel to delay computation and timers in favor of RTD communication. When you combine the lack of range support with this preferential processing of RTD, it is actually quite easy to put Excel into a state where it spends most of its time servicing the RTD events. This causes timers and DDE communication to glitch, and computation to be delayed.DDE Advise is asynchronous, where RTD is synchronous. This has a lot of meaning in (pseudo)real-time systems using Excel. If an RTD server transmits data more rapidly than Excel can handle it, the result is that Excel will get further and further behind "real" time. If the RTD server does not handle this, then the result is that Excel is constantly late. If the server gets its data from a downstream TCP feed, for example, this will place Excel into a state where it is permanently as far behind as the data held in the TCP socket buffer (typically 64K of data). DDE includes a mechanism where Excel will skip intermediate values in favor of the most up-to-date values, on a per-item basis. Consequently if your data comes faster than Excel can process it the older data will be skipped in favor of the newer data. You will always have the most up-to-date information for each value even if you did not see every change.Generally I think that the RTD behavior in overload is bad. DDE does the "right" thing for real-time systems. Combine that with DDE's support for ranges and I think that DDE probably has the better overall behavior and certainly the better bulk performance.Ultimately the decision rests on the behavior you want, but don't think that RTD is better just because it's newer.