views:

661

answers:

4

Just say you have a quite large and complicated desktop application written in objective-c/cocoa written properly in MVC. You then wish to replace the V and C so that it is a web application?

Is there anything like Tomcat but for objective c? The closest thing I can think of is somehow convert the Model code into an apache module to load in apache?

Obviously I could embed some sort of HTTP server and write a whole pile of code to manage sessions and requests and responses and so on, but might there be a simpler way?

+4  A: 

You can leave the server almost as-is. I'd run it as a daemon in the background.

I'd split the controller part. One part of it resides on the server as a connection between HTTP requests and the daemon.

  • You could run a self-made http server.
  • You could build it into a Apache module as you mentioned.
  • You could access your controller through CGI. This is the easiest option as I see it.

The second part of the controller is written in Javascript in the browser, exchanging data with the server and updating the GUI.

The view part is written completely in javascript.


  • You could - if you want - leave out the controller on the server and make the model understand HTTP requests.

  • For the Controller / View part consider using a framework.

    • jQuery for only a light interface. (Or a similar framework.)
    • I haven't yet found a framework that leaves all the model stuff to the server. Maybe you can use SproutCore or Cappuccino accordingly.
    • SproutCore, the full-backed MVC framework that is used by Apple. (Think so at least.)
    • Cappuccino, another full-backed MVC framework.
Georg
+2  A: 

Have you looked at Cappuccino? http://cappuccino.org/

I have not used but have heard many good things about it.

opsGordon
+1  A: 

The closest you'll probably come to Objective-C web frameworks are either SOPE, or GNUStep, neither of which I have used, but ran across when I was deciding if I wanted to use Rails or something written in Objective-C for my web stuff. There's also ARJDatabase, which is kind of like Core Data, but not source compatible.

The bottom line is, unless you were very careful about how you wrote your code (i.e. wrote it with GNUStep in mind, didn't use anything Apple specific) you're probably going to have to do quite a bit of work anyway. And if you used Core Data at all, there's no way I know of to reuse that outside of a Mac App. And since it's not setup to be used my multiple simultaneous users, you wouldn't want to use that in a web app anyway. Bottom line, I went with Rails.

Shawn Craver
+2  A: 

There is a new web development platform for Objective-C/Cocoa called Bombax. It sounds like exactly what you're looking for (it is designed to allow you to write entire web applications in Objective-C). Perhaps you could even combine it with Cappuccino. You can check it out at http://www.bombaxtic.com.

Loki