I tend to favor the "Model-View-ViewModel" pattern for Silverlight and WPF, and is _really_ concerned with providing a best possible design time experience. I always strive for no-code behind in my applications. These are some of the challenges:
- No support for commands. Can be implemented using attached properties. But commands is important to prevent coupling between event invoker (button/UI element) and event handler. The fewer "named elements" you have to hook events against the better. More flexibility to designer, less chance to screw up. - No support for triggers/data triggers. Today there is no easy way to trigger an animation based on changes made in the ViewModel. For instance, say I set an "IsBussy" property to true, in that case I would like to start a "ProgressBarAnimation". Today I have to write code behind to do that. Nikhil Kothari has some interesting examples on how to use behaviors to achieve trigger-like behavior in Silverlight. But his current implementation breaks Blend 2.5 support, so I haven't been able to use it. - Not allot of guidance on multi page navigation. This is something I've gotten allot of questions. I normally solve this by swapping parts in and out of a "master page", and have a navigation helper on the Application object. But some clear guidance on this would be helpful. - How to provide design time dummy data. I solve this by providing mock implementations of external services, and it works quite well. I use the HtmlPage.IsEnabled to detect weather or not the code is running in Blend. I know this isn't a good check, and that this property is actually used to check if the host has blocked access to the HTML DOM. So a better hook to see where the code is executing would be valuable. - Validation and Data Binding. I'm not a big fan of the way you have to hook event handlers to handle the binding exception event when doing validation. This forces me to add code in the code-behind. I wish I could solve this more declarative. Nikhils behaviors might be one way, a custom control could be another solution. These are some of the initial comments on this topic. I agree that it's interesting to see what people are discovering about Silverlight. At the same time it's also good to reuse alot of experience from WPF. I know Rocky Lotkha is doing interesting things with CSLA.NET, and there is all ready an early port of Prism for Silverlight (Composite WPF Guidance). Cheers, Jonas :) On Thu, Sep 18, 2008 at 5:28 PM, Scott Barnes <[EMAIL PROTECTED]>wrote: > I'm seeing a bit of traffic these days around "how to architect" > Silverlight. I think this is exciting news as folks have not only digested > Silverlight well, but are now pushing beyond the boundaries (growth is a > powerful thing to monitor and observe). > > > > I've got a few ideas on how to solve this, but am curious to hear some of > your pain points specifically around what hurdles you face when architecting > Rich Applications such as Silverlight? > > > > > > *From:* [EMAIL PROTECTED] [mailto: > [EMAIL PROTECTED] *On Behalf Of *.net noobie > *Sent:* Wednesday, September 17, 2008 9:43 PM > > *To:* [email protected] > *Subject:* Re: [OzSilverlight] A couple of questions > > > > ok cool, thanks > > On Thu, Sep 18, 2008 at 2:31 PM, Jonas Follesø <[EMAIL PROTECTED]> wrote: > > Well, you can actually do all this from a Silverlight application. And > anything you could do from MS AJAX, you could do from Silverlight. > > > > And to be fair the "Client Application Services" (for Windows Forms/WPF) > comes with classes that abstract away the service interaction, and actually > gives you a "client side" Membership- and Role Provider. But under the hood > it's all HTTP JSON calls (I assume for performance reasons, as their API > only has synchronous methods for accessing the Membership- and Role > Provider). > > > > Check this post: > http://blogs.msdn.com/brada/archive/2007/05/23/net-client-application-services.aspx > > for more information on what you can do. > > > > The service-end point used by the "Client Application Services" client > libraries are: > > http://localhost/myservice/Profile_JSON_AppService.axd > > http://localhost/myservice/Authentication_JSON_AppService.axd > > http://localhost/myservice/Role_JSON_AppService.axd > > > > You don't get WSDL for these services, but you can invoke them as REST > services and do things like create user, create role etc. given that the > currently authenticated user have the permissions needed. > > > > On Thu, Sep 18, 2008 at 2:19 PM, .net noobie <[EMAIL PROTECTED]> > wrote: > > "new users, create roles, change role assignment etc." they are the things > I wanted to do... > > so really I would be better off handling all this in the ASP.NET page that > is hosting my Silverlight Applications and then talking too and from the > ASP.NET page with my Silverlight Application to do these things? > > then to stop the page reloading I would need to do these tasks "new users, > create roles, change role assignment etc." via something like MS AJAX...? > > > > On Thu, Sep 18, 2008 at 2:07 PM, Jonas Follesø <[EMAIL PROTECTED]> wrote: > > From a Silverlight client point of view, what else do you really need? > Everything that has to do with validation, accessing user store etc. has to > happen on the server and not on the client. Some thing, like Authorization > (does this user belong to this role) is useful from the UI, as you can > enable/disable certain buttons and functionality. But in the end you have to > redo all the validation on the server as you can't trust any > input coming from the client. > > > > The reason you got allot more functionality in ASP.NET is because you're > running on the server, and that is a whole different ball game. You got > functionality to create new users, create roles, change role assignment etc. > To do those things from a Silverlight client you would have to expose (and > secure) the individual pieces your self. > > > > > > > > > > > > > > On Thu, Sep 18, 2008 at 2:00 PM, .net noobie <[EMAIL PROTECTED]> > wrote: > > Authentication Application Service, via WCF is a very limited set of > functionality compared to what you have in a ASP.NET page, you can do a > few things like "Login, Logout" and one to two there things right..? > > > > when I was checking it out I ended up making a normal WCF service for my > Silverlight application, then adding the membership to it via just wrapping > the methods of the Membership class I wanted, but it also had a few issues > doing it that way to, but I got all the parts of Membership I wanted to > use...? > > > > is this a bad way to go about it in the future? > > > > please note it was just a learning application for myself, so I was not > really worried about any security issues passing the data back and forth at > the time > > > > On Thu, Sep 18, 2008 at 12:51 PM, Ross McKinnon < > [EMAIL PROTECTED]> wrote: > > Thanks to both of you. > > > ------------------------------ > > *From:* [EMAIL PROTECTED] [mailto: > [EMAIL PROTECTED] *On Behalf Of *Jordan Knight > > *Sent:* Thursday, 18 September 2008 12:44 PM > > > *To:* [email protected] > *Subject:* RE: [OzSilverlight] A couple of questions > > > > You where slowed down by all the extra detail J > > > > Regards, > > *Jordan Knight* > Readify - Senior Developer > > Suite 206 Nolan Tower | 29 Rakaia Way | Docklands | VIC 3008 | Australia > M: +61 403 532 404 | E: [EMAIL PROTECTED] | W: www.readify.net > > > > *From:* [EMAIL PROTECTED] [mailto: > [EMAIL PROTECTED] *On Behalf Of *Jonas Follesø > *Sent:* Thursday, 18 September 2008 12:42 PM > *To:* [email protected] > *Subject:* Re: [OzSilverlight] A couple of questions > > > > Haha - looks like you beat me too by 5 min Jordan ;) > > > > > > On Thu, Sep 18, 2008 at 12:38 PM, Jordan Knight <[EMAIL PROTECTED]> > wrote: > > Sorry Ross J - not Michael. > > > > Regards, > > *Jordan Knight* > Readify - Senior Developer > > Suite 206 Nolan Tower | 29 Rakaia Way | Docklands | VIC 3008 | Australia > M: +61 403 532 404 | E: [EMAIL PROTECTED] | W: www.readify.net > > > > *From:* [EMAIL PROTECTED] [mailto: > [EMAIL PROTECTED] *On Behalf Of *Jordan Knight > *Sent:* Thursday, 18 September 2008 12:35 PM > *To:* [email protected] > *Subject:* RE: [OzSilverlight] A couple of questions > > > > Hi Michael, > > > > I can answer 1 and 3 for you (and maybe a bit of 4): > > > > The short answer is Forms Authentication and/or ASP.NET membership - i.e. > use the normal stuff J. Whenever Silverlight accesses the server, it uses > the standard browser networking stack, so you will have access to session > state, cookies and all the other goodies you expect. > > > > To find out which user is logged in you can use the ASP.NET Authentication > Application Service, which can be exposed via WCF quite easily (then you can > log in and check login status etc from Silverlight). > > > > 4 is a little more tricky, but basically you could hook up events to AJAX > changes in the page then fire through pieces of information to Silverlight > using the HTML JavaScript bridge... It's quite easy to do, have a Google > around. > > Regards, > > *Jordan Knight* > Readify - Senior Developer > > Suite 206 Nolan Tower | 29 Rakaia Way | Docklands | VIC 3008 | Australia > M: +61 403 532 404 | E: [EMAIL PROTECTED] | W: www.readify.net > > > > *From:* [EMAIL PROTECTED] [mailto: > [EMAIL PROTECTED] *On Behalf Of *Ross McKinnon > *Sent:* Thursday, 18 September 2008 12:20 PM > *To:* [email protected] > *Subject:* [OzSilverlight] A couple of questions > > > > Hi all, > > > > I am the CIO of Michael Hill Jeweller which is an international (US, > Canada, New Zealand, Australia) jewellery retail chain whose global head > office is based in Brisbane and we are in the process of replacing our > global website. The executive here are very excited by the opportunities > presented by silverlight and we will be developing the new site using this > technology and are trying to release it as soon as possible. > > > > I did have a couple of questions which I have posed to Microsoft, but they > have been unable to answer and most of them are directed towards my > personally perceived weaknesses of silverlight and I was hoping that someone > would be able to point out how they can be achieved. Hopefully our work > arounds are not the suggested best practice. > > 1) What is the best way of persisting user identity through multiple > silverlight pages? > > 2) It appears to me that linq to SQL entities seem to lose the ability to > maintain state (ie know what is changed) after passing through a wcf call > and silverlight treats it like a normal class. Is that the case and if so, > is that going to be changed? > > 3) What is the best practice for integrating security and sessions between > asp.net / silverlight / wcf? > > 4) Are there plans for a binary formatter in the silverlight framework? > > 5) I have been overlaying silverlight pages over aspx with master and > content pages. The largest issue with that is being able to pass information > between your master and content pages (easily achievable in aspx), but are > there any plans to implement a method to easily pass information between SL > pages on the client (usually user specific information), other than at > creation of the page. > > Thanks for any help in advance, > > Ross. > > 18/9/2008 Ross McKinnon [email protected] > > This email and any attachments ("Email") are intended only for the > addressee > and may contain privileged, confidential and/or disclosure-exempt > information. > You must not edit this Email without our express consent. > Michael Hill Jeweller (Australia) Pty Ltd does not warrant that this Email > is complete, error-free or virus free, and by opening any attachments, > you accept full responsibility for the consequences. If you are not the > addressee, > you must not disseminate, rely upon or copy this Email, and you must > immediately > erase permanently and destroy all records of it and notify us by phone (at > our cost). > Thank you. > > ------------------------------------------------------------------- > OzSilverlight.com - to unsubscribe from this list, send a message back to > the list with 'unsubscribe' as the subject. > Powered by mailenable.com - List managed by www.readify.net > > ------------------------------------------------------------------- > OzSilverlight.com - to unsubscribe from this list, send a message back to > the list with 'unsubscribe' as the subject. > Powered by mailenable.com - List managed by www.readify.net > > ------------------------------------------------------------------- > OzSilverlight.com - to unsubscribe from this list, send a message back to > the list with 'unsubscribe' as the subject. > Powered by mailenable.com - List managed by www.readify.net > > > > ------------------------------------------------------------------- > OzSilverlight.com - to unsubscribe from this list, send a message back to > the list with 'unsubscribe' as the subject. > Powered by mailenable.com - List managed by www.readify.net > > ------------------------------------------------------------------- > OzSilverlight.com - to unsubscribe from this list, send a message back to > the list with 'unsubscribe' as the subject. > Powered by mailenable.com - List managed by www.readify.net > > 18/9/2008 Ross McKinnon [email protected] > > This email and any attachments ("Email") are intended only for the > addressee > and may contain privileged, confidential and/or disclosure-exempt > information. > You must not edit this Email without our express consent. > Michael Hill Jeweller (Australia) Pty Ltd does not warrant that this Email > is complete, error-free or virus free, and by opening any attachments, > you accept full responsibility for the consequences. If you are not the > addressee, > you must not disseminate, rely upon or copy this Email, and you must > immediately > erase permanently and destroy all records of it and notify us by phone (at > our cost). > Thank you. > > ------------------------------------------------------------------- > OzSilverlight.com - to unsubscribe from this list, send a message back to > the list with 'unsubscribe' as the subject. > Powered by mailenable.com - List managed by www.readify.net > > > > -- > .net noobie™ > > ------------------------------------------------------------------- > OzSilverlight.com - to unsubscribe from this list, send a message back to > the list with 'unsubscribe' as the subject. > Powered by mailenable.com - List managed by www.readify.net > > > > ------------------------------------------------------------------- > OzSilverlight.com - to unsubscribe from this list, send a message back to > the list with 'unsubscribe' as the subject. > Powered by mailenable.com - List managed by www.readify.net > > > > > -- > .net noobie™ > > ------------------------------------------------------------------- > OzSilverlight.com - to unsubscribe from this list, send a message back to > the list with 'unsubscribe' as the subject. > Powered by mailenable.com - List managed by www.readify.net > > > > ------------------------------------------------------------------- > OzSilverlight.com - to unsubscribe from this list, send a message back to > the list with 'unsubscribe' as the subject. > Powered by mailenable.com - List managed by www.readify.net > > > > > -- > .net noobie™ > > ------------------------------------------------------------------- > OzSilverlight.com - to unsubscribe from this list, send a message back to > the list with 'unsubscribe' as the subject. > Powered by mailenable.com - List managed by www.readify.net > ------------------------------------------------------------------- > OzSilverlight.com - to unsubscribe from this list, send a message back to > the list with 'unsubscribe' as the subject. > Powered by mailenable.com - List managed by www.readify.net > ------------------------------------------------------------------- OzSilverlight.com - to unsubscribe from this list, send a message back to the list with 'unsubscribe' as the subject. Powered by mailenable.com - List managed by www.readify.net
