put together a MVC framework which we’ve been reluctant to release because he’s not sure if it’s quite right or if it’s different enough from other frameworks, and because I don’t have time to put it up and document it. So we’ve been brainstorming on how it might be better. I’ve decided that there are two main focuses when designing a Flex application, and it results in two different kinds of frameworks. There is Flex-focused applications and server-focused applications. The difference between these two applications is the location of the majority of domain logic. In Flex-focused applications you have a full domain model with methods and properties and relationships between the models. There is a lot of logic on the Flex side that is not presentation logic. In server-focused applications Flex takes on a view role. This is where value objects are used the most. More calls are probably made to the server because the Flex app needs to know what to do next or to display next. The Flex app contains mostly presentation logic. Right now I think most of the popular frameworks are server-focused. Value objects are abundantly used. A ModelLocator is used because the model on the Flex side is pretty flat. Right now I mostly do Flex-focused development. Not because I am not as comfortable on the server, but because the applications I make are things like image editors, document creators, etc. and not dashboards into server views. Right now I need a different kind of framework. Right now I need something other than Cairngorm or PureMVC.

Share this:

3 Responses to “Flex or the Server, What’s Your Focus?”

we are working on Flex based assessment tools that have very big domain models. The role of the server is in our case mainly reduced to CRUD operations. We use Cairngorm and find it to become more difficult to expand on what we are doing because everything is so coupled. To prevent this, we’re using the Prana IoC container (of which I’m the author). It solves some of the dependency lock-ins you have with Cairngorm, but I still feel like we too need another architectural framework for our kind of application. That’s why I’m thinking about adding an MVC implementation in Prana that focuses on the domain model. If you are interested in sharing ideas or co-operating, please contact me.

Hi Jacob,
we tried both of Your concepts.
In CRM/Project management application we used a model, where whole JPA ORM model was mapped between Java and Flex, and objects of entity classes were transfered between java and flex. That made server side very simple (sometimes only basic methods of persistence manager wich is very easy in EJB3). But this causes some problems
– too much data is send to flex – whole objects with depedencies are transfered and shown in grid with 2 columns
– all users see the same data – it’s hard to lock properties of objects for some user (e.g. project manager can see project’s budget, but programmers don’t) – such data should’t be passed to client

Now we’re trying to make simple but reusable CMS, that shoul be configurable (without writing any code) for any database model. This means we have to make client-server architecure for passing any data – flex-java class mapping is impossible, because we don’t know data model while wrting the framework. The idea is to create something like queries for objects defining fields, pagination, filters etc.

I think the choice between client-centered or server-centered architecture should be made in context of the problem to solve.

I’ve been exploring using Flex with Salesforce, using the Flex Toolkit as a connector to the database. Server side functionality over and above persistence is implemented with their Apex code stored procedures platform. The advantage is I can deliver SaaS products very quickly – no need to manage a server farm.

The concerns I’m seeing here is with security. For example, if I use a role-based permissions framework to expose appropriate functionality on the client, I’m feeling exposed to someone messing with returned roles from the server, etc.

Any thoughts on the security implications between these two approaches?