Enterprise App Development, easy as Core Data?

I took Apple's Core Data tutorial and loved it. The ease of creating machine-local database interfaces similiar to what I've done in FileMaker over the years is awesome!

However, I'm ultimately wanting to create a database back-end that sits on a server in the closet and a front-end made in xCode that could be installed on client computers around our office. I don't want to make a web app with a browser interface. I want to make a rich desktop interface for accessing our data.

Is there a way to do this as elegantly and painlessly as Core Data? I've read about WebObjects and EOF but can't get a definitive sense that it is what I'm looking for. WebObjects is so "web"-centric that I can't tell if I can develop a desktop app using it.

Anyone know what I need?

Power Mac G5 dual 2.5ghz, Mac OS X (10.4.5)

Posted on Apr 19, 2006 12:56 PM

Reply
4 replies

Apr 26, 2006 12:49 AM in response to Ryan Harlin

Hi Ryan,

I've read your three threads and have been idly thinking about them for a couple of days. I know nothing about this really so forgive the musings and thoughts. I read this one first so I chose it to reply to.

When I first read it I initially thought "what's stopping you use CoreData?". It certainly easy enough to alter the location of the data file (and the datatype it's saved as), so presumably it would be possible to locate the data on an external volume somewhere and incorporate some form of mounting and error checking routines before the file is committed.
Then I realised the obvious problem with this relative to what you're actually trying to achieve; namely multiple access by multiple people on various machines, presumably often at the same times. How do you manage simultaneous concurrent access to the same file? I started to then think that this still might be possible with CoreData but by taking a slightly different view. Perhaps implement the application as a desktop app that uses it's own data file on a local volume (probably the normal location ~/Library/Application Support/xxx) to keep changes separate from other users working at the same time and then write other code that manages synchronising with the main file(s) on the server volume. Perhaps using a versioning system like svn for this part. The app could then checkout the master datastore from the server, alter it, save it locally and then when the session's over call the versioning system to update and compare the changes.
This might work if the situation fits but there's obviously large problems with users working on differing data in realtime and other such clumsiness.

On the other hand, I think Cocoa can be used in the manner you want using NSConnection and Distributed Objects. Have a look at this tutorial at CocoaDevCentral about writing a client/server app. It also links to this article at Stepwise which also may be of some use. A must read would also be Apple's docs on the topic of Distributed Objects which are here.

A well known app that offers multiple simultaneous user access to the same file is SubEthaEdit which might also be worth a look.

I'm sorry I can't be any more help and hopefully someone more knowledgeable than I will chime in with better observations/solutions, but no matter which way you choose to approach the problem I think there's going to be some serious coding involved.

Apr 26, 2006 8:43 AM in response to CloitusDisruptus

Thanks for the thoughtful reply.

I started by looking at CoreData which I love for it's simplicity. But Apple's own documentation on CoreData is pretty clear in just what CoreData is and is not:

"Core Data builds on some of the concepts of enterprise-class database application frameworks, such as the Enterprise Objects Framework in WebObjects. However, make no mistake, Core Data is not an object-relational database access framework."

But I'll look into those Distributed Objects. I'm also doing the WebObjects tutorial projects right now but I'm a little underwhelmed at the thought of making a Java front end because I'm sure it won't be as flexible and powerful as what I could do in Cocoa. And I've already written little elements of the app in Cocoa, like capturing signatures on the screen as vector graphics and writing to PDF files, that I just don't know if Java can do.

Thanks, again, for you reply. I have a fantasy that this year at WWDC Apple will proudly announce the return of Cocoa EOF and Enterprise-Level CoreData! Oh well... I can dream. 😉

May 14, 2006 7:24 AM in response to Ryan Harlin

I too really like CoreData, and have been playing around with it for a few weeks now.

After reading as much as I can about it I am confused why Apple continues to use XML in apps like iCal, addressbook and all preferences.

Apple admit this is the slowest method of storing CoreData file and they offer two faster alternatives; Binary and SQLite.

Why choose the slowest file format. I know XML is easy to read by developers but using SQLite can be as easy to. I would rather have the performance gain over XML anyday if I can use CoreData app to retrieve the information anyway.

This thread has been closed by the system or the community team. You may vote for any posts you find helpful, or search the Community for additional answers.

Enterprise App Development, easy as Core Data?

Welcome to Apple Support Community
A forum where Apple customers help each other with their products. Get started with your Apple Account.