ASP.NET için iki kod modeli var, bunlar:
- Single-File Page Model
- Code-Behind Page Model
Peki hangisini seçmeli?
Öncelikle belirtmek gerekiyorki microsoft'un açıklamasına göre (bir kaç kere test ettim, gerçekten öyle) herhangi bir performans farkı yok, tamamen şahsi seçime bağlı. Aslında şahsi seçimler de durumlara göre yapıldığına göre, durumuna göre değişir de diyebiliriz.
Mesela eğer kendimizi geliştirmek için bir örnek çalışıyorsak ya da az kodlu bir sayfa olacaksa, single-file page model daha uygun bir seçim olabilir. Sebep olarak da:
- Markup (kullanıcı arayüzü) ve kodlar aynı sayfada olacağından ötürü daha okunaklı ve daha hakim olacağımız bir ortam oluşturur.
- Bir başka şahısla paylaşacaksak sayfayı, göndermesi daha kolay olur (netice de bir tek dosyadan oluşuyor)
gibi bazı örnekler verilebilir. Bu tip bir çalışmaya aşağıda bir örnek vereyim.
<%@ Page Language="C#" %>
<script runat="server">
void Button1_Click(Object sender, EventArgs e)
{
Label1.Text = DateTime.Now.ToString();
}
</script>
<html>
<head>
<title>Single-File Page Model</title>
</head>
<body>
<form runat="server">
<div>
<asp:Label id="Label1"
runat="server" Text="Label">
</asp:Label>
<br />
<asp:Button id="Button1"
runat="server"
onclick="Button1_Click"
Text="Button">
</asp:Button>
</div>
</form>
</body>
</html>
Code-Behind page model'i ise ciddi çalışmalarımızda ve çok kodlu çalışmalarımızda kullanmamız daha mantıklı olacaktır. Yine birkaç sebep belirtmek gerekirse:
- Markup ve kodlar ayrı sayfalarda olacağından ötürü kod yazarıyla tasarımcı aynı anda çalışabilir, bu da zamandan tasarruf sağlayıp verimliliği arttırır.
- Kodu markup'dan ayıklamaya gerek kalmayacağı için rahatça başka sayfalarda da kullanılabilir.
- Kodu tasarımcı görmeyeceği için, bir nevi güvenlik de sağlamış oluruz.
Bu sebepler çoğaltılabilir. Bir de code-behind'a örnek kod vereyim.
SamplePage.aspx
<%@ Page Language="C#" CodeFile="SamplePage.aspx.cs"
Inherits="SamplePage" AutoEventWireup="true" %>
<html>
<head runat="server" >
<title>Code-Behind Page Model</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Label id="Label1"
runat="server" Text="Label" >
</asp:Label>
<br />
<asp:Button id="Button1"
runat="server"
onclick="Button1_Click"
Text="Button" >
</asp:Button>
</div>
</form>
</body>
</html>
SamplePage.aspx.cs
using System;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class SamplePage : System.Web.UI.Page
{
protected void Button1_Click(object sender, EventArgs e)
{
Label1.Text = DateTime.Now.ToString();
}
}
Netice de tamamen alışkanlıklara ve tercihlere göre insandan insana değişir bu seçim.