Vibrant discussion about CSLA .NET and using the framework to build great business applications.
There is no pre-built data portal router for CSLA .NET for Windows. Interestingly, you are the second person to bring this up in about a week - after no one bringing up such a requirement for a couple years. It just isn't that common to want a 4-tier model with a Windows-based smart client I guess.
The answer I'll give you is the same one I gave a few years ago the last time this came up - just create your own data portal host that delegates each inbound call to the data portal (which will follow normal routing rules). This is all the Silverlight data portal does - though it uses a different endpoint contract from the standard WcfHost because the Silverlight data messages are not in the same format.
If you are using WCF this is pretty darn easy, because all your host needs to do is implement the pre-defined IWcfPortal contract and it will be compatible with existing WcfProxy code. If you are not using WCF, now might be a great time to upgrade :)
Thanks for the confirmation. We are already using WCF so this won't be an issue I just wanted to make sure I wasn't missing something before going ahead and adding the extra router.
I can certainly see how it would be uncommon to use the smart client apps across a 4-tier deployment, so as an FYI the reason we are doing it is because 99% of the application is a web app with the intended host platform being sharepoint. The other 1% of the app requires system level access for sockets etc. that would not be possible to do through standard web applications, so in order to provide the "illusion" that it is still in the web app these portions of the application are in a full trust XBAP. The net result is that we don't know where the user may be accessing the smart client features from due to the nature of the web and therefore have to provide for the possibility of access from outside the corporate network.
Thank you very much for this tip Rocky!
I have a 4-tier model (Database <-> AppServer <-> [Firewall] <-> External-Facing WebApp <-> WinApp).
In deed, the solution was easy enough to implement a custom data portal host using the IWcfPortal interface.
Why WinApp, you might ask? Because I have a deadline and I am much more comfortable using the Windows third-party controls than what's available for Silverlight. Eventually, though, the goal is to deploy a Silverlight UI.