+1 on triggers/data triggers. It's a PITA to make apps with all the bells and whistles in XAML then have to break M-V-VM to "finish" it off.
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Jonas Follesø Sent: Thursday, 18 September 2008 10:24 PM To: [email protected] Subject: Re: [OzSilverlight] A couple of questions 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<http://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]<mailto:[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]<mailto:[EMAIL PROTECTED]>] On Behalf Of .net noobie Sent: Wednesday, September 17, 2008 9:43 PM To: [email protected]<mailto:[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]<mailto:[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]<mailto:[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<http://ASP.NET> page that is hosting my Silverlight Applications and then talking too and from the ASP.NET<http://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]<mailto:[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<http://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]<mailto:[EMAIL PROTECTED]>> wrote: Authentication Application Service, via WCF is a very limited set of functionality compared to what you have in a ASP.NET<http://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]<mailto:[EMAIL PROTECTED]>> wrote: Thanks to both of you. ________________________________ From: [EMAIL PROTECTED] [mailto:[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 :) 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]<mailto:[EMAIL PROTECTED]> | W: www.readify.net<http://www.readify.net/> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]<mailto:[EMAIL PROTECTED]>] On Behalf Of Jonas Follesø Sent: Thursday, 18 September 2008 12:42 PM To: [email protected]<mailto:[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]<mailto:[EMAIL PROTECTED]>> wrote: Sorry Ross :) - 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]<mailto:[EMAIL PROTECTED]> | W: www.readify.net<http://www.readify.net/> From: [EMAIL PROTECTED] [mailto:[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<http://ASP.NET> membership - i.e. use the normal stuff :). 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<http://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]<mailto:[EMAIL PROTECTED]> | W: www.readify.net<http://www.readify.net/> From: [EMAIL PROTECTED] [mailto:[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<http://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<http://mailenable.com> - List managed by www.readify.net<http://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<http://mailenable.com> - List managed by www.readify.net<http://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<http://mailenable.com> - List managed by www.readify.net<http://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<http://mailenable.com> - List managed by www.readify.net<http://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<http://mailenable.com> - List managed by www.readify.net<http://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<http://mailenable.com> - List managed by www.readify.net<http://www.readify.net> -- .net noobie(tm) ------------------------------------------------------------------- OzSilverlight.com - to unsubscribe from this list, send a message back to the list with 'unsubscribe' as the subject. Powered by mailenable.com<http://mailenable.com> - List managed by www.readify.net<http://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<http://mailenable.com> - List managed by www.readify.net<http://www.readify.net> -- .net noobie(tm) ------------------------------------------------------------------- OzSilverlight.com - to unsubscribe from this list, send a message back to the list with 'unsubscribe' as the subject. Powered by mailenable.com<http://mailenable.com> - List managed by www.readify.net<http://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<http://mailenable.com> - List managed by www.readify.net<http://www.readify.net> -- .net noobie(tm) ------------------------------------------------------------------- OzSilverlight.com - to unsubscribe from this list, send a message back to the list with 'unsubscribe' as the subject. Powered by mailenable.com<http://mailenable.com> - List managed by www.readify.net<http://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<http://mailenable.com> - List managed by www.readify.net<http://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
