Pretty full room. Sorry VERY full room. Glad I cam not too late, even managed to find a plug for my laptop.
- Any application will need to communicate wit a source of data outside of the browser
- Product catalog, product database, etc...
- What kind of data?
- media (images, sounds, videos)
- feeds
- specific services for your app
- Existing Intranet services
- public internet services
- Silverlight 1.0 connects to Media already
- to connect to other services, use JavaScript and AJAX
- In Silverlight 2, managed code to communicate with all kind of services
- Demo: Use WCF for server-side service
- Select generic WCF service (specific templates for WCF-based Silverlight will be available later)
- Create service class with "Contract" attributes, "DataMember" attributes
- To make a generic WCF service compatible with SL, change the binding to "BasicHttpBinding"
- In Silverlight, add Service Reference.
- Then can use methods of the service in Silverlight code.
- Synchronous calls to WCF service impossible.
I don't quite get that part. Why not support synchrnous calls too, since Silverlight supports multithreading? Will try to ask a question later
- And now we will learn how to databind. ItemsControls are now supported in Silverlight 2, cool! Dr WPF is going to be delighted :)
- DataBinding is now exactly same as WPF. Cool!!
Recap:
- Create service using "Silverlight-Enabled WCF service (not in the beta yet, so need to tweak the generic WCF service).
- Define contract.
- Client, add reference to service and use proxy.
Future:
- Thinking of supporting XAML-only binding to WCF services, for example
Breaking changes:
- Web references is not there anymore, it'snow "Add service reference"
FYI: Data format is now SOAP and not JSON
Secure services:
- Silverlight uses credentials stored on the browser, for example after an ASP.NET login.
- For WCF to get user identity, ASP.NET compat mode must be turned on.
What about other service types:
- Using "Add service reference" (but only for self-describing services, for example WSDL).
- Example for Live Search API
- Works with any SOAP 1.1 basic profile compatible service
- Server-side doesn't matter
- Future: Talk to SQL Astoria based services.
- Cross domain is still an issue!!
- Except is target opts in accepting cross domain calls. (so that's how they chose to solve that issue, then...)
- SL looks for policy files: clientaccesspolicy.xml or crossdomain.xml.Specifies what is allowed and what not (subdomain paths, etc...)
- Already used by Flick2, Yahoo, etc...
- Write the code manually
- Using XML, for example with XmlSerializer or LINQ to XML. Then, databind to the result.
- Use built-in classes (RSS/Atom feeds)
The good news is that the code is standard .NET code. Only Silverlight specific parts are about the request (URI, etc...)
Allowed URLS.
- HTTP and HTTPS (though with a few restrictions in Beta1)
- Cross domain rule (must have policy file is not local)
- No FTP or FILE URLs
- Socket support! But only with originating server in Beta1, with some port restrictions
HTTP requests:
- Using WebClient class (simple but limited functionality)
- Using HttpWebRequest (advanced)
- Supported features equivalent to Flash
- GET and POST only
- Setting header only for same domain GET requests
- Response: Can read only content type
- Response code: Only success or fail (403, 404...), no message body
- Cannot override the browser
- Can't control or turn off cache
- Can't control HTTP authentication credentials
- Can't read/write cookies
- Solution: Use proxy...
JSON:
- Not really a reason to use it in SL except if a service is already existing
Note: Maybe in the future support for binary XML
RSS/Atom:
- Pre-built types SyndicationFeed class
- Syndication restrictions same as in "standard" .NET 3.5