Breaking Changes

From RemObjects Wiki

Jump to:navigation, search

This is a Technical Glossary topic
Feel free to add your notes to this topic below.


Breaking Changes in the Hydra 4 Release

Hydra_Core package split

In order to provide support for the new FireMonkey framework we've divided Hydra_Core_D16 package into three package:

In some cases it may be required to manually tune your runtime packages list to reflect this change.

Please note that this change involves only packages for Delphi XE2, packages for previous versions remains untouched.

THYPluginType moved

Definition of a THYPluginType moved to a new unit uHYPluginDescriptors.pas. If you use this type, please include uHYPluginDescriptors into the uses section of your units.


Breaking Changes in the Summer 2012 Releases

RemoteService class property CloneMesage removed

Misspelled property CloneMesage was removed from the RemoteService. Please use the CloneMessage property instead.

Removed property was marked as obsolete since 2009.


Breaking Changes in the Spring 2012 Releases

Relativity Server Default Channel type changed to SuperHttp

Relativity default channel now registers itself as superhttp in ZeroConf environment, not as http like earliser.

This change does not break server access for existing Relativity clients because Relativity default channel now accepts both SimpleHttp and SuperHttp connections.

OlympiaServerSessionManager.GetAllSessions result changed

The OlympiaServerSessionManager.GetAllSession(IList) method now puts only session identifiers in the list provided instead of downloading entire sessions objects from the Olympia server as earlier.

It is highly recommended to use the strongly-typed IList<Guid> GetAllSession() method overload instead.


RemoteDataAdapter ReconcileDialog events changes

delegate(RemoteDataAdapter, DataSet, List, Boolean) to delegate(Object, ShowReconcleDialogEventArgs)

delegate(RemoteDataAdapter, DataSet, DeltaChange, Boolean, ReconcileDialogAction) to delegate(Object, ShowReconcileRecordInAppUIEventArgs)

are no longer available


Breaking Changes in the Fall 2011 Releases

RemObjects.SDK.Server.Session class renamed to SessionRolesHelper

The RemObjects.SDK.Server.Session class has been renamed to RemObjects.SDK.Server.SessionRolesHelper and changed to be a static class. This change affects code that checked Session security roles using one of the RemObjects.SDK.Server.Session.ValidateRoles methods directly. Please consider using method Service.ServiceValidateRoles instead or fix code that called RemObjects.SDK.Server.Session.ValidateRoles by replacing RemObjects.SDK.Server.Session with RemObjects.SDK.Server.SessionRolesHelper.


Breaking Changes in the Winter 2010 Releases

Default port changed for the IpSuperHttpServerChannel

Default port was changed for the IpSuperHttpServerChannel server channel from 80 to 8099. This potentially affects RemObjects SDK for .NET server applications created using pre-Winter 2010 releases if they were using IpSuperHttpServerChannel server channel on port 80. To resolve this, simply set port 80 in the Server Channel's properties explicitly, if you want to keep using this port.

Pre-compiled binaries for Hydra / RemObjects SDK Integration

Starting from the Winter 2010 release we no longer provide pre-compiled *.bpl's for the Hydra - RemObjects SDK Integration Library, in order to minimize build dependencies between the products. To use RemObjects SDK for Delphi functionality in Hydra, you will need to manually compile and install Hydra_RO_D1* and Hydra_RO_IDE_D* into the Delphi IDE.

Poll Interval on ROEventReceiver in RO/Xcode now uses Seconds

For consistency with other Cocoa APIs, the poll interval setting on the ROEventReceiver is now specified in seconds, not milliseconds. If you were manually setting this value in code, your numbers might need adjustment to be 1/1000 of the values in use now.


Breaking Changes in the Summer 2010 Releases

Obsolete RemObjects.Common.Pooling namespace removed from RO/.NET

The obsolete namespace RemObjects.Common.Pooling was removed from RemObjects SDK for .NET. This potentially affects RemObjects SDK DataAbstract for .NET server applications created using pre-Spring 2010 releases. Members of this namespace were used to specify PoolingBehavior for the ConnectionManager component. Build error may occur in case non-default values like RaiseError or IgnoreAndReturn were used for this property. To resolve this error it is enough to just replace RemObjects.Common.Pooling with RemObjects.SDK.Pooling.

RemObjects.Common.Pooling had already been marked as "obsolete" and emitted warnings, in previous releases.

BPDX Channels Have Been Discontinued for RO/Delphi

As per request form the original author, we are no longer shipping the BPDX based server channels in RemObjects SDK for Delphi, nor the underlying RO/DXSock libraries. This affects the \BPDX and \RODX folders of the source tree, as well as the RemObjects_RODX_* and RemObjects_BPDX_* packages.

If you are upgrading from a previous version of RemObjects SDK, the source files will not be removed, and you can of course continue using them, while they still work with the current RO code base (Over time, and as RemObjects SDK for Delphi adapts to newer versions of Delphi and different platforms supported by Delphi or FPC, they may cease working).

We recommend that users migrate to one of the other choices of channels we provide, such as Indy, Synapse or IP based channels.

We are working with the authors of DXSock to create new channels based on their latest DXSock 6.0, for a future release, but do not as of yet have a definitive timeline to announce.

RO/.NET Variant Serialization Incompatibly was Fixed

In RemObjects SDK for .NET, the Variant class is designed to provide compatibility with the Delphi variant type. When the variant instance contains boolean value, it was erroneously (de)serialized as Int32 by error, i.e. the boolean value occupied 4 bytes in a stream. This was incompatible with the behavior of RemObjects SDK for Delphi. This has been changed in the current release, so variants containing boolean values are now serialized as Byte occupying 1 byte in the stream.

Gthis change restores binary compatibility with RemObjects SDK for Delphi (and also the new Variant support in RemObjects SDK for Xcode added in this release, but may break in the unlikely event of variants being sent between .NET servers and .NET clients, if not both client and server are updated to use Summer 2010 release.


Breaking Changes in the Spring 2010 Releases

Method Signature Changes in Data Abstract for Xcode

The [DADataTable getDataTables*] methods have been changed to return an NSDictionary instead of an NSArray. We realize this is a breaking change, but given the relative newness of the DA/OX API and that a return value of an array was really quite unhelpful (there's no easy way to get at the appropriate tables by name), we decided this was worth changing now, while the product is still young.

Only the synchronous versions of the methods are affected.

Events Subscription and Compatibility between Delphi and .NET

This change is not really breaking, all existing functionality has been left intact. However, the explanations below are important to understand to succeed in cross-platform events implementation.

Overview

If you have used both RemObjects SDK for Delphi and .NET simultaneously, you may have noticed that the callback events processing approach differs slightly and it was impossible to, for example, build a Delphi server that sends callback events to a .NET client application.

In this release we have fixed this problem, but discovered a security flaw in the Delphi events approach: the client application was allowed to manipulate with its own events subscription. It allows to create a malicious client application that will flood the server with millions of subscriptions causing the denial of service and the server has no ability to resist it. That's why we have decided to not propagate the Delphi events approach to the .NET side. The .NET approach has been implemented in RO SDK for Delphi instead.

Summary:

Directions for developers

Example (based on the File Broadcast sample) of how to change the method in the FileBroadcastService_Impl.pas file:

procedure TFileBroadcastService.uploadfinished(const filename: Unicodestring; const filesize: Int64);
begin
  // This line should be added so the event can reach the client:
  RegisterEventClient(GuidToString(ClientID), EID_FileEvents); 
  (EventRepository as IFileEvents_Writer).OnNewFileAvailable(Session.SessionID, filename, filesize);
end;

WideString vs UnicodeString types in Unicode versions of Delphi (2009 and later)

Overview

In Delphi 2009, a new data type for wide strings - UnicodeString was introduced, which is more efficient than the old WideString. During the migration RemObjects SDK to Unicode, a mistake was made, and RODL codegen was not changed to use the new UnicodeString type (with an alias being provided for Delphi 2007 and below), as was intended; instead WideString was still used. Starting with the Spring 2010 releases, this has been rectified, and RODL-generated code now uses UnicodeString.

Summary:

Directions for developers

Navigation
products
platforms
special
Toolbox