6 Cool Things Brewing in the RemObjects Labs

i can’t believe all the cool stuff that’s coming together at different fronts here at RemObjects, this week, so i wanted to give you guys a short glimpse at what’s brewing in the labs.

Carlo has been working on finishing off the Silverlight support in RO and DA (he blogged about it here), something we would have loved to ship in .31 but had to delay for time constraints. It’s finished now, allowing you to write in-browser Silverlight clients that can both call plain RO services, but also fetch and work with data from a standard Data Abstract middle tier server.

There’s no System.Data and DataSet on Silverlight, but full support for LINQ, so Data Abstract leverages our new DA LINQ technology that we shipped as a preview in May, to bring data across. What’s pretty cool is that this allows you to write query statements in your client that will execute on the server side — so if you write

from c in Customers where c.City = 'Berlin' select new class(c.Name, c.Address)

DA will really only fetch those records and fields from the server. Try that with LINQ to SQL, in a Silverlight client!

This is all backed by the new DA SQL engine that Alex and Carlo have been working on and which (together with Silverlight) we hope to ship in August. DA SQL on it’s own is pretty cool — as you know, Data Abstract “abstracts” away the layout of your back end databases from the schema that’s presented to your application logic, as one of the many services of the middle tier.

What DA SQL does is allow you to write standard SQL code on the client side, that will be run against the schema that your server publishes. Mind you, this is not SQL code that gets blindly passed on to the back end database, bypassing your business logic and security; this is SQL code that will be run on the middle tier to determine what data to fetch, based on the names defined in your schema.

For example, the above LINQ query might (mehind the scenes) generate the following DA SQL code and send it to the server:

SELECT Name, Address FROM Customers WHERE City = 'Berlin'

note how this looks like standard code you’d run on SQL Server, mySQL or elsewhere, except this time its run in the DA middle tier. (If, for example, your schema was defined to not allow access to the Address field, the above query would correctly preserve that restriction, and fail. Similar, the the client where to send a ‘DROP TABLE Customers’, the middle tier would kindly refuse to comply).

In other words, the client can use the power and flexibility of SQL, without the risks (and loss of functionality) that direct exposure to the back end database would bring.

Another side effect of our Silverlight work is that Carlo and i finally went ahead and added support for asynchronous calls to RO/.NET. This is a feature we’ve been shipping in RO/Delphi for a long time, and in August, it will finally available for .NET clients, too.

Since Silverlight does not support synchronous network operations at all, this was a crucial part for getting RO and DA to run on the platform.

As you might know from previous posts here, i’ve been spending some time working myself into development for Mac OS X. I’m in the middle of implementing a port of our RemObjects (Client) SDK to OS X and am happy to report that as of yesterday, RO/OS X is running successfully not only on the Mac, but also the iPhone, both in the simulator and on the real device (i probably am not allowed to say this? ;).

The RemObjects Client SDK for OS X is a fully native library implemented in 100% Objective-C, the de facto standard language for OS X development. It’s currently in beta (apply to join!) and we’re planning to ship a “production-ready” pre-release along with our August releases (followed by an official “release” version in November).

Work has also started on the Data Abstract client for OS X, which will sit on top of RO/OS X. But it’s too early to talk timeframes for that, i’m afraid ;).

Finally i’ve been putting a lot of thought into a new infrastructure for Service Discovery over the past couple weeks (inspired by some talks i have seen at WWDC), and earlier this week have started implementing our new ZeroConf based Service Discovery on the .NET/Server side. This is an early prototype right now, and aside from some basic groundwork in the core library will most likely not ship in the August releases (it should be ready for November) but i could sit here all day pressing the “Activate/Deactivate” button of the Mega Demo and see it appear/disappear in the list of services discovered on the client. ;)

Of course it goes without saying that this will be supported for all three platforms — Delphi, .NET and OS X.

So, what have you been up to this week?

marc hoffman

Chief Architect and CEO here at RemObjects Software. Project Manager for Elements and lead developer of Fire, our awesome new development environment for the Mac.

Curaçao