Wednesday, January 27, 2010

HttpRuntime.Cache vs. HttpContext.Current.Cache

Here's a development tip I came across on one of the ASP.NET discussion lists I'm on, at AspAdvice.com.

Original question:
Is there a difference in accessing the Cache of an application when calling HttpRuntime.Cache vs. HttpContext.Current.Cache?  I "think" I remember reading about a difference in the two a few years ago, but I don't remember the specifics.  This assumes that I am within a web application.

Answer from Rob Howard:
HttpRuntime.Cache is the recommended technique.

Calling the HttpContext does some additional look-ups as it has to resolve the current context relative to the running thread.

I use HttpContext.Current in a lot of the code I write too; but touching it as little as possible. Rather than calling HttpContext.Current repeatedly it's best to hang onto a reference and pass it around (when possible).

If you're in a component HttpRuntime.Cache is still the recommendation.

That said... the differences in performance are not going to be noticeable in 99% of the applications many of us write. The cases where it is going to matter is the 1% (or less) where you're trying to squeeze every last drop of performance out of you system. But this is a *minor* performance tweak, e.g. eliminating a database call, web service call or other out-of-process call in the application is definitely a better place to spend optimizing code.

For example, if you have 5 database calls in a particular code path reducing (or even optimizing) the queries is a much better use of time.

So yes, HttpRuntime.Cache is recommended but likely won't make a difference in most applications.

Another reply from James Shaw at CoverYourASP.NET:
I discovered another *great* reason to use HttpRuntime too, when writing my unit tests - HttpRuntime.Cache is always available, even in console apps like nunit!

http://www.coveryourasp.net/UnittestingandCaching

I never use HttpContext anymore, even in class libraries.

Tuesday, January 19, 2010

JavaScript Arrays: Pushing, Popping and Shifting

1) Merge of Join Two array:

it's quite easy

var a=new Array('a','b','c');
var b=new Array('d','e','f');
var c=a.concat(b);

c will be an array: ('a','b','c','d','e','f').



 2) : Pushing, Popping and Shifting
<script  id="clientEventHandlersJS"  language="javascript">
<!--
functionShow()
{
      var myArray = new Array();
      myArray[0] = "Jag";
      myArray[1] = "Chat";
      myArray[2] = "Win";
      myArray[3] = "Dhan";
      document.write("Before adding
-------------
");
      for (var i = 0; i < myArray.length; i++)
      {
            document.write(myArray[i] + "
");
      }
      myArray.push("aaa");
      document.write("
After adding
-------------
");
      for (var i = 0; i < myArray.length; i++)
      {
            document.write(myArray[i] + "
");
      }
}

function ButtonPush_onclick() {
      Show();
}



the result:
When the above code is executed we get the following output:
Before adding
-------------
Red
Green
Blue
White

After adding
-------------
Red
Green
Blue
White
aaa
3)

3) copying, transferring and merging

functionShow()
{
      var SimpleString = "abc;def;ghi;jkl;mno;qrs";
      var myArray = SimpleString.split(";");
      var subArray = myArray.slice(0,3);
      document.write("first array
---------
");
      for (var i = 0; i < myArray.length; i++)
      {
            document.write(myArray[i] + "
");
      }
      document.write("
second array
---------
");
      for (var i = 0; i < subArray.length; i++)
      {
            document.write(subArray[i] + "
");
      }
}

JavaScript arrays: copying, transferring and merging - How to copy the elements of one array into another using JavaScript: discussion

(Page 2 of 5 )

Within the code I showed you in the previous section, I mainly created a simple button (which is identified as “Button1”).  The button is defined with an “onclick” event which calls a JavaScript function, “Button1_onclick.”  The same function simply calls another JavaScript function named “Show.”

The function “Show” is defined as follows:

functionShow()

{

      var SimpleString = "abc;def;ghi;jkl;mno;qrs";

      var myArray = SimpleString.split(";");

      var subArray = myArray.slice(0,3);

      document.write("first array
---------
");

      for (var i = 0; i < myArray.length; i++)

      {

            document.write(myArray[i] + "
");

      }

      document.write("
second array
---------
");

      for (var i = 0; i < subArray.length; i++)

      {

            document.write(subArray[i] + "
");

      }

}

In the above code fragment, I worked with a sample string as follows:

      var SimpleString = "abc;def;ghi;jkl;mno;qrs";

From the above statement, we can easily determine that the “separator” for the elements would be “;” or semi-colon (as explained in my second article in this series).  Proceeding further we have the following:

      var myArray = SimpleString.split(";");

The above statement makes the string split into several elements, based on the separator “;” (semi-colon).  Once the splitting is completed, it creates an array of those elements and assigns the same to the variable “myArray.” Continuing on, we have the following:

      var subArray = myArray.slice(0,3);

The above statement creates a new array with only three elements (copied from  the 0th location or index) from the main array “myArray” and finally assigns the same to “subArray.”

We use the following loop to display all the elements (as explained in my first article):

      for (var i = 0; i < subArray.length; i++)

      {

            document.write(subArray[i] + "
");

      }

I also displayed the elements available in the first array using the following loop:

      for (var i = 0; i < myArray.length; i++)

      {

            document.write(myArray[i] + "
");

Monday, January 11, 2010

global.asax + sharepoint

The only thing you need to do with your global.asax is add the following:
<%@ Application Language="C#" Inherits="Microsoft.SharePoint.ApplicationRuntime.SPHttpApplication" %>
Then you paste your global.asax file under C:\Inetpub\wwwroot\wss\VirtualDirectories\port_number where port_number is usually port 80 on your first site collection.
Now you have your global.asax working.
Cheers!