Tuesday, July 19, 2011
How to force a file to download in ASP.NET
Thursday, March 18, 2010
Setting up PHP with IIS 6 on Windows XP
Installing PHP
- Get the latest php (5.2.6 at present) from PHP.net's download page. Download the zip packager rather than the installer.
- Extract the zip file to c:\php
- Copy php.ini-dist file to php.ini
- Edit the c:\php\php.ini file and
- Set the session.save_path to a temporary directory on your server, you could create a special one for this (e.g. c:\php\session)
- Set the upload_tmp_dir to a temporary directory on your server, you could create a special on for this (e.g. c:\php\upload)
- Set the SMTP setting to the ip of your smtp server. It won't work with authentication so make sure you can send from your web server through that smtp server without a user/pass
- Set the sendmail_from to the email you want all emails from the server to come from
- Set the upload_max_filesize setting to something a little large (if necessary). Default is 2M. I think 8M is normally ok.
- Set your extension_dir=C:\php\ext
- Set post_max_size to at least the size of your upload_max_filesize (+ a little bit more). Default is 8M. 10M should probably be ok if you increased the upload_max_filesize to 8M.
- Uncomment (by removing the ; at the start of the line)"cgi.force_redirect" and change the value to 0 instead of 1
- Add these lines to the end of the file
extension=php_curl.dll extension=php_gd2.dll extension=php_imap.dll extension=php_mysql.dll
- Save and exit the file
Setting up IIS and file/directory permissions
- Now open the IIS management console by typing Start->Run and typing %SystemRoot%\system32\inetsrv\iis.msc
- Find out what user we need to give write access to by
- Edit the properties of the web site you are going to install the php application into
- On the directory security tab, click the edit button under anonymous access and authentication control
- Copy down the user name under the anonymous access section (it is allowed right ?). It's usually COMPUTER\IUSR_COMPUTER where COMPUTER is the name of the computer running IIS
- Now right click on the c:\php\session directory and go to properties, click the security tab, click add and in the box type in the name you copied down before.
- Click check names and it should underline the name, then click ok.
- Click modify and it should check all the other necessary boxes for you.
- Click ok
- If there is no security tab, then in windows explorer
- Go to the Tools menu, choose 'Folder Options'.
- Choose the 'View' tab and find the option called 'Use simple file sharing' (usually the last one) and untick it.
- Click apply, then ok.
- Go back to the previous step
- Repeat this for the c:\php\upload directory and any other directories which need to be writeable by your php application.
- Now go back to the IIS management console, right click on the website you want to setup php for and go to properties.
- Click the documents tab and click add and type in index.php and click ok. This tells the webserver to look for index.php files for a default file.
- Now, still in the iis management console, click the home directory tab, click on the configuration button and then click add.
- Browse to the c:\php\php-cgi.exe file for the executable and .php for the extension. We want it for All Verbs which is checked by default, check script engine and uncheck "Check that file exists" then click ok.
- Then click ok until all the dialogs are closed and restart your website in the iis control panel by clicking the restart button in the toolbar or by right click and choosing restart from the tasks menu.
- Now create a file in your web root called info.php and put in it then browse to that file in your web browser via it's url. It should bring up a phpinfo page which will let you check that mysql is enabled, the session.save_path is right etc.
Wednesday, March 10, 2010
MVC-Based Web Application V/S Web Forms-Based Web Application
Advantages of an MVC-Based Web Application
The ASP.NET MVC framework offers the following advantages:- It makes it easier to manage complexity by dividing an application into the model, the view, and the controller.
- It does not use view state or server-based forms. This makes the MVC framework ideal for developers who want full control over the behavior of an application.
- It uses a Front Controller pattern that processes Web application requests through a single controller. This enables you to design an application that supports a rich routing infrastructure. For more information, see Front Controller on the MSDN Web site.
- It provides better support for test-driven development (TDD).
- It works well for Web applications that are supported by large teams of developers and Web designers who need a high degree of control over the application behavior.
Advantages of a Web Forms-Based Web Application
The Web Forms-based framework offers the following advantages:- It supports an event model that preserves state over HTTP, which benefits line-of-business Web application development. The Web Forms-based application provides dozens of events that are supported in hundreds of server controls.
- It uses a Page Controller pattern that adds functionality to individual pages. For more information, see Page Controller on the MSDN Web site.
- It uses view state or server-based forms, which can make managing state information easier.
- It works well for small teams of Web developers and designers who want to take advantage of the large number of components available for rapid application development.
- In general, it is less complex for application development, because the components (the Page class, controls, and so on) are tightly integrated and usually require less code than the MVC model.
Monday, January 4, 2010
What is PTT or PoC?
Tuesday, December 8, 2009
What is CDMA?
What is EDGE?
What is GSM?
Saturday, February 21, 2009
Ten ways to speed up the download time of your web pages
Ten ways to speed up the download time of your web pages
Why is download speed so important?
Do you like to wait for pages to download? Neither do your site users. Read on...
1. Lay out your pages with CSS, not tables
CSS downloads faster than tables because:
- Browsers read through tables twice before displaying their contents, once to work
out their structure and once to determine their content
- Tables appear on the screen all in one go - no part of the table will appear until
the entire table is downloaded and rendered
- Tables encourage the use of spacer images to aid with positioning
- CSS generally requires less code than cumbersome tables
- All code to do with the layout can be placed in an external CSS
document, which will be called up just once and then cached (stored) on the user's
computer; table layout, stored in each HTML document, must be
loaded up each time a new page downloads
- With CSS you can control the order items download on to the screen - make the content appear before slow-loading images and your site users will definitely appreciate it
To learn more about CSS and the amazing things it can do for your website, check out the excellent tutorials both here at DNzone or at places like HTML Dog.
2. Don't use images to display text
It's our old friend CSS to the rescue again. There's no need to use images to display text as so much can be accomplished through CSS. Have a look at this code:
a:link.example, a:visited.example, a:active.example
{
color:#fff;
background:#f90;
font-size:1.2em;
font-weight:bold;
text-decoration:none;
padding:0.2em;
border:4px #00f outset
}
a:hover.example
}
color:#fff;
background:#fa1;
font-size:1.2em;
font-weight:bold;
text-decoration:none;
padding:0.2em;
border:4px #00f inset
}
This will give you a really simple button that appears to be pushed down when you mouseover it - See it in action here if you like.
3. Call up decorative images through CSS
It's possible to present images as part of the background, called up through CSS. If you've got an image that's 200px by 100px you can use the following HTML code:
<div class="pretty-image"></div>
And this CSS:
.pretty-image
{
background: url(filename.gif);
width: 200px;
height: 100px
}
This may at first seem a little pointless but this technique could really improve the download time of your pages. Browsers basically download background images after everything else. By using this technique, your text will load instantaneously and your site users can freely roam about the page while your 50kb fancy image downloads.
This technique disables the ALT attribute though so if you really want to have one then replace the above HTML code with this:
<image src="spacer.gif" class="pretty-image" alt="description" />
Spacer.gif is a 1px x 1px transparent image. Now you have a 50 byte transparent image and the main content loading first, and your great big decorative image, complete with ALT text, loading second. Perfect.
Please note that this technique is only good for decorative images and not informational ones. Any user who has CSS disabled will not be able to see your CSS-embedded images (or their alternative text).
4. Use contextual selectors
This is inefficient:
<p class="text">This is a sentence</p>
<p class="text">This is another sentence</p>
<p class="text">This is yet another sentence</p>
<p class="text">This is one more sentence</p>
.text
{
color: #03c;
font-size: 2em
}
Instead of assigning a value to each individual paragraph, we can nest them within a <div> tag and assign a value to this tag:
<div class="text">
<p>This is a sentence</p>
<p>This is another sentence</p>
<p>This is yet another sentence</p>
<p>This is one more sentence</p>
</div>
.text p
{
color: #03c;
font-size:2em
}
This second CSS example basically says that every paragraph within class="text" should be assigned a colour value of #03c and a font size of 2em.
At first glance this doesn't look too important, but if you can apply this properly throughout your document you can easily knock off 20% of the file size.
You may have noticed the colour values are shorter than normal. #03c is a shortened version of #0033cc - you can assign this abbreviated value to any colour value like this.
5. Use shorthand CSS properties
Font
Use:
font: 1em/1.5em bold italic serif
...instead of:
font-size: 1em;
line-height: 1.5em;
font-weight: bold;
font-style: italic;
font-family: serif
Border
Use:
border: 1px black solid
...instead of
border-width: 1px;
border-color: black;
border-style: solid
Background
Use:
background: #fff url(image.gif) no-repeat top left
...instead of:
background-color: #fff;
background-image: url(image.gif);
background-repeat: no-repeat;
background-position: top left;
Margin, padding, border
Use:
margin: 2px 1px 3px 4px (top, right, bottom, left)
...instead of:
margin-top: 2px;
margin-right: 1px;
margin-bottom: 3px;
margin-right: 4px
Use:
margin: 5em 1em 3em (top, left and right, bottom)
...instead of:
margin-top: 5em;
margin-bottom: 1em;
margin-right: 1em;
margin-right: 4em
Use:
margin: 5% 1% (top and bottom, left and right)
...instead of:
margin-top: 5%;
margin-bottom: 5%;
margin-right: 1%;
margin-right: 1%
These rules can be applied to margin, border and padding.
6. Minimise white space, line returns and comment tags
Every single letter or space in your HTML code takes up one byte. It doesn't sound like much but it all adds up. We've found that by working through your page source and eliminating unnecessary white space and comments, you can shave off up to, or even over (if your HTML is really inefficient) 10% of its file size.
7. Use relative call-ups
Try to avoid absolute call ups as they take up more space. An example of an absolute call up is: <a href="http://www.URL.com/filename.htm">.
Much better would be <a href="filename.htm">. But what if some files are in different folders to other ones? Use these shorthand properties:
- <a href="/"> - Calls up http://www.URL.com
- <a href="/filename.html"> - Calls up http://www.URL.com/filename.html
- <a href="/directory/filename.html"> - Calls up http://www.URL.com/directory/filename.html
- <a href="./"> - Calls up index.html within that directory
- <a href="../"> - Calls up index.html one directory above
- <a href="../filename.html"> - Calls up filename.html one directory
above
- <a href="../../"> - Calls up index.html two directories above
8. Remove unnecessary META tags and META content
Most META tags are pretty much unnecessary and don't achieve very much. If you're interested, you can see a list of META tags that are available. The most important tags for search engine optimisation are the keywords and description tags, although due to mass abuse they've lost a lot of importance in recent times.
When using these META tags try to keep the content for each under 200 characters - anything more increases the size of your pages. Lengthy META tags are not good for search engines anyway because they dilute your keywords.
9. Put CSS and JavaScript into external documents
To place CSS in an external document use:
<link type="text/css" rel="stylesheet" href="filename.css" />
To place JavaScript in an external document use:
<script language="JavaScript" src="filename.js" type="text/javascript"></script>
Any external file is called up just once and then cached (stored) on the user's computer. Instead of repeating JavaScript or CSS over and over again in HTML files, just write it out once in an external document.
And don't forget, there's no limit to the number of these external documents that you can use! For example, instead of making one huge CSS document, have one main one and some others that are specific to certain areas of your site.
10. Use / at the end of directory links
Don't do this: <a href="http://www.URL.com/directoryname">
Do this instead: <a href="http://www.URL.com/directoryname/">
Why? If there's no slash at the end of the URL the server doesn't know if the link is pointing to a file or to a directory. By including the slash the server instantly knows that the URL is pointing to a directory and doesn't need to spend any time trying to work it out.
Friday, August 29, 2008
Prevent user from back to the previous page after logout
Problem: Prevent user from back to the previous page after logout.
Solution: For this scenario, my idea is to write a cookie when logout (check the “SetLogoutCookie” function), and read the cookie when page load for each web page except login.aspx (check the “RedirectToLoginPage” function). If the data in cookie means logout then redirect current page to login.aspx.
***** default.aspx ****** <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>Untitled Page</title> <script type="text/javascript">
function SetLogoutCookie(value)
{var exdate=new Date();
exdate.setDate(exdate.getDate()+1);
var expires = ";
expires=" + exdate.toGMTString();
document.cookie = "logout=" + value + expires+";
path=/";
}
function Checklogout() {
var c_start = document.cookie.indexOf("logout=");
if (c_start!=-1)
{
c_start=c_start + 7; c_end=document.cookie.indexOf(";",c_start)
{
c_end=document.cookie.length;
{
return true; } }
}
function RedirectToLoginPage() {
if (Checklogout())
{
window.location = "login.aspx";
}
</head>
<body onload="RedirectToLoginPage()">
<form id="form1" runat="server">
<asp:LinkButton ID="LinkButton1" runat="server" OnClick="LinkButton1_Click"
OnClientClick="SetLogoutCookie('true')">Log out </asp:LinkButton>
</form>
</html>
************* default.aspx.cs ********************************
protected void LinkButton1_Click(object sender, EventArgs e)
{
FormsAuthentication.RedirectToLoginPage();
}
************ login.aspx ************************************
<html xmlns="http://www.w3.org/1999/xhtml">
<title>Untitled Page</title>
function SetLogoutCookie(value)
{
exdate.setDate(exdate.getDate()+1);
document.cookie = "logout=" + value + expires+";
path=/";
}
</head>
<form id="form1" runat="server">
Name:<asp:TextBox ID="TBName" runat="server">test</asp:TextBox>
Password:<asp:TextBox ID="TBPassword" runat="server"
TextMode="Password"></asp:TextBox>
<asp:LinkButton ID="LinkButton1" runat="server" OnClick="LinkButton1_Click"
OnClientClick="SetLogoutCookie('false')">Login</asp:LinkButton></div>
</body>
************ login.aspx.cs ***********************************
{
{ FormsAuthentication.RedirectFromLoginPage(TBName.Text,false);
}
}
************ web.config **********************************
<authentication mode="Forms">
protection="All" timeout="30">
<user name="test" password="test" />
</forms>
<authorization>
</authorization>
Tuesday, June 24, 2008
SQL Optimization Tips
Thursday, June 12, 2008
How to Determine CompactFramework Version
Compact Framework 2.0 2.0.5238.00 RTM 2.0.6129.0 SP1 2.0.7045.0 SP2
Compact Framework 3.5 3.5.7066.0 Beta 1 3.5.7121.0 Beta 2
Requirements for Pocket PC/ Windows Mobile to run .Net Application with SQL Server.
Some Usefule links regarding Pocket PC development
How can I tell if my Pocket PC has a Pocket PC 2000/2002/2003 or a Windows Mobile 5 or 6 Operating System?
Wednesday, June 11, 2008
WinCE Problem - .Net compact framework 2.0 installation problem
Tuesday, May 27, 2008
Caching in ASP.NET
Caching is a feature of ASP.NET that improves the performance of web applications by minimizing the usage of server resources to a great extent. This article discusses Caching, its types and contains some lucid code examples to illustrate On- Demand Data Caching.
What is Caching?
Caching is a feature that stores data in local memory, allowing incoming requests to be served from memory directly.Benefits of Caching
The following are the benefits of using Caching
- Faster page rendering
- Minimization of database hits
- Minimization of the consumption of server resources
Types of Caching
Caching in ASP.NET can be of the following types- Page Output Caching
- Page Fragment Caching
- Data Caching
- Page Output Caching
This is a concept by virtue of which the output of pages is cached using an Output Cache engine and all subsequent requests are served from the cache. Whenever a new request comes, this engine would check if there is a corresponding cache entry for this page. If there is a cache hit, i.e., if the engine finds a corresponding cache entry for this page, the page is rendered from the cache, else, the page being requested is rendered dynamically.
This is particularly useful for pages that are static and thus do not change for a considerable period of time.
Page output caching can be implemented in either of the following two ways:
- At design time using the OutputCache directive
- At runtime using the HttpPolicy class
The following is the complete syntax of page output caching directive
<%@ OutputCache Duration="no of seconds"
Location="Any | Client | Downstream | Server | None"
VaryByControl="control"
VaryByCustom="browser |customstring"
VaryByHeader="headers"
VaryByParam="parameter" %>The following statement is used to implement output caching in an aspx page at design time. The directive is placed at the top of the .aspx page.
<%@OutputCache Duration="30"
VaryByParam="none" %>The duration parameter specifies for how long the page would be in cache and the VaryByParam parameter is used to cache different views of the page. In the code example above, the cache duration is 30 seconds. Cache duration is a required field, and must be set to an integer greater than zero. The VaryByParam parameter, which is also required, specifies whether the cached page would differ in versions based on any parameter. A value of * in the same parameter indicates that the page would be cached based on all the Get/Post parameters. We can also specify one or more Get/Post parameter(s). Hence, the same statement shown above can have the following variations. The VaryByParam parameter is particularly useful in situations where we require caching a page based on certain criteria. As an example, we might require to cache a specific page based on the EmployeeID.
<%@OutputCache Duration="30"
VaryByParam="*" Location = "Any"%>
<%@OutputCache Duration="30"
VaryByParam="EmployeeID" Location = "Client" %>
<%@OutputCache Duration="30"
VaryByParam="EmployeeID;Basic" %> The VaryByParam parameter can also have multiple parameters as shown in the example above.
The location parameter is used to specify the cache location, either the server of the client.
To set a page's cacheability programmatically we have to use the method Response.Cache.SetCacheability. This method accepts the following parameters
- NoCache
- Private
- Public
- Server
The code snippet below shows how to set a page’s cacheability programmatically:
Response.Cache.SetCacheability(HttpCacheability.Server);Additionally we can set other properties which map to the same fields available when using the OutputCache directive on the page:
Response.Cache.SetExpires(DateTime.Now.AddSeconds(30));
Response.Cache.SetValidUntilExpires(true);
Response.Cache.VaryByParams["EmployeeID"]= true;
Page Fragment Caching
This allows specific portions of the page to be cached rather than caching the whole page. This is useful in situations where we can have a page that contains both static and dynamic content. The following code depicts how this can be accomplished.
<%@ OutputCache Duration="15"
VaryByControl="EmpID;DeptID" VaryByParam="*"%> This directive is placed at the top of any User Control (.axcx file).
Data CachingThe following code is an implementation of On-Demand caching. The method GetUserInfo checks to see if the data exists in the cache. If it is present, it is returned from the cache, else, the GetUserInfoFromDatabase method fills the DataSet from the database and then populates the Cache.
public DataSet GetUserInfo()
{
string cacheKey = "UserInfo";
DataSet ds = Cache[cacheKey] as DataSet;
if (ds == null)
{
ds = GetUserInfoFromDatabase();
Cache.Insert(cacheKey, ds, null, NoAbsoluteExpiration,
TimeSpan.FromHours(15),CacheItemPriority.High, null);
}
return ds;
}
DataSet GetUserInfoFromDatabase() {
// Usual code to populate a data set from thedatabase. This data set
// object is then returned.
}Cache Expirations
Cache expirations can be of the following types
- Time Based Expiration
- Dependency Based Expiration
- Time Based Expiration
This is used to specify a specific period of time for which the page would remain in the cache. The following statement specifies such expiration for a page in the code behind of a file using C#.
Response.Cache.SetExpires(DateTime.Now.AddSeconds(120));<%@OutputCache Duration="60"
VaryByParam="None" %>Cache Expiration
Cache expiration strategies can be implemented in either of the following two ways:- Time Based
- File Based
- Key Based
This is implemented by specifying a specific duration for which the item would remain in the cache. When the time elapses, the item is removed from the cache and subsequent requests to retrieve the item returns a null. Time based expiration strategies can be of the following two types:
- Absolute
- Sliding
- Absolute
Cache.Insert("UserInfo", dsUserInfo, null,
DateTime.Now.AddMinutes(1), NoSlidingExpiration); Sliding
Cache.Insert("UserInfo", dsUserInfo, null,
NoAbsoluteExpiration,
TimeSpan.FromSeconds(60));Note that you cannot use both Absolute and Sliding expirations at the same time.
File Based Expiration
This is implemented by using a file as a dependency. Whenever the contents of the dependency file are changed, the cached is invalidated. Please refer to the code below.CacheDependency cacheDependency = newCacheDependency("userinfo.xml");
Cache.Insert("UserInfo", xmldocObject,cacheDependency); Key Based Expiration
The third type of dependency is the key dependency. With it, a cache entry can be made to depend on another, existing dependency. When the depended-upon entry changes or expires, the dependent entry will also be expired. An array of keys can be specified as a single CacheDependency.string[] keys = new string[] {"key"};
CacheDependency cacheDependency = newCacheDependency(null,keys);
Cache.Insert("UserInfo", xmldocObject,cacheDependency);Using Callbacks
The delegate CacheItemRemovedCallback event handler is used to respond to the event that is raised when an item is deleted from cache. This handler contains the code to populate / re-populate the cache. Please refer to the code snippet below.public void onRemoveCallBack(string str, objectobj, CacheItemRemovedReason reason)
{
DataSet dataset = GetUserInfoFromDatabase();
Cache["userInfo"] = dataset;
} 1. First declare a class variable onRemove as shown below.
private static CacheItemRemovedCallback onRemove = null; 2. This delegate is invoked as shown below.
onRemove = newCacheItemRemovedCallback(this.onRemoveCallBack);3. The following code snippet shows how this handler is specified when items are added to the Cache.
Cache.Insert("userInfo", ds, null, DateTime.Now.AddMinutes(2),
NoSlidingExpiration, CacheItemPriority.High,
CacheItemPriorityDecay.Slow, onRemove);
The Cache Class
The Add/Insert method of the Cache class is used to add/insert an item into the cache. The Remove method removes a specified item from the cache. The Cache class contains the following properties and methods.Properties
- Count
- Item
Methods
- Add
- Equals
- Get
- GetEnumerator
- GetHashCode
- GetType
- Insert
- Remove (Overloaded)
- ToString
Microsoft .NET Terminologies at a Glance
22 New Features of Visual Studio 2008 for .NET Professionals
1. LINQ Support
LINQ essentially is the composition of many standard query operators that allow you to work with data in a more intuitive way regardless.
The benefits of using LINQ are significant – Compile time checking C# language queries, and the ability to debug step by step through queries.
2. Expression Blend Support
Expression blend is XAML generator tool for silverlight applications. You can install Expression blend as an embedded plug-in to Visual Studio 2008. By this you can get extensive web designer and JavaScript tool.
3. Windows Presentation Foundation
WPF provides you an extensive graphic functionality you never seen these before. Visual Studio 2008 contains plenty of WPF Windows Presentation Foundation Library templates. By this a visual developer who is new to .NET, C# and VB.NET can easily develop the 2D and 3D graphic applications.
Visual Studio 2008 provides free game development library kits for games developers. currently this game development kits are available for C++ and also 2D/3D Dark Matter one image and sounds sets.
4. VS 2008 Multi-Targeting Support
Earlier you were not able to working with .NET 1.1 applications directly in visual studio 2005. Now in Visual studio 2008 you are able to create, run, debug the .NET 2.0, .NET 3.0 and .NET 3.5 applications. You can also deploy .NET 2.0 applications in the machines which contains only .NET 2.0 not .NET 3.x.
5. AJAX support for ASP.NET
Previously developer has to install AJAX control library separately that does not come from VS, but now if you install Visual Studio 2008, you can built-in AJAX control library. This Ajax Library contains plenty of rich AJAX controls like Menu, TreeView, webparts and also these components support JSON and VS 2008 contains in built ASP.NET AJAX Control Extenders.
6. JavaScript Debugging Support
Since starting of web development all the developers got frustration with solving javascript errors. Debugging the error in javascript is very difficult. Now Visual Studio 2008 makes it is simpler with javascript debugging. You can set break points and run the javaScript step by step and you can watch the local variables when you were debugging the javascript and solution explorer provides javascript document navigation support.
7. Nested Master Page Support
Already Visual Studio 2005 supports nested master pages concept with .NET 2.0, but the problem with this Visual Studio 2005 that pages based on nested masters can't be edited using WYSIWYG web designer. But now in VS 2008 you can even edit the nested master pages.
8. LINQ Intellisense and Javascript Intellisense support for silverlight applications
Most happy part for .NET developers is Visual Studio 2008 contains intellisense support for javascript. Javascript Intellisense makes developers life easy when writing client side validation, AJAX applications and also when writing Silverlight applications
Intellisense Support: When we are writing the LINQ Query VS provides LINQ query syntax as tool tips.
9. Organize Imports or Usings: We have Organize Imports feature already in Eclipse. SInce many days I have been waiting for this feature even in VS. Now VS contains Organize Imports feature which removes unnecessary namespaces which you have imported. You can select all the namespaces and right click on it, then you can get context menu with Organize imports options like "Remove Unused Usings", "Sort Usings", "Remove and Sort". Refactoring support for new .NET 3.x features like Anonymous types, Extension Methods, Lambda Expressions.
10. Intellisense Filtering: Earlier in VS 2005 when we were typing with intellisense box all the items were being displayed. For example If we type the letter 'K' then intellisense takes you to the items starts with 'K' but also all other items will be presented in intellisense box. Now in VS 2008 if you press 'K' only the items starts with 'K' will be filtered and displayed.
11. Intellisense Box display position
Earlier in some cases when you were typing the an object name and pressing . (period) then intellisense was being displayed in the position of the object which you have typed. Here the code which we type will go back to the dropdown, in this case sometimes programmer may disturb to what he was typing. Now in VS 2008 If you hold the Ctrl key while the intellisense is dropping down then intellisense box will become semi-transparent mode.
12. Visual Studio 2008 Split View
VS 205 has a feature show both design and source code in single window. but both the windows tiles horizontally. In VS 2008 we can configure this split view feature to vertically, this allows developers to use maximum screen on laptops and wide-screen monitors.
Here one of the good feature is if you select any HTML or ASP markup text in source window automatically corresponding item will be selected in design window.
13. HTML JavaScript warnings, not as errors: VS 2005 mixes HTML errors and C# and VB.NET errors and shows in one window. Now VS 2008 separates this and shows javascript and HTML errors as warnings. But this is configurable feature.
14. Debugging .NET Framework Library Source Code:
Now in VS 2008 you can debug the source code of .NET Framework Library methods. Lets say If you want to debug the DataBind() method of DataGrid control you can place a debugging point over there and continue with debug the source code of DataBind() method.
15. In built Silverlight Library
Earlier we used to install silverlight SDK separately, Now in VS 2008 it is inbuilt, with this you can create, debug and deploy the silverlight applications.
16. Visual Studio LINQ Designer
Already you know in VS 2005 we have inbuilt SQL Server IDE feature. by this you no need to use any other tools like SQL Server Query Analyzer and SQL Server Enterprise Manger. You have directly database explorer by this you can create connections to your database and you can view the tables and stored procedures in VS IDE itself. But now in VS 2008 it has View Designer window capability with LINQ-to-SQL.
17. Inbuilt C++ SDK
Earlier It was so difficult to download and configure the C++ SDK Libraries and tools for developing windows based applications. Now it is inbuilt with VS 2008 and configurable
18. Multilingual User Interface Architecture - MUI
MUI is an architecture contains packages from Microsoft Windows and Microsoft Office libraries. This supports the user to change the text language display as he wish.
Visual Studio is now in English, Spanish, French, German, Italian, Chinese Simplified, Chinese Traditional, Japanese, and Korean. Over the next couple of months. Microsoft is reengineering the MUI which supports nine local languages then you can even view Visual studio in other 9 local languages.
19. Microsoft Popfly Support
Microsoft Popfly explorer is an add-on to VS 2008, by this directly you can deploy or hosting the Silverlight applications and Marshup objects
20. Free Tools and Resources
People may feel that I am a promoter to Visual Studio 2008 as a salesman, but we get plenty of free resources and free tools with Visual Studio 2008.
21. We can use for Commercial
Earlier you were spending lot of money to host your .NET applications for commercial use. Now you no need to worry Now Microsoft is providing you to host your application free on Popfly for web pages and also visual studio express projects.
If you like this article, Please share with othersOther Interested .NET Readings:
Writing/Developing Facebook Applications in .NET using Facebook.NET SDK
Refactor .NET code using Visual Studio and Refactor! Pro
Dead-end for Microsoft ?
.NET Obfuscation using Dotfuscator for Source Code Protection
Windows System Tray Programming using C# and VB.NET
Microsoft Office 2007 Features and Free Download