Silverlight 3 just got out and already we are hearing about the new version, and this is one of the huge advantages that Silverlight has (IMHO of course), because we know that they are always trying to get more into there without sacrificing the size and the cross-browser and platform of the technology.
One of the first sneaks about the new Silverlight 4 was in Amsterdam as you can read more here, in this The Inquirer article.
“(…)In an early preview of Silverlight 4 media-specific features, the Vole showed off what its next generation of movie experiences could do even when saddled with its offline PlayReady DRM. (…)”
“(…) A spokes Vole said that Silverlight 4 will enable movie studios to offer network-delivered updates, special offers and live events, and flog more than just one or two movies to punters (…)”
I say, hum interesting, I would love to know more about the new features so I’ll keep blogging when that happens.
When building Software as a Service (SaaS) solutions one of the things that is very important to consider is the Multi-Tenancy of the Database, and the different approaches that available in order to achieve the best option.
The option is always the same in every part of any solution, and this is from a Fixed Solution to a Fully Configurable Solution, and a SaaS solutions normally starts somewhere in the middle, that is when different customers can have different functionalities and even different UX. But a very important thing to acknowledge is the fact that in order to maintain this kind of differences we need a data model that needs to be Multi-Tenant, and so the next choice to make is the Multi-Tenancy approach that will be used, and it can be:
- Separate Databases for each Customer
- Isolation, The most Isolation we can have, and the one we can be sure that no customer can access other customer’s data
- Customization, Each customer can have different data model without affecting other customers
- Performance, The fact that the data is isolated allows that the several customers have performances accessing that are dependent only on their amount of data, and not other customers data.
- Manageability, Whenever a customer has a problem with the data on the solution, or needs a migration, or backups are easier to achieve since they are isolated.
- Same Database, Separate Schemas for each Customer
- Isolation, This is in the middle way since we have from one side the data isolated since we have different schemas for each customer, but all resides on the same database, simplifying the number of databases that reside on our server.
- Customization, Each customer can have different data models without affecting others
- Performance, The fact that the data resides on the same database as other customers, the amount of data from other customers can affect the performance of accessing the data, but of course this can be simplified by using Partitioning on the database.
- Manageability, Whenever a customer has a problem with the data on the solution or even a migration it’s still not so hard since we have different schemas for each customer, but for separate backups this is not that easy.
- Same Database, Same Schema for each Customer
- Isolation, This is the less isolated solution for data since everything reside exactly on the same tables, and database, and then this will simplify the number of Databases and Database objects on the server.
- Customization, This makes that every customer have the same schema, and so customization is only possible using approaches like:
- Having several Custom columns on the tables, like, Custom1, Custom2, and so on.
- Having a table for customizable columns, like ColumnName, ColumnType, ColumnValue.
- Performance, The fact that the data is nor isolated makes that the amount of data from other customers affect the performance of accessing data, but of course this can also be achieved using Partitioning on the database based on the for instance in the TenantID.
- Manageability, This becomes harder since everyone's data is on the same tables and so the separation of the backups, as well as the manageability of the customers data becomes harder, but the possibility to run checks on customers data became easier since we always know at front the schema used for each customer.
A very interesting document regarding this subject is this one that is part of the MSDN site, and that is called “Multi-Tenant Data Architectures”. Another interesting reading about this subject is this article from Scott Mitchell in the 4GuysFromRolla community site about “Querying a Multi-Tenant Data Architecture”.
In order to know more about SaaS architecture and solutions I’ll suggest the following articles:
Hopes this can help you get started or even with your choices in terms of Multi-tenancy of Data.
Visual Studio 2010 is approaching rapidly from the launch and with it a new set of features will also appear.
One that I think is very important is the Architectural Tools that come with this new version, and elements like:
- Dependency Graph
- Filters using Direct Graph Markup Language (DGML) on top of the generated graph.
- Views as:
- Dependency Matrix
- Forced Direct Layout
- Top to Bottom Layout
- Sequence Diagrams
- Available on the Code Editor
- Unified Modeling Language (UML)
- Usage of UML to define the project
- Use Cases (UC)
- Creation of Use Cases
- Integration with TFS, since we can select an element in the use case and build, link or View the associated Work Items.
- Layer Designer and Layer Validation
- Possibility do build the Architecture of the solution and associate some validation elements that will always be enforced during the development process.
To know more about this subject read this S.Somasegar post.
Another very important features are the Debugging and Profiling.
- Debugging
- Built in Debugger for MPI programs. Now with the new VS2010 we can select a cluster head node, how many cores you want, and hit F5 to debug your MPI program.
- SOA Debugging
- Up until now, debugging Cluster SOA was limited to basic WCF/.Net style debugging with no cluster integration.
- In Visual Studio 2010, an add-in for Cluster SOA enables the SOA Settings tab, allowing you to choose a head node, debug nodes and services, deploy runtime libraries and clean up automatically.
- Profiling
- VS Profiler can offer insight into performance issues
- Shows a comparison report across multiple runs or builds so you can easily see the effect of your changes.
To know more about this subject read this S. Somasegar post.
Prism is a real interesting Guidance and was built for Silverlight 2.0, and some of the feedback I’ve received is if it works well with the new version 3.0, and so I remembered blogging about this.
The most usual questions are:
1. Does this work well with Silverlight 3 ?
- Yes it works fine with this new version of Silverlight.
2. Does this work well with .NET RIA Services ?
- Yes. They don’t only work well together, they actually complement each other, since one of the elements in the product backlog of the Prism Team was the access to server data, and since they didn’t had time to do this, .NET RIA Services can do this for them.
In order to know more about the subject read this David Hill’s post.
About how to have quick starts about Prism read this other David Hill’s post.
After all the information’s regarding the ADO.NET Data Services v1.5 CTP2, now the Product Team launched a tutorial in how to use this version with Silverlight from another domain and also out-of-browser. And so I think this is important for everybody that is working in Silverlight.
In order to know more about the subject read this post from the Product Team.
Recently in a GASP (Grupo de Arquitectura de Software Português) we had a presentation regarding the need and the usage of CEP in solutions and the implementation presented was NESPER – Esper Complex Event Processing for .NET that is an Open-Source software available under GNU General Public License (GPL) v2. From what I saw there it’s very interesting and also not that difficult to use, but I always thought that it was strange that Microsoft was doing nothing regarding this subject that is so important in Event-Driven Architectures (EDA) or even called Advanced SOA.
Our wait is reaching an end, because Microsoft is already working on this and even already has a CTP version that can be downloaded here and that is called Microsoft® SQL Server® StreamInsight CTP2.
But what is Microsoft® SQL Server® StreamInsight CTP2?
“Microsoft® SQL Server® StreamInsight is a platform for the continuous and incremental processing of unending sequences of events (event streams) from multiple sources with near-zero latency. These requirements, shared by vertical markets such as manufacturing, oil and gas, utilities, financial services, health care, web analytics, and IT and data center monitoring, make traditional store and query techniques impractical for timely and relevant processing of data.
StreamInsight allows software developers to create innovative solutions in the domain of Complex Event Processing that satisfy these needs. It allows to monitor, mine, and develop insights from continuous unbounded data streams and correlate constantly changing events with rich payloads in near real time. Industry specific solution developers (ISVs) and developers of custom applications have the opportunity to innovate on and utilize proven, flexible, and familiar Microsoft technology and rely on existing development skills when using the StreamInsight platform.
Some of the key feature areas are:
- Derive meaningful and relevant information from data/events streams through complex patterns. These patterns can be defined using a declarative query paradigm based on well-defined streaming semantics with LINQ as query language.
- For the development of applications, adapters, and analytics, the user can rely on well-established and powerful development frameworks and tools such as .NET, LINQ, and Microsoft Visual Studio.
- The platform integrates with various data sources and sinks through input and output adapters. The framework to build domain-specific adapters utilizes a .NET API to make adoption of the platform easy. Independence between adapters and queries facilitates seamless integration of real-time and historical analysis.
- The platform architecture supports a variety of deployment options, from scenarios with a low-footprint embedded option to high-end server deployments.
- A rich set of manageability features such as a management interface, a diagnostic interface and a debugging tool are provided as part of the platform. “ (from the Microsoft site)
To know more about the licensing terms of this new product, check here.
From what I’ve checked there are some interesting comments regarding this subject like this Richard Seroter’s post in the “Low Latency Data and Event Processing with Microsoft SQL Server “ part of that post.
Another comment about this is from Charles Young in this post.
I’ll investigate a little bit more and I’ll give more information’s afterwards.
After yesterdays post about the availability of the CTP2 of ADO.NET Data Services v1.5 here are some more details regarding the Projections, Feed Customization and Data Binding.
As told before Projections, the possibility of getting only the columns chosen instead of retrieving all the columns. With this we have now a new set of expressions to provide this ability on the URI, and in order to achieve we have now two new keywords available, that are:
- $select, allow us to define which columns we want to be get
- $expand, defines that along with the results from the requested entity, we also want to get the results from a specific relationship
- But in order for this to work we need to add the following 2 properties to the service:
- For more information’s regarding this subject read this post from the Product Team.
Feed Customizations are the possibility to customize the way the feed is created instead of using only the default AtomPub version.
- In order to achieve this customization we must use the EntityPropertyMappingAttribute that will define the relationship between the Property and the name that will be used in the feed.
In the following sample we are defining that when building the feed, instead of using the complete type definition
1: <author>
2: <name>Nuno Godinho</name>
3: <email>someone@company.com</email>
4: </author>
we will have the Author element with the value that is on the Name Property of the Author class (considering that Author is a type that contains several properties and one of them is Name):
1: [EntityPropertyMapping(
2: "Author",/*Source property path , the property of the Entity type to be mapped*/
3: SyndicationItemProperty.AuthorName,/* Syndication item to which the Source Property is mapped*/
4: SyndicationTextContentKind.Plaintext,/* Syndication content kind for the syndication item this property is bound to */
5: true/* If false the property value is only placed at the mapped location & removed from the <content> section of the atom:entry*/
6: )]
and so the result will be:
1: <author>Nuno Godinho</author>
For more information's regarding this customization read the following posts:
Data Binding is now simplified, because using the DataServiceCollection class we can bind it directly to the Data Service.
- For more information’s regarding this subject read this post from the Product Team.
ADO.NET Data Services (aka Astoria) has now the CTP2 release for version 1.5 available that will have the following new features:
- Projections, the possibility of getting only the columns chosen instead of retrieving all the columns. With this we have now a new set of expressions to provide this ability on the URI.
- DataBinding, Simplification of the DataBinding for Silverlight and WPF, because using the DataServiceCollection class we can bind it directly to the Data Service.
- Row Count, Ability to determine the number of elements in a set of entities without having to retrieve them all.
- Feed Customization, Possibility to customize the way the feed is created instead of using only the default AtomPub version.
- Server Driven Paging, Provides the ability to define the number of elements retrieved by a request, and also the server will provide a link to the Next and Previous results page.
- Enhanced BLOB support, enable data services to stream arbitrarily large BLOBs, store binary content separate from its metadata, easily defer the loading of BLOB content when its metadata is requested, etc.
- Request Pipeline, Possibility to handle the several events that occur during the Request because in the version we have access to a complete set of Request Level Events.
- New Interface for Custom Providers Writer, New model to develop Custom Providers for ADO.NET Data Services, like here.
You can download it here, and to know more about the subject, read this post about this by the Product Team.
One of the limitations of TemplateBinding Markup in WPF is the fact that we cannot use it inside the ControlTemplate.Triggers because it really doesn’t work, since as Mike Hillberg said here, “TemplateBinding is a lightweight, but less functional, version of a Binding with a RelativeSource of TemplatedParent. One of the things that a TemplateBinding can't do is work within the ControlTemplate.Triggers; TemplateBinding only works within the template content” .
So we have this:
MyControl.cs
1: public class MyControl : Control
2: {
3:
4: public Boolean Selected
5: {
6: get { return (Boolean)GetValue(SelectedProperty); }
7: set { SetValue(SelectedProperty, value); }
8: }
9:
10: // Using a DependencyProperty as the backing store for Selected. This enables animation, styling, binding, etc...
11: public static readonly DependencyProperty SelectedProperty =
12: DependencyProperty.Register("Selected", typeof(Boolean), typeof(MyControl), new UIPropertyMetadata(false));
13:
14:
15:
16: public Brush SelectedColor
17: {
18: get { return (Brush)GetValue(SelectedColorProperty); }
19: set { SetValue(SelectedColorProperty, value); }
20: }
21:
22: // Using a DependencyProperty as the backing store for SelectedColor. This enables animation, styling, binding, etc...
23: public static readonly DependencyProperty SelectedColorProperty =
24: DependencyProperty.Register("SelectedColor", typeof(Brush), typeof(MyControl), new UIPropertyMetadata(Brushes.Red));
25:
26:
27: public MyControl()
28: {
29: }
30:
31: protected override void OnInitialized(EventArgs e)
32: {
33: base.OnInitialized(e);
34:
35: this.MouseLeftButtonDown += new System.Windows.Input.MouseButtonEventHandler(MyControl_MouseLeftButtonDown);
36: }
37:
38: void MyControl_MouseLeftButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
39: {
40: MessageBox.Show(this.SelectedColor.ToString());
41: this.Selected = !this.Selected;
42: }
43: }
44:
Window1.xaml
1: <Window x:Class="WpfApplication13.Window1"
2: xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
3: xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
4: xmlns:local="clr-namespace:WpfApplication13"
5: Title="Window1" Height="300" Width="300">
6: <Grid>
7: <local:MyControl x:Name="ctrl1">
8: <local:MyControl.Template>
9: <ControlTemplate TargetType="{x:Type local:MyControl}">
10: <Grid Background="Green" x:Name="source"/>
11: <ControlTemplate.Triggers>
12: <Trigger Property="Selected" Value="true">
13: <Setter TargetName="source" Property="Background" Value="{TemplateBinding SelectedColor}"/>
14: </Trigger>
15: <Trigger Property="Selected" Value="false">
16: <Setter TargetName="source" Property="Background" Value="Green"/>
17: </Trigger>
18: </ControlTemplate.Triggers>
19: </ControlTemplate>
20: </local:MyControl.Template>
21: </local:MyControl>
22: </Grid>
23: </Window>
24:
When we compile we get the following error, "Cannot convert the value in attribute 'Value' to object of type ''. Error at object 'System.Windows.Setter' in markup file 'WpfApplication13;component/window1.xaml' Line 13 Position 58."
So how can we solve this problem?
Since the problem here is that TemplateBinding is not supported inside the ControlTemplate.Triggers, we have to find another way to make the binding, and so we just change the line 13 to
1: <Setter TargetName="source" Property="Background" Value="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=SelectedColor}"/>
And if we look at the TemplateBinding Markup page in MSDN, the usage of TemplateBinding is similar to the Binding Markup using TemplatedPart as the RelativeSource, like {Binding RelativeSource={RelativeSource TemplatedParent}, Path=DependencyPropertyToBind}
Hope this helps.
With .NET 4.0 a lot of new features and technologies will see the light, as long as others will get improved, and Entity Framework will be one of those technologies that will get improved.
A lot of this changes are being made on the Query pipeline, that means that are being done on the translation from Linq to SQL code, and some of the changes in Beta 1 are the following:
- Avoid projecting all columns in nested queries
- Instead of making a query for the complete set of columns and the make the projection on top of it, just make the projection and get only the needed columns
- Avoiding Unnecessary IS NULL Checks in LINQ to Entities Queries
- remove the Is null check when using Joins
- Additional join elimination: Eliminate parent table in “Child Left Outer Join Parent”
- Avoid having a child left outer join if no column from that relation is needed for the projection
- Using IN instead of nested OR’s
- Instead of having several Or’s in place such as “CategoryId = 1 OR CategoryID = 2 (…)” have “CategoryId In (1,2,…)”
- Translating more of LINQ’s GroupBy operator into GROUP BY
- Better use of the SQL Group By in order to simplify the query
- Avoiding “Cast (1 as bit)”, using “1” instead
- Simplifying some queries that go against a subtype in a type hierarchy
Some of the changes after Beta 1:
- Elimination of null sentinels
- In the output query there is often the constant 1 projected both in nested and in top-most queries. By avoiding it and reusing other columns for the same purpose in many cases we are able to avoid levels of nesting.
- Additional Join Elimination
- Use of Inner Joins instead of Left Outer Joins when possible
- Provide mechanism for efficient queries on non-Unicode columns
- We now generate non-unicode constants and parameters when these are used in LINQ to Entities queries in comparisons with non-unicode columns. This allows indexes to be used by SQL Server.
- Improve the translation of the functions String.StartsWith, String.Contains and String.EndsWith in LINQ to Entites to use LIKE.
- Improve the translation of the canonical functions StartsWith, Contains and EndsWith to use LIKE (these canonical functions became available in .NET 4.0 Beta1)
- Collapse multiple Case statements into one
You can read more about this topic on this ADO.NET Team post.
Some time from now I was searching for controls that would made the generation of diagrams of several kinds, like for instance::
- Network Diagram
- Worlflow Diagram
- Database Diagram
- Hierarchy Diagram
- …
Basically I was trying to find a control that would solve the problem of having to search for different controls depending on the type of diagrams I would need in my projects, an in this case the project was in Silverlight. After a lot of research and a lot of CodeProject and others that would just fit a specific problem, I came across one that solved exactly what I was needing, and I found it on MindFusion named DiagramLite.
The DiagramLite is a quite interesting control since it provides a way for us to make available any kind of diagram in Silverlight and with the possibility of editing that diagram, and this makes it possible to create a new Workflow designer for our solutions using Silverlight. (Of course I now that this was done without this control, but it seems to me that it would be a lot easier with it, but this is just from my experience).
You can find samples here.
Along with the Silverlight version I also found that they also have several other versions for WPF, WinForms, ASP.NET, .Net Compact Framework and even Java, and for this it seems that they are pretty experts into the Diagram controls, and it’s pretty interesting since their support is pretty quick as well as clear.
I hope this post comes handy for you, since when it was me I had to to do a lot of searching and testing for several possibilities.
As I already explained in a previous post, ADO.NET Data Services are very interesting since they generate a layer on top of our data model in a REST accessible way. Being this technology without any doubt very interesting and very helpful when building our solutions, we don’t always remember the notation that we should use in order to execute actions like:
- Sorting - orderby
- Filtering - filter
- Selection of only a determined set of elements – Top
- Ignore a set of records – Skip
- Make String operations
- substring
- endswith
- startswith
- length
- …
- Make Date operations
- day
- month
- year
- hour
- minute
- second
- …
- Make Math operations
- Make Type operations
If you’re like me, you never remember the exact notation to use, and for this reason I reminded that it could be interesting to place here a link for the ADO.NET Data Services Datasheet provided by Robert Maclean.
And once again thank Robert for his excellent job into creating this Datasheet that comes so handy.
One of the things that I really thing would be important for Silverlight in order to make easier the Modularity of the Business applications developed in Silverlight, since the Prism approach is nice but I think that the MEF approach is simpler and so this should be a breakthrough for Silverlight Business Application Development.
After some talks with Brad Adams from Microsoft and also posting some feedback I came to this very interesting post of Brad that talks about how can we use the MEF for Silverlight that was made available on the CodePlex site related to MEF.
Brad make a very good example of the usage of MEF in this blog post.
So enjoy the reading and good coding.
Recently I posted about .NET RIA Services that is a framework that is associated with Silverlight and will make the development of business applications easier.
So here a some more links in order to understand .NET RIA Services better.
Have a nice reading about .NET RIA Services
Silverlight 3 has been release and now we have also the Unit Testing Framework binaries here that will help making Unit Tests in our solutions when using Silverlight 3. More information’s here.
Also important is the release of Prism Visual Studio Templates that will help developers get using the Composite Application Guidance for WPF and Silverlight, and make what seems to be hard, simpler, and also with the new MVVM pattern available.
Download the Prism Visual Studio Templates here.
Update to the Prism Visual Studio Templates here.
More information about the Prism Visual Studio Templates here.
Windows Azure has a new SDK release that is now available. A very interesting new feature is the possibility of having several Roles per deployment, unlike what happened in earlier releases where we would only be able to have one Web Role and also a one Worker Role. Another interesting feature is now we have the possibility to chose between a normal ASP.NET Web Forms application and a ASP.NET MVC application as the Web Role.
Download the Visual Studio Tools here.
Download the Windows Azure SDK here.
As you probably all know Windows 7 will be made available on October 22nd , but the release will be made in phases and so in order to know when you can get you RTM version here’s a summary:
- For Partners & OEMs
- ISV and IHV
- English Version - August 6th on Microsoft Connect and MSDN.
- Other languages – October 1st
- Gold and Certified Partners
- English Version – August 16th on Microsoft Partner Network
- Other languages – October 1st
- Action Pack Subscribers
- English Version – August 23rd
- Other languages – October 1st
- OEMs
- 2 days after the Official RTM Version
- For Business Customers:
- Volume Licensing with Software Assurance
- English Version – August 7th via Volume License Service Center
- Volume Licensing without Software Assurance
- English Version – September 1st
- For IT Professionals
- English Version – August 6th via TechNet
- Other languages – October 1st
- For Developers
- English Version – August 6th via MSDN
- Other languages – October 1st
- For Customers
More information here.
Microsoft announced on 14th July the commercial availability of Windows Azure as I posted previously and now there are more information’s about the the same subject so I decided to write again on the subject.
Important elements to retain:
“During Community Technology Preview (CTP), services included in Windows Azure will be available without charge - subject to certain limits:
- Total compute usage: 2000 VM hours
- Cloud storage capacity: 50GB
- Total storage bandwidth: 20GB/day“
How Consumption is Measured:
- How Consumption is Measured?
- Windows Azure
- SLA
- “(…)we guarantee that when you deploy two or more role instances in different fault and upgrade domains your Internet facing roles will have external connectivity at least 99.95% of the time (…)”
- Compute time, measured in machine hours
- Storage, measured in GB
- Bandwidth requirements (transmissions to and from the Azure datacenter), measured in GB
- Transactions
- SQL Data Services
- SLA
- “(…) will maintain a “Monthly Availability” of 99.9% during a calendar month. “Monthly Availability Percentage” for a specific customer database is the ratio of the time the database was available to customer to the total time in a month. Time is measured in 5-minute intervals in a 30-day monthly cycle. (…)”
- Web Edition Relational Database includes:
- Up to 1 GB of T-SQL based relational database
- Self-managed DB, auto high availability and backup
- Auto Scale with pay-as-you grow
- Best suited for Web application, Departmental custom apps.
- Business Edition DB includes:
- Up to 10 GB of T-SQL based relational database
- Self-managed DB, auto high availability and backup
- Auto Scale, Pay-as- you grow
- Additional features in the future like auto-partition, CLR, fanouts etc.
- Best suited for ISVs packaged LOB apps, Department custom apps
- NET Services
- “(…)Uptime percentage commitments and SLA credits for .NET Services are equivalent to those specified above in the Windows Azure SLA. Due to inherent differences between the technologies, underlying SLA definitions and terms differ for .NET Services. Using the Service Bus module of .NET Services, customers will have connectivity between a customer’s service endpoint and our Internet gateway(…)”
- Messages are charged to the customer in discrete blocks of 100,000 (“100k”) for each monthly billing period, meaning that
- A customer who consumed 95,000 messages would be billed for 1x100k messages (plus the bandwidth used to send messages in or out).
- A customer who uses 150,000 messages in a billing period would be charged for 2x100k messages (plus the bandwidth used to send messages in or out).
- A customer who uses 20 million messages in a billing period would be charged
More information can be be found on the Windows Azure site.
.NET RIA Services is a framework that is associated with Silverlight and will make the development of business applications easier.
In order to know more I decided to compile a set of articles that I think are very interesting to understand .NET RIA Services better.
Have a nice reading about .NET RIA Services
As you might already know Silverlight 3 RTW is out and with it the great power of Silverlight 3 was unleashed.
The main features made available are:
- Tools
- Expression Blend 3 RC
- Ability to Import Photoshop and Illustrator
- SketchFlow
- State Management
- Visual Studio 2010
- Still in Beta 1 version but with a strong design tools for Silverlight
- Controls
- DataForm
- Simple control that enabled a flexible way to display data of a single entity definition. Support several methods such as Display, Edit and Update and navigating to data.
- DataPager
- This control gives Paging support such as Next/Previous and Numeric paging on elements that implement the IPageViewCollection interface.
- Navigation Framework
- A Framework that will provide an easy way to provide navigation to applications, and that introduces to Silverlight 2 new controls, called Frame and Page. With it we can partition views into separate XAML files and navigate to each view independently. Also integrates with Browser history providing Browser Back and Forward functions.
- SEO – Search Engine Optimization
- Deep Linking
- Possibility to navigate directly to a specific page in the Silverlight solution
- New toolkit controls
- Media
- Support for H.264 and AAC encoding
- Raw audio/video pipeline support that will provide audio/video decoding outside the runtime and render in Silverlight
- Graphics
- Perspective 3D
- Support for 3D scenarios and putting object on a plane for various user experience scenarios.
- Pixel Effects
- Support for Pixel Shader Effects
- Animation Easing
- Provides a set of possibilities that will interpolate the animations and provide smoother animation transitions and other visual effects
- Bitmap API
- GPU Acceleration
- Text/Image Improvements
- Element-to-Element Binding
- Local Connection API
- Enable scenarios in order to Silverlight solutions to communicate with each other through an asynchronous messaging system. A pub-sub implementation for Silverlight applications.
- Binding Validation API
- SaveFileDialog
- Dynamic Styling and Based On
- Support for DynamicResource
- Support for Based On Styles
- Caret Brush
- Merged Resource Dictionaries
- Assembly Caching
- Possibility of having the Silverlight solutions load core runtime from a runtime cache rather than having it on the xap file.
- Network monitoring API
- Possibility to check network status changes.
- Out-of-Browser and Offline
- Possibility to have the applications run on and off the browser and Offline also, having it work like a desktop solution.
- Binary XML
- Ability to communicate using WCF with Binary XML data format and providing smaller communications,
- Web Service Utility
- Slsvcutil.exe that works like the regular WCF svcutil tool but specific for Silverlight
- .NET RIA Services (Still in CTP version)
- A complete framework that will provide an easy way to develop using the n-tier pattern using the power of ASP.NET to help Silverlight to achieve this.
Know more on the Get Started session of Silverlight.net site.
More Posts
Next page »