Tag Archives: Silverlight 2

Intersoft Presenter’s VirtualScroll™

In my previous post about our upcoming presenter for Silverlight, I have briefly mentioned about the performance in the “Piece-of-mind with bare-metal performance” section. Related to this performance topic, Andry has recently posted a blog discussing VirtualScroll™  — our innovative technology behind Intersoft Presenter that is designed to let you display any number of items without performance hit.

Personally, VirtualScroll is one of my favorite features in Presenter despite of  many stunning UI/X capabilities. In fact, it’s the most crucial architecture that makes Presenter™ different and unique in many ways, especially when it comes to scalability factor.

Did someone force you to use server-side paging to speed up your Silverlight data presentation? I guess that’s because their products will crash — or probably hang like for several minutes — if you attempted to display what they-so-called “too many items” into their Grid. We’ve seen many of competing products do not understand about Silverlight nor its key strength in the RIA space, because they created a Grid with traditional ASP.NET/DHTML-style concept. We see it completely different here, as Silverlight introduces more advanced capabilities such as offline-ready scenarios where an application doesn’t have to connect to a server in order to display data.

Imagine a new scenario in Silverlight where you would like to have the possibility to download some static data and keep it locally through memory cache or isolated storage. If your static data contains records up to 500 or even thousands, you would really have to make sure your data presentation tool can display them up in decent performance. This is where our Presenter™ and DataSource™ steps in, which makes it possible to achieve the above scenario, and even more advanced scenarios that we’ll cover in the upcoming posts.

VirtualScroll is definitely a very powerful technology, although we have to went down the deep path to resolve every challenge and many difficult scenarios, for example when it deals with grouping, dynamic templating and more. Speaking about grouping and the rest features, there are some good news that we’ll announce in the next CTP of Intersoft Presenter™ and DataSource™. So, stay tuned!

By the way, Andry also includes a video that shows the performance comparison of standard control  and Intersoft Presenter, as well as downloadable sample so you can try it out yourself. So, make sure you check it out here.

All the best,
Jimmy.

2009’s Preview Part I – Datasource controls for Silverlight

With dozens of new products, enhancements and new features that we’re going to release in 2009 (per 2009 roadmap published in Developer Network), there are so many new topics to discuss related to Web and RIA development. It’s especially important to understand how these new products are working in concert and how each puzzle is connected to achieve highly extensible application.

I decided to cover these new products  in several series of blog posts, so each product and new feature can be explained in details. In this first post, I’m going to write about Datasource controls for Silverlight 2.

Background

Silverlight 2 is a great platform to build RIA applications. It’s not only limited to fancy media player or photo viewer, it’s also great for developing business applications.

Despite of its rich UI libraries such as support for animations and several built-in controls, it’s still considered difficult to develop real-world LoB applications with Silverlight 2, more specifically on the data retrieval and data binding part.

I bet that 99% of your data-aware Silverlight application would consist of dozens, if not, hundreds lines of codes. With current Silverlight 2 development model, you are required to manually write codes to connect to web service, handle the response, parsing and convert it into business logic. Not to mention the databinding on the UI controls.

In short, developing real-world LoB application in Silveright 2 without a streamlined data process is simply a tiring and tedious process.

How Intersoft’s Datasource controls come to rescue

To address these tough development challenges, we finally invent a new concept that streamline all data processes into component model, which exposes consistent interfaces to allow further extensibility and customizability.

Introducing Intersoft’s Datasource controls for Silveright 2, these datasource controls are designed based on declarative datasource control concept, which is first introduced in Visual Studio 2005 (ASP.NET 2.0).

The reasons why we chosen to develop our data controls strategy based on this model are:
Clear separation between data/business object layer and UI layer. This concept greatly reduces the overhead in project’s maintenance, especially large-scale projects that are being worked by separate team of designers and developers. 

Easy to use and understand. By simply specifying values into the provided properties, using datasource control is far more easier and convenient. Bloated and complicated ORM providers are certainly off the list here.

The initial version that planned to ship in 2009 R1 milestone will include three datasource controls:

1. XmlDataSource

XmlDataSource is a read-only datasource control that enables you to easily bind a UI control given an Xml data file. It’s best to use this control if you have static xml files in your Silverlight project that you wish to display in your UI control.

Using this control is very straightforward, that is by simply providing the xml data file path and the descendants of path to be iterated.

Example:

 <ISNet_Silverlight_DataSource:XmlDataSource DataFile=”Xml/Products.xml” Descendants=”//Product” />

2. WcfDataSource

WcfDataSource control enables you to bind UI controls based on datasource that is hosted on WCF (Windows Communication Foundation) service. WCF has been gaining wide popularity and adoption these days, as well as getting more converts from ASMX-based Web Service.

Intersoft’s WcfDataSource leverages full implementation of features available in WCF, such as concurrency and conflict options, caching, multiple services, and custom data contract.

WcfDataSource allows you to define one or more services in a single control. Each service is identified with ServiceName property, and can perform data selection, insert, update, and delete operation (CRUD). For greater flexibility, each service can also target different service host and different service target.

For instance, take a look at the following definition:

 <ISNet_Silverlight_DataSource:WcfDataSource x:Name=”WcfDataSource1″>
      
<ISNet_Silverlight_DataSource:WcfDataSource.Services
>
               
<ISNet_Silverlight_DataSource:WcfDataService  ServiceHost=”http://northwind.com/dataservice_public&#8221; ServiceName=”CustomersService” ServiceTarget=”CustomersService.svc”
>

                <ISNet_Silverlight_DataSource:WcfDataService  ServiceHost=http://northwind.com/dataservice_private ServiceName=”OrdersService” ServiceTarget=”OrdersService.svc”>

      
</
ISNet_Silverlight_DataSource:WcfDataSource.Services>
</ISNet_Silverlight_DataSource:WcfDataSource>
 
WcfDataSource is carefully designed to provide extensible architecture to address complex challenges in data retrieval and binding mechanism. In addition to CRUD, WcfDataSource also includes the following features:
  • Service reference’s auto discovery.
    WcfDataSource takes advantage of service references generated by Silverlight, so you don’t have to rewrite your classes and objects definition.
     
  • Data paging and custom load-on-demand mechanism.
    WcfDataSource includes sophisticated architecture that defines data paging and custom data loading interface. WcfDataSource can pass the required information (from the databound UI controls) to the given SelectMethod. WcfDataSource can pass either one of the following parameter signature: 
     
    GetCustomers(DataSourceSelectArguments args)
    Or
    GetCustomers(XDocument args)
     
  • Strongly-typed object for insert, update and delete.
    Instead of working with raw data, you can work against your strongly-typed object model directly for the insert, update and delete operation.For instance, your Update function in WCF service can use the following signature: 
     
    int UpdateCustomer(object[] primaryKeys, Customer newObj)  
     
    When an update operation occurred in the databound UI control, WcfDataSource will send the required data to the WCF service, which can be automatically deserialized into strongly-typed object when it arrived to the user-defined function/code.  
     
  • Event handlers available in WcfDataSourceView and WcfDataSource level.Often times, you need to manipulate the resulted data before it is bound to the UI controls. WcfDataSource provides various events where you can implement your custom business process, such as Selecting, Selected, Updating, Updated, and more.

 WcfDataSource also provides designer with which you can easily define your services and its related properties. See the following screenshot for more details.

WcfDataSource Services Designer in Blend 2.5

WcfDataSource Services Designer in Blend 2.5

3. AstoriaDataSource

Well, now it’s the turn for the most interesting datasource control out of the three. If you have read my post about Silverlight five months ago, you should have recalled about the lacking of data binding in Silverlight which I described in the first point. Astoria, now known as ADO.NET Data Service, is the key answer to programmatic data access over the Web, making data automation possible in Silverlight. Astoria is officially released and included in Microsoft Visual Studio 2008 Service Pack 1.

I won’t be covering too much about Astoria here. If you would like to learn more about Astoria, please visit ADO.NET Data Services MSDN Home.

Intersoft’s AstoriaDataSource, as its name implies, is a datasource control that enables you to connect a databound UI controls (eg, Grid) to an Astoria data service.

AstoriaDataSource will serve as the key component and foundation to all Silverlight databound controls strategy that we’re going to release in the future. Here are the reasons why:

  1. Data automation from UI control layer.
    When using AstoriaDataSource as the datasource control, our upcoming Silverlight databound controls will perform data operations automatically, such as data selecting, data paging, data transactions (Insert, Update, Delete) as well as data manipulations (sorting, filtering).
     
  2. Significantly less efforts on developer’s side.
    Astoria is likely going to be the preferred solution for many .NET developers when it comes to Web data provider, as it requires very minimal efforts on the developer’s end to get it working and running. Compared to WCF which you are required to provide each function to handle each data operation, Astoria requires none. 
     
    All you need to do is to specify yourAstoria data service’s url in the AstoriaDataSource control, and it will take care the rest.

AstoriaDataSource has similar architecture and concepts with WcfDataService, such as multiple services, conflict detection, references auto discovery, and more.

With multiple services support, you can bind multiple UI controls to a single instance of AstoriaDataSource control, reducing the overhead to maintain a lot of objects as well as improving page load performance. Furthermore, it will enable more advanced data operations — such as nested view, hierarchical and value list/lookup — to be performed in elegant and consistent fashion.

The following example shows the syntax of AstoriaDataSource control, and notice how easy it is to expose your Astoria data service accessible in Silverlight with such declarative fashion.

 <ISNet_Silverlight_DataSource:AstoriaDataSource x:Name=”AstoriaDataSource1″ ServiceHost=”http://localhost:50634&#8243; ServiceTarget=”NorthwindDataService.svc” ReferenceNamespace=”NorthwindServiceReference” ServiceTypeName=”NorthwindEntities”>
        
<ISNet_Silverlight_DataSource:AstoriaDataSource.Services>
                   
<ISNet_Silverlight_DataSource:AstoriaDataService ServiceName=”Customers” DataObjectTypeName=”Customers”/>

                     <ISNet_Silverlight_DataSource:AstoriaDataService ServiceName=”Products” DataObjectTypeName=”Products”/>

                     <ISNet_Silverlight_DataSource:AstoriaDataService ServiceName=”Categories” DataObjectTypeName=”Categories”/>

                     <ISNet_Silverlight_DataSource:AstoriaDataService ServiceName=”Orders” DataObjectTypeName=”Orders”/>

           </ISNet_Silverlight_DataSource:AstoriaDataSource.Services>
</ISNet_Silverlight_DataSource:AstoriaDataSource>

 Conclusion

At Intersoft, we enjoy creating new innovation that can help you build applications in less time with less efforts, saving you from having to write lengthy codes. These upcoming data source controls for Silverlight 2, as you’ve got the ideas, are created for that purpose.

I hope I’m not over exaggerated by saying that these new controls will slash your Silverlight development efforts by 90% or more. Just imagine that you don’t have to write even single line of codes for data retrieval and binding, as you can simply drop-in the datasource controls, set the properties. And that’s it!

In the next post, I’ll cover how these datasource controls work in concert with our upcoming databound controls for Silverlight 2. I can’t express how exciting this will be, so stay tuned on our blog site!

All the best,
Jimmy.

Win a free subscription – 1 month left

As Jemmy has posted the details here, we’re running a sweepstake program until December 2008. Just a quick reminder, you can stand a chance to win a full subscription by trying out our Sirius 2 showcase (based on WebAqua) and submit your comment.

The September 2008 and October 2008’s winner has been announced in September and October newsletter respectively.

Here are just some nice comments out of hundreds that we have received so far.

“Just awesome. True art.
After reviewing this site, it deserves the word Masterpiece.
You guys can give some older companies (in this field) good heartattack. Hats off to you.”
 
— Siddharth

This design will definitely impress potential customers of your web app. The first impression will be good and they will want to use it many times
— Konstantin Smirnov, Developer.

Very innovative approach towards next genartion UI. Really a master designed by using Silverlight
— Dharmendra, Software Engineer.

great ..you rock man … suppose many component like this one, it will more help us to give best user experience and of course we are the programmer  only focus on deliver businees project and not graphical user interface design again … let it handled by the expert one like Intersoft :)”
Rahman L, Programmer.

Oh My GOD, !!!!! This has to be the most cool thing I have ever seen! GOD I can’t wait to get my hands on building web application with this!!!  Love!!!!!!!!!”
Kenneth Amby Thomassen, Freelance Designer.

Interesting? Curious? Take several minutes, experience it yourself and join thousands of Sirius fanatics.

Speaking of WebAqua, I received an email from a customer today mentioning that our stuff has been stolen. It appears that we got 2 “followers” now :). We’re quite happy with that since they just proof to the public that Intersoft is the leader in this industry. I’m not sure why they dont have other better products to offer to their customers, and why they keep becoming our “shadow” (sorry, but that’s the fact!). What’s more, it’s a pity to see what they’ve done — not even close to 1/10 of our features and designs. They should, at least, offering a comparable quality products to ours. What else to say, there are huge differences between innovators and immitators.

On the other hand, we’re ready for more exciting, truly innovative Silverlight components with never-before-seen features. This time, we are strongly focused on LOB products and scenarios, and be surprised how we slash Silverlight development efforts in half. More news will follow in the upcoming November newsletter. Stay tuned!

All the best,
Jimmy.