Proteus versus MVC

3 views
Skip to first unread message

David Van Duzer

unread,
Sep 11, 2011, 6:28:17 PM9/11/11
to slipstream-proteus-developers
Hi Bruce. I'm hoping you can help me understand some of the
particular advantages of Proteus over other methods of abstraction.
The Model/View/Controller (MVC) paradigm has been quite popular in
recent years. How does Proteus' abstraction of data, resources, and
interfaces improve on MVC and other traditional approaches?

dvd

Bruce Long

unread,
Sep 11, 2011, 7:08:05 PM9/11/11
to slipstream-pro...@googlegroups.com
The primary advantage is the "Inverted concept application." The idea is that instead of embedding the knowledge of how to interact with some object or system in a Java or C++ class we create a model of the system-to-be-interacted-with. 

Here are some examples:

Using Proteus models to abstract resources strips away wrappers rather than creating more wrappers. For example, suppose we want to do 3D graphics on a variety of computers. One way would be to write our own wrapper class over openGL, openGLES, and Direct3D. But those are themselves wrappers over other hardware. So we have all these layers of wrappers to create and maintain.

With Proteus we might start out using a wrapper (SDL for example), but eventually we will create models of individual GPUs. Then when we want to do a particular rendering in 3D, the Proteus Engine could re-factor the code optimized for the particular GPUs and other processors available.

Once a good model of a GPU or other resource is available it will work for any relevant problem all over the world. So what is currently being done over and over by every implementer will need be done only once. Maybe someday the manufacturer will create the model.


2.Suppose I write a class that abstracts Amazon's cloud, Google's cloud, and Dropbox. As long everything I do from now on uses my wrapper class I can add new solutions as they arise. But if functionality or the services change or if one service works substantially different than the others I'll either need to write a very complex wrapper or I'll have to use only the lowest common functionality.

The concepts of how to use the cloud services is in the wrapper class.

But suppose I create a model of these services then I say "I need to store X, Y and Z and process P, Q and R." A solution meeting my particular needs can be created that is optimized for the services I have access to. It can use their advanced features and I need not know about it. I can add new models, remove models or update models as needed. In fact I could merely link to the services' own models. Later if I decide to change my environment around I need not "port" the wrapper class because there is no wrapper class. The models will work as they always did.

With MVC, models are tightly connected to the application being used. With Proteus, models of systems-we-want-to-interact-with (M) are completely separate from view (V) models and the processing logic (the C) is created in real-time to take advantage of available resources. They were likely written by different people who didn't know each other. So the person who designed my user experience is different than the people who created models of MP3s, videos, friends, etc. And none of those folks had to know if I happen to have constructed my own network of 100 GPUs I want to use.
--
Give me immortality or give me death!
Reply all
Reply to author
Forward
0 new messages