Telerik Reporting Deployment For Silverlight

We were facing problem in deploying Telerik Report for Silverlight in Production Enviornment.

The Solution to preblem is that to have the following assemblies are needed to be set as “Copy As Local = true” in your WEB PROJECT

  • Your Reporting Library For Telerik Reports
  • Telerik.Reportig
  • Telerik.Reporting.Service
  • System.ServiceModel

Also, ReportService.svc needs to be exist at Root Folder of web project. (Although not necessary you can always change it from your code)

I hope this saves somebody lots of time.

Thanks,

Uniqueness of Browser Instance

We @ Vanguard Software Group and also many other places we came across situations where we needed to somehow uniquely identify the browser instance of the user working with asp.net site (the concept applies to any web technology – asp, php, cold fusion …).

Problem:

1- Session behaviour when you are working with In Process & with State Server. In earlier mode the application events for session end and start work fine, but still not when user closes the browser.

2- In case of State Server mode the session application events done even get fired, so we are at loss to how to track somebody who is no longer using our site.

Solution:

The solution is simple one, to get RID of the session default implementation all-together :)… May of you will be surprised to hear it. But anyways,

Here is the idea (which we actually implemented in full blown manner)

When you’re working with web applications, your applications do have a start page. That start page can be used to generate a unique token for that particualr instance of the browser, and with each request to following append that token to Query strings for any more pages you visit while getting your user navigate through different areas of the websites.

Example:

When user requests your site http://www.yoursite.com, it goes to default.aspx (or whatever default you set) – Now generate GUID and store it within the ViewState of the page.

Now when user logs in – just pass that stored GUID to next page as Parameter. it will be something like http://www.yoursite.com/Welcome.aspx?Guid=%5BGenerated GUID here]

Now, at this point that “Guid” is the unique token that you need to have for storing any information that you need for that logged in user.

Now, you will be thinking if we are not using session than where to store this information?

There can be more than one ways you could do that:

1-      Use Cache

2-      Use Distributed Cache (for Webfarm/ webgarden deployments)

For first option of “Cache”, just put in the Guid prefix with each key you put in, just like

Cache.Add( Request[“”Guid] + “Key”, “Value”)

Now, above is pretty straight forward – you can enhance it more to work wonders for you. Another you could do that, you can add timespan for the cached object so it does not lives in there for application life cycle or whatever default value is.

For Second option for Distributed cache you can use following

1-      NCache

2-      Microsoft Project named “Velocity”

Being Microsoft guy, I would like to use Velocity which is growing quite rapidly and quite fast as well. You search google.com for “Velocity” and you will find bundle of articles on how to use it.

But to use this option – beware that you need to measure your project size and deployment strategy, as it requires Power Shell commands to work it out.

Summary:

Generate Unique token for first request from a user to your application, and use that token until user logs off or closes the browser. When user opens new one that GUID gets created again, and there is no way that two brwoser instances would share that same guid. if you go this path options are unlimited. You apply this thought on cookie names etc …

Thanks,

JQuery Row Selection & Changing Styles

JQuery can be extremely FAST as compared to normal Javascript routines. Like in case we want to select a row in html table, and want to change the style of that row, and also remove selected style from other rows of the same table. (Options are limitless)

function SelectRow(rowObject)

{

    $(“#tableId TR “) .removeClass(“SelectedRowStyle”).addClass(“OriginalRowStyle”);//removes SelectedRowStyle and add Original

  //Option – more faster can be $(“#tableId TR .SelectedRowStyle”) .removeClass(“SelectedRowStyle”).addClass(“OriginalRowStyle”);

   $(this).removeClass(“OriginalRowStyle”).addClass(“SelectedRowStyle”); //removes the Original Style and add Selected class

}

Now, if wanted to the same in Javascript we would need to loop through all rows and then search for selected row and do all other stuff we need to for javascript. This is simple in its own way…

Thanks,

Asp.net Caching & Scalibility

Today, we ran across the requirement of using Cache in our web garden/ farm enabled product called LoanVantage. Though we already knew that it would not work under current default implementation of caching in asp.net, but it seemed we had little choice of what to use or not. 

So, suddenly GOOGLING suggested us to a name “Velocity” for caching… and it was none other than Microsoft’s Solution, though in CTP but it was something to look on. So digging in more deeply downloaded this from http://www.microsoft.com/downloads/details.aspx?FamilyId=B24C3708-EEFF-4055-A867-19B5851E7CD2&displaylang=en 

With help of little code in samples – we were rocking in one hour and were ready to test our application with all this stuff. Though its in CTP, but quite useful – some enhancements would be needed to make it work beautifully.

 You can find more details on http://msdn.microsoft.com/en-us/windowsserver/ee695849.aspx