Đỉnh NGUYỄN

life's a journey not a destination

Những điểm mới trong ASP.NET 4.0

Leave a comment


Với Visual Studio 2010 Beta 1 và .NET Framework 4.0 Beta
1, ASP.NET 4.0 có rất nhiều sự cải tiến về Webforms, Dynamic Data &
Ajax, nâng cao hiện suất môi trường chạy (runtime) như Caching, Session
& các đối tượng Request/Response.

Một số đặc tính mới:

Điều khiển View State
dùng thuộc tính ViewStateMode – Cải thiện hiệu suất

Một trong những điều được phàn nàn nhiều trong
ASP.NET Webforms là hiệu suất của View State. Những phiên bản trước,
bạn chỉ có thể gán thuộc tính EnableViewState là true hoặc false, tất
cả các điều khiển mặc định sẽ kế thừa.

Với ASP.NET 4.0, thuộc tính ViewStateMode cho phép gán
trên mỗi điều khiển, ViewState sẽ có thển enabled, disabled, inherted.

<asp:Panel ID="pnlViewState" runat="server" ViewStateMode="Disabled">
      Disabled:
<asp:Label ID="label1" runat="server" 
Text="Value set in markup"
ViewStateMode="Inherit"  /><br />
          
Enabled: <asp:Label ID="label2"  runat="server"
Text="Value set in markup"
ViewStateMode="Enabled" />
  <hr />
  <asp:button
ID="Button1" runat="server"  Text="Postback"
/>

    </asp:Panel>

Trong code-behind

protected void Page_Load(object sender, EventArgs e)
    {
       
if (!IsPostBack)

       
{

           
label1.Text = "Value set in code behind";

           
label2.Text = "Value set in code behind";

       
}

    }

Khi chạy trang web trên, giá trị khởi tạo cho cả 2
label là “Value set in code behind”; sau khi nhấn nút (postback), giá trị
label1 sẽ thay đổi thành “Value set in markup”, trong khi giá trị của
label2 vẫn không thay đổi. Như bạn thấy, Panel chứa cả 2 labels có
thuộc tính ViewStateMode được gán là Disabled, và label1 kế thừa giá
trị thuộc tính ViewStateMode từ Panel (mặc định nếu không được gán), trong
khi label2 được gán là Enabled. Đó là lý do label2 vẫn duy trì
ViewState trong khi label1 mất.

Page meta keyword và
description – Search engine optimization feature

Visual Studio 2008, có thể gán tiêu đề (title) của
trang trong thẻ khai báo đầu trang hoặc trong mã code-behind (Page.Title).
Tuy nhiên, Đối với các search engine, Title, Keyword và Description là
rất quan trọng.

Đặc điểm mới trong ASP.NET 4.0 cho phép người dùng lập
trình Description và Keyword như sau:

With Visual
Studio 2010 Beta 1 and .NET Framework Beta 1 out for some time, this post is
due from me for a long time.   ASP.NET 4.0 has many improvements for
different set of scenarios such as Webforms, Dynamic Data & AJAX based web
development.  There are also a lot of enhancements to the core runtime
that powers ASP.NET such as Caching, Session & Request/Response objects.

For this post,
we will examine some of the web form enhancements.  There are sure a lot
of them and we will examine some of them in the future posts.

Controlling
View State using the ViewStateMode Property – Performance Enhancement

One of the most
complained thing in ASP.NET Webform is the growing viewstate which becomes a
concern for performance.  While earlier you can set the EnableViewState
property to true or false, post that, all the controls, by default inherit and
even if you set it to enabled at control level, the behaviour was inconsistent.

With ASP.NET
4.0, the ViewStateMode property helps to determine for every control, whether
the ViewState should be enabled, disabled or inherited accordingly.  Ex.-

<asp:Panel
ID="pnlViewState" runat="server"
ViewStateMode="Disabled">
      Disabled:
<asp:Label ID="label1" runat="server" 
Text="Value set in markup"
ViewStateMode="Inherit"  /><br />
          
Enabled: <asp:Label ID="label2"  runat="server"
Text="Value set in markup"
ViewStateMode="Enabled" />
  <hr />
  <asp:button
ID="Button1" runat="server"  Text="Postback"
/>

    </asp:Panel>

In the
code-behind

protected
void Page_Load(object sender, EventArgs e)

    {
       
if (!IsPostBack)

       
{

           
label1.Text = "Value set in code behind";

           
label2.Text = "Value set in code behind";

       
}

    }

When you run
the above page, you can find that the intial value for both the labels is set
to “Value set in code behind” whereas after clicking on the button (postback),
the value of label1 changes to “Value set in markup” whereas the value of
label2 remains unchanged.  As you can see, the Panel which holds both
these lables has ViewStateMode set to Disabled and label1 is inherting the mode
(this is the default if not specified) and label2 has it enabled.  That is
the reason label2 maintains viewstate while label1 loses it.

While it is
arguably possible using the simple EnableViewState property earlier, it was
never consistent.  Considering the fact that in most of our performance
sessions, we talk about disabling viewstate and then enabling it at control
level while it doesnt work, this ViewStateMode is a welcome architectural
change to improve performance.

Page
Meta Keyword & Description – Search Engine Optimization feature

Upto Visual
Studio 2008, one can set the Title of the page declaratively or through program
using Page.Title.  However, as more and more web traffic is happening
through search engines, Page’s Title, Keyword and description become more
important.  Although the Keyword feature was exploited and hence many
search engines today ignore it, Page Description is something still major search
engines such as Google, Bing use for identifying and indexing pages based on
content.

The new feature
in ASP.NET 4.0 allows users to programmatically set the Page Description and
Keywords as follows:-

protected
void Page_Load(object sender, EventArgs e)

    {
       
this.Page.Title = "My ASP.NET Blog";

       
this.Page.MetaKeywords = "ASP.NET, Web Development, Blog, ASP.NET
Blog";

       
this.Page.MetaDescription = "This Blog contains posts related to ASP.NET
and Web Development";

    }

Đoạn mã ở trên kèm theo mã đánh dấu sau:

<meta
name="keywords" content="ASP.NET, Web Development, Blog, ASP.NET
Blog" />

<meta
name="description" content="This Blog contains posts related to
ASP.NET and Web Development" />

Mặc dù trông đơn giản, rất hữu dụng trong trường hợp
muốn gán động nội dung dựa trên điều kiện

Cheers!!!

Advertisements

Author: dinhnn

Senior software developer, a technical leader. You can be reached at via email to dinhnguyenngoc@gmail.com, via my blog at dinhnguyenngoc.wordpress.com, and on Twitter @dinhnguyenngoc.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s