1) More than one shell core inside a multicore project?
There is a skeleton with some navigation buttons and common functions.
In multicore context this would be the 'shell', right?
Inside this 'shell' the user could open different tabs wich will be place inside a view stack.
A tab is like a module and provides different views with different functionalities and it's own tab related navigation. Should be each tab have it's own shell core? Or should each tab 'submodule' including the tab skeleton be represented by a core?
It all depends. Will each tab be massive, really different, and possibly only loaded sometimes? If so, probably make it a core of its own. But that's not the only reason to make something a separate core. Even if every section will be loaded each time, sometimes it's just easier to have each section be a core of its own because it simplifies the overall app. Inside a core, you usually only have to deal with the stuff in that core. This makes it easy for you to split the functionality across teams. You can have different teams working on different cores. Also, to answer the other question here, only one shell exists - the main app.
2) How granular-> how many cores in a multicore project?
I've read one benefit using multicore is to be able to create unit tests in a proper way.
But what should we define as a unit, my understanding is that one core represents a unit.
Within an application there could be tons of functions, modules, submodules... units after all.
As a result of this we would have tons of cores inside a project. Is there a limitation for the number of cores inside a project?
No, for unit testing, you don't have to have the core be the 'unit'. The benefit of MultiCore for unit testing is that with each test in the test suite, you can create a NEW facade for testing. With Standard, each test uses the one and only Facade, so you can't get back to a clean slate for the next test. You can test whatever you want. Look at the MultiCore framework unit tests to understand this better.
3) Shared proxies
In my application each tab has references to same proxies.
E.g. one tab provides a userlist and another tab displays detailed informations of one user. So both tabs have a reference to the 'UserCollectionProxy' and both could manipulate the proxy. How this works with the multicore version? Should this be done by using pipes?
I know the best way is to have 100% encapsulated modules, but I think this doesn't work in real life!?
Yes, this absolutely works in real life or there'd be no point in doing a modular approach at all!
The only thing that needs to be shared is data object classes and 'protocol' classes - i.e. custom message types.
All you have to change is your thinking. Don't have multiple cores 'share' a proxy, make a separate core (or cores) for talking to the service(s) and send that core a message (if you're using pipes to comm between cores) or invoke a method (if you're using interfaces and core references for comm). So your service core is the only one that has the proxy. Send it a message that says, give me the user list, and the core receives the message, executes a command to figure out what you're trying to do, and manipulates the proxy to make a call. It should use the async token pattern to remember what it was doing so that when the service responds, it can trigger a command that sends a message back (if using pipes) or calls a method on the other core (if using interfaces) to get the data back to the caller.
4) 'Dynamic' cores
To make sure that each view/mediator inside a tab handles the right notifications I make an extensive usage of notifications type parameter by passing an unique id with it. Sometimes this is a bit confusing.
Is it right that by using the multicore version I'll don't have to pay attention to this cause within multicore each core have an unique id?
Each core does have a unique ID. You still have to target the right core, and you'd be sending pipe messages instead of notes, (or making method calls if using interfaces). But your mediators wouldn't need to check for note type all the time.
5) EmployeeAdmin multicore demo?
For me it would be helpful if the EmployeeAdmin demo would be available as multicore demo.
Are there any examples like this out there?
Well, there is the PipeWorks demo, and the Modularity Demo for Flex. They should give you some idea.
https://github.com/PureMVC/puremvc-as3-demo-flex-pipeworks/wikihttps://github.com/PureMVC/puremvc-as3-demo-flex-modularity/wikiAlso you can see a real world example at
http://seaofarrows.com +
http://seaofarrows.com/srcviewHope this helps!
-=Cliff>