I am working on an StoryBoarding application,it is a slide based application in which the authors can put several components like image , sound , captions etc in each of the slide.A collection of slides will make a storyboard.This application will be deployed on a web server (sharepoint + IIS , and php+apache), and several users can collaborate with each other for authoring or reviewing the storyboard.In my application I also want to support auto save ,which will keep on storing the state of the storyboard.User can also save at any point of time by clicking the save button.
I am confused about how to store the state of the storyboard.
1)Presently I am doing this by passing all the storyboard data to a dot net web-service and then that service is storing images,caption etc in their respective tables into a database .
2)Another approach possible is to store the model of the application as a serialized object into the db , which will be more convenient since separating the components of the model (like images,captions etc..) will not be required and also restoring the state of the objects in the application will be easy .
I have two doubts about using approach 2 :-
i) I want the the saved storyboard to load quickly, for which I would like to support the partial so that lighter objects like caption can be loaded quickly but other heavier objects like image,video etc can be loaded on demand. Using approach 2 , do I have to send the whole data in one go or is there way to support partial loading ?
ii) How to implement the auto save feature when using approach 2, for every auto save do I have to send the whole serialized object again back to db or is there a way to send only the changed part of the model to be stored in db .
Please suggest which approach would be better to use for this application , and also answer afore mentioned doubts regarding using approach 2 .
If i would be working on such Application i will use Approach DIVIDE AND RULE, a design seprate logic to save and retrive each components like Images, sound etc, because it can easly handles any modification and enhancement in application,
Another thing is that it will take longer time to save, update and load data from backend if you use approach 2.
I am with approach 1.
Hopes that helps