Microsoft | patterns & practices | Developer Network | Enterprise Library | Acceptance Testing Guide | Personal Site
Update 12/09/2010: Thank you all who posted their thoughts in response to this blog and in the forums. A preliminary backlog of stories is now posted and available for voting. http://EntLibSL.mswish.net
Silverlight, originated as a rich media platform, is emerging as a business application platform too. Enterprise Library has traditionally supported line-of-business (LOB) application developers by providing guidance and easily-configurable reusable components that address common cross-cutting concerns. Based on conversations with our users, there seems to be a growing appetite for a similar guidance supporting Silverlight LOB developers. That is why we, at the Enterprise Library team, are currently exploring scenarios for a Silverlight Integration Pack for Enterprise Library 5.0 and we would like to hear your stories that will help to shape this release. Note, we are not targeting Silverlight for Windows Phone, but are focusing on the standard Silverlight 4 platform.
In order to ensure we get the best release possible for Silverlight, we would like to get your opinions on the following questions:
This round of public consultation will be open till Nov 1, 2010, after which we’ll analyze the feedback received and, as we usually do, share our backlog with the developer community for further prioritization. In the meantime, please tell us what’s on your wish list. You can post your requests as replies to this blog entry or if you prefer, send them directly to me.
Also, please invite others to join us in this feedback loop.
My initial thoughts are that some support for logging and caching would be really nice - perhaps fairly obvious there I realize, but important and useful for us. For logging that would potentially involve logging on both the client and the server (something to simplify the scenario of having to create a web service to log back to the server) Additionally a requirement would be in managing the size of the download so that it doesn't blow up the size of the xap file being downloaded especially since logging would potentially need to be in the initial download and not pulled in as an additional module.
At my shop we tried to build a decent implementation for connection and disconnected scenarios using IsoStore; I had this really crazy idea to store log entries i.e. collections of types that looked like EntLib LogEntry objects for different levels (INFO, WARN, etc.) as well as some context info: operation name; bits about the namespace/type involved in the StackTrace. I unravelled the stack trace to find the root exception and stored that, not hard just cumbersome.
To echo the previous comment, we setup an endpoint as well to (try and) send the logs to behind the scenes but we didn't get that far. I'm not sure if there's a way to get around a dedicated endpoint.
I stored logging configuration (max entries to process at once to keep message size down; logging level for a particular environment) in the database and requested it and configured the logger at runtime instead of using configuration. I couldn't find a way futz with the web configuration. I can't get to the ServiceClient configuration at runtime since its xapped up.
To be brief, I had to punt and build up something that looked like a flat file and jammed that into the users' IsoStore. We had shut off the endpoint since it was created outside of our WSSF implementation and caused problems for the ones that were. So, a script to build that service endpoint with any wiz-bang WCF behaviours to handle quicker wire-ups would be nice.
& for xbap partial trust (internet zone)
security block : authentification & authorization
make an easy way to load xap files asynchronously. and simplify multitouch gestures. holla at ur boi
Logging - local and to Server
Caching - Transparent data access, expecially for OOB & Offline scenarios
Interop - Accessing Windows features OOB, like Certificate stores, the Speech API etc
Workflow - sort of a lightweight, UI centric WF ,,,,
An embedded console would be nice.
Could you put up a list on Uservoice and we can vote on it?
* Logging - the priority for me is to be able to log back to the server, ideally sharing the server-side EntLib database and configuration that I’ll have already set up. It would be useful to be able to log to Isolated Storage as well, especially in the event of a server-side problem. A nice-to-have would be when in Out-of-Browser mode, and disconnected, log (serialize?) to Isolated Storage but provide a mechanism to deserialize the entries and send to the server when connected. I’m not necessarily expecting EntLib to notice the connection state (though that would be nice) but to provide the mechanism for storing and retrieving entries locally.
* Exception Handling – and integration with Logging.
* Unity Policy Injection – for any blocks implemented for Silverlight.
Every app I’ve written has exception handling and logging so I can know as soon as the user knows that something has gone wrong. I’ve just rolled my own for my current SL4 app but I’d rather use yours.
It would be good if everything worked with RIA Services but didn’t depend on it.
2. Exception Handling
3. Unity (not sure this doesn't work today?)
We actually required a logging and exception handling block for Silverlight and hand-built it. Here are few features i will love to have in-built into enterprize app blocks.
1. Logging @ client and @ server. the Silverlight end should be able to poll server based on batch log message threshold (log messages are send to server in batches of a configurable value so that the client-server communication is minimum). Currently we are achieving this using reactive framework.
2. The log can also be tweaked based on time(so that messages are send to server per 1 minute)
3. Caching using isolated storage (ideally with inbuilt support of SQLLite or mongo so that the cache can be treated more like a local database)
4. More importantly; i will love all this based on "Convention over Configuration).
5. Lastly, Good to have feature- If all this come packaged in a "Postsharp" like AOP package then it will be awesome. After enterprise library are eventually meant to deal with cross-cutting architecture aspects!!
Here is my humble blog post on same: geekswithblogs.net/.../enterprise-library-logging--exception-handling-and-postsharp.aspx
1. Logging (Client and Server)
4. Localization & Globalization (This could be part of Enterprise Library for SL)
5. Navigation (This too could be part if Enterprise Library for SL - wherein a component which we drive the applications navigation system)
* Logging : enabling logging @client and synchronization with the server side.
* Exception handling and WCF Fault handling @client side.
* Caching with isolated storage
*Unity policy injection
* Authentication & authorization
* Secure data transfer between client and server
*the xap file size could prevent the use of entlib with silverlight
1. Validation attributes and validators available in the silverlight package. 2. Exception handling.
1. Security application block
2. Logging application block
3. Exception handling block
4. Validation block
Re: Secure data transfer between client and server
Isn't that what HTTPS is for?
Can you elaborate on your scenario?
Please help us understand what specifically EntLib for SL can do to help address your localization & globalization stories?