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.
- 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.
- 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.