Internet Programcılığı II
Sibel Öztan
s.moyano@iku.edu.tr
Bilinmesi Gerekenler
World Wide Web Consortium
HTML (HyperText Markup Language)
http://www.w3.org/Style/CSS/
Temel programla
http://www.w3.org/community/webed/wiki/HTML
Cascading Style Sheets (CSS)
http://www.w3.org/
C, VB, Javascript, ASP vb.
SQL (Structured Query Language)
SqlServer
MySql
Ders Programı?
ASP.NET Framework
http://www.asp.net/
Java Seam Framework
http://seamframework.org/
Temel Web Kavramları
İstemci (Client)
Browser (Tarayıcı)
Web Server
Application Server (Uygulama Sunucusu)
TCP/IP (Transport Control Protocol / Internet
Protocol)
HTTP (HyperText Transfer Protocol)
FTP (File Transfer Protocol)
SMTP (Send Mail Transfer Protocol)
POP (Post Office Protocol)
Web Nasıl Çalışır?
WWW, Internet üzerinden bağlı birçok istemci ve
sunucudan oluşur
Bilgisayarlar birbirleriyle HTTP kullanarak
iletişim kurar
Bir istemci bir web kaynağına HTTP formatında
bir istek gönderir
Web sayfası
Resim dosyası
Javascript, CSS dosyası
Bir sunucu yanıt verir
Bilmecenin Parçaları
Her istemcinin bir tarayıcısı vardır
Kişisel bilgisayarlar (IE, Safari, Firefox, Opera)
Cep telefonları
Diğer araçlar, PDA (Personal Digital Assistant) gibi
Her sunucuda HTTP sunucusu olarak
adlandırılan bir yazılımını çalışır
IIS (Internet Information Services) (Windows tabanlı)
Apache (Tüm işletim sistemleri için)
Statik Veri Almak (.htm, .html)
Statik Veri Almak (.htm, .html)
Veri Alma ve Gösterme
Veri Alma ve Gösterme
Bilmecenin Parçaları
Her istemcinin bir tarayıcısı vardır
Kişisel bilgisayarlar (IE, Safari, Firefox, Opera)
Cep telefonları
Diğer araçlar, PDA (Personal Digital Assistant) gibi
Her sunucuda HTTP sunucusu olarak
adlandırılan bir yazılımını çalışır
IIS (Internet Information Services) (Windows tabanlı)
Apache (Tüm işletim sistemleri için)
Olası Dinamik Web Çözümleri
ASP
ASP.NET
PHP
Java-based Servers
Jboss
Oracle Weblogic (önceden BEA Weblogic)
IBM Websphere
Adobe ColdFusion
VB ve C# ile MerhabaDunya
Add new item
Place code in a separate
file
VB – C#
Dosya adı
80 http
443 https
Protected var1 As String =
"VB'den merhaba!"
protected string var1 =
"C#'dan Merhaba!";
Development Web Server
Properties
ID
Port number :
Use dynamic ports : false
Visual Studio – Genel Bakış
File: shift-alt-n New Web Site
Edit : find & replace & bookmark
View – Visual Tools, Error list
Properties window F4
Window – Reset window layout
Toolbox
CSS Properties
Veritabanları
Kurumsal Veritabanları (Enterprise Databases)
MySQL (ücretsiz)
Oracle
IBM DB2
SQL Server
Ölçeklenebilir
Sürücü desteği
.Net kodlamasına paralel
Kolay kimlik doğrulama için Windows güvenlik modeliyle
entegre
Sql Server Kurulumu ve Gösterimi
Sql Server Express
MyBookStore
Visual Studio üzerinden Sql Server’ bağlanma
Yeni query çalıştırma
Gridview
Page With Code and With Code
File
myLabel.Text = “Merhaba…";
On Page Load
if (IsPostBack)…
Panel Control (server side)
Bind Control
<%# fnameInput.Text %>
Page_Load
Page.DataBind();
C# ve VB için veri tipleri
System
C#
VB
System.String
string
String
System.Boolean
bool
Boolean
System.Int32
int
Integer
System.Single
float
Single
System.Double
double
Double
SimpleVars - HTML
<h1>Programming in C#</h1>
<form id="form1" runat="server">
<asp:Panel runat="server">
<asp:TextBox ID="outputText" runat="server"
TextMode="MultiLine"
Height="175px" Width="400px"/>
</asp:Panel>
<asp:Panel runat="server">
<asp:Button ID="runButton" runat="server"
Text="Run Code"
Width="95px" onclick="runButton_Click"/>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<asp:Button ID="clearButton" runat="server"
Text="Clear Console" onclick="clearButton_Click"/>
</asp:Panel>
</form>
SimpleVars - Code
<script runat="server">
protected void output(String value)
{
outputText.Text += value + Environment.NewLine;
}
protected void runButton_Click(object sender, EventArgs e)
{
string localVar = "My local variable";
output(localVar);
}
protected void clearButton_Click(object sender, EventArgs e)
{
outputText.Text = "";
}
</script>
ComplexVars (Object) - Code
<script runat="server">
protected void output(String value)
{
outputText.Text += value + Environment.NewLine;
}
protected void runButton_Click(object sender, EventArgs e)
{
DateTime dt = new DateTime();
output(dt.ToString());
DateTime nowDt = DateTime.Now;
output(nowDt.ToString());
}
protected void clearButton_Click(object sender, EventArgs e)
{
outputText.Text = "";
}
</script>
Loops (Döngüler) - Code
<script runat="server">
…
protected void runButton_Click(object sender, EventArgs e)
{
int counter;
for (counter = 1; counter < 3; counter++)
{
output("The value of counter is " + counter);
}
while (counter > 0)
{
output("The value of counter is " + counter);
counter--;
}
}
…
</script>
Functions - Code
<script runat="server">
protected void output(String value)
{
outputText.Text += value + Environment.NewLine;
}
protected void runButton_Click(object sender, EventArgs e)
{
int total = addValues(5, 3);
output("The total is " + total);
}
protected int addValues(int val1, int val2)
{
return val1 + val2;
}
….
</script>
Trace Statements- Code
<%@ Page Language="C#" Trace="true"%>
<script runat="server">
protected void output(String value)
{
outputText.Text += value + Environment.NewLine;
}
protected void runButton_Click(object sender, EventArgs e)
{
int counter;
for (counter = 1; counter < 3; counter++)
{
output("The value of counter is " + counter);
Trace.Write("The value of counter is " + counter);
}
}
…
</script>
Commenting - Code
<script runat="server">
…
/* This function walks up and down a variable
* */
protected void runButton_Click(object sender, EventArgs e)
{
int counter;
for (counter = 1; counter < 3; counter++)
{
output("The value of counter is " + counter);
}
//while (counter > 0)
//{
// output("The value of counter is " + counter);
// counter--;
//}
}
…
</script>
Custom Controls
Add new item -> Web User control
<%@ Register Src=“~/contrlos/Header.ascx” TagName=“Header”
TagPrefix=“uc1”%>
<uc1:Header runat=“server”>
Registering controls globally in the web.config
<add tagPrefix=“customControls” tagName=“header”
src=“~/contrlos/Header.ascx”/>
Adding public properties to a web control
<script runat=“server”>
public string heading=“Page Heading”;
</script>
<customControls:HeaderWithProps runat=“server” heading=“Title
List”>
Dinamik Veri Gösterimi
(Presentanting Dynamic Data)
Gridview kontrolu
Gridview paging (sayfa yönetimi) kontrolu
Gridview ile veri güncelleme
ReadOnly değişkeni
Update statement
DataList kontrolu ile veri gösterimi
Enable Paging
Dynamic expression
Bağlama ifadeleri ile veri biçimlendirme
(Formatting data with binding expressions)
Veri Giriş Sistemi - 1
Belirli bir veritabanı tablosunun önemli
sütunlarını içeren liste sayfası
Kullanıcının bu veritabanı tablosuna yeni bir
kayıt eklemesine olanak veren linkler
Seçilen bir kaydın detaylarını gösteren ve
kullanıcının bu verilerde değişiklik yapmasına
olanak sağlayan bir güncelleme sayfası
Veri Giriş Sistemi - 2
DetailsView kontrolunun kullanımı (alt-sift-enter tam sayfa)
Auto Format, ItemStyle, HeaderStyle (koddan ve design üzerinden)
DetailsView kontrolü ile veri eklemek
Başlık bilgilerini değiştir
Enable inserting
DetailsView Properties -> DefaultMode (F4)
Sayfa isteklerini yönlendirme
HyperLink kontrolu
DetailsViewInsertedEventArgs
DetailsViewCommandEventArgs
Güncelleme sayfası oluşturmak
SelectParameters asp:QueryStringParameter
Liste sayfasına “add new column” parametre girişi
Veritabanından kayıt silmek
GridView’da “Enable deleting”
Veri Giriş Sistemi - 3
Fonksiyon tanımı
protectedaccessmodifier voidreturntype DetailView_ItemInsertfunctionname(object
sender,
DetailsViewInsertedEventArgs e)functionsignature
{
if (e.AffectedRowsnumericproperty == 1)
{
Response.Redirect("~/Authors.aspx");
}
}
Event handler attribute eklemek
OnItemInserted="DetailView_ItemInsert"
İptal işlemi için ItemCommand event handler
if (e.CommandName == "Cancel")
Veri Giriş Sistemi - 4
SelectCommand="SELECT [au_id], [au_lname], [au_fname],
[phone], [address], [city], [state], [zip] FROM [authors] WHERE
[au_id] = @au_id“
Parametreyi almak için
asp:QueryStringParameter (parametrenin geldiği yer)
<SelectParameters>
<asp:QueryStringParameter Name="au_id"
QueryStringField="au_id" Type="Int32" />
</SelectParameters>
DetailsViewUpdatedEventArgs
GridView -> Add New Column (HyperLinkField) , Get URL from data field
~/AuthorUpdate.aspx?au_id={0}
GridView -> Enable deleting
Wrap özelliğini değiştir
Bilgi Girişi Doğrulama
Öğe düzenleme şablonları ile form özelleştirme
Edit Columns
Add Template
Bind data -- Text="<%#Bind('price') %>“
Bir forma doğrulama kontrolleri eklemek
Validation (doğrulama)
RangeValidator
RequiredFieldValidator
Doğrulama hata mesajını düzenlemek
CSS sınıfı eklemek
Hata mesajını sınıfı tanımlamak
Doğrulama özeti kontrolu kullanılması
Display=“None”
ValidationSummary
Birleştirilmiş tablolar ile bir sorgu
oluşturma
Titles tablosunu
Publishers ve Authors ile birleştir
au_lname + ‘ ‘ +au_fname
Verileri düzenle ve sırala
Gridview’u düzenle
Başlıklar
Hizalama
Autoformat
Fiyatı döviz kuru olarak göster: {0:C}
Kontrol stil özelliklerini CSS ile
değiştirmek
Sunum ve basım için farklı CSS belgeleri
hazırlamak
RowStyle
HeaderStyle
AlternatingRowStyle
CssClass özniteliği
media özniteliği
Menu kimliğinin belirlenmesi
#myHeader_menuPanel
{visibility:hidden;height:0px;width:0px;}
IE ve Firefox ile önizlemek
Raporlama için veri seçimi
Publishers SqlDataSource ekle
DropDown List ekle
Query builder üzerinden düzenleme
pub_id alanını ekle (gösterimden kaldır)
=@pub_id
Refresh parameters
Parameter source - > Control ->DropDownList1
Set AutoPostBack True
Hepsi seçeneğini ekleyin!
Raporlama için veri seçimi
Hepsi seçeneğinin eklenmesi
DropDownList kontrolünde
AppendDataBoundItems=“true”
<asp:ListItem Text=“Hepsi”
Value=“0”></asp:ListItem>
Select cümlesinde
(titles.pub_id = @pub_id) OR (0=@pub_id)
Session durumunu yönetmek
ViewState ve geri yollama (postback)
Sayfalar arasında veri alışverişi
ViewState nesnesi dinamik olarak ASP.NET
tarafından kullanılıyor
Sayfanın adı ve ilgili veriyi base64 kodlu olarak
tutuyor
EnableViewState özelliği ayarlama (tuning) için
kullanılabilir
Session değişkenleri kullanmak
Session değişkenleri sunucunun belleğinde
saklanır
Button_click: (yazmak için)
Session[“sessionDegiskeni”]=TextBox1.Text;
Response.Redirect(“SessionOkuma.aspx”);
Button_click: (okumak için)
OutputLabel.Text=(String)Session[“sessionDegiskeni”];
Form doğrulama ile site güvenliğini
sağlamak
http://www.asp.net/web-forms/overview/security
Form doğrulamayı açmak
Windows
Forms
Passport
Web.congif (<authentication mode=“Forms”>)
<authentication mode="Forms">
Kullanıcılar girişi için login sayfası hazırlamak
LoginStatus nesnesi -> Logged Out view
Login bileşenini LoginStatus nesnesinin üzerinde bırak
Sayfa çalıştırıldığında veritabanı (sqlserver”) otomatik olarak
yaratılıyor (web sitesiyle beraber saklanan bir veritabanı).
Form doğrulama ile site güvenliğini
sağlamak
Yeni kullanıcı kayıt sayfası hazırlamak
CreateUserWizard
Password (7 karekter, 1 adet alfanümerik olmayan
karekter, büyük harf duyarlı)
AutoFormat
Login Form
CreateUserText -> Yeni Kullanıcı Kayıt
CreateUserURL
Form doğrulama ile site güvenliğini
sağlamak
ASPNETDB.MDF
Users
Membership (hashed encoded, karşılaştırma için
kullanılabilir fakat okunamaz)
Username (büyük harf duyarlı değil)
Password (büyük harf duyarlı)
Kullanıcı silmek için önce Membership tablosundan
silmek gerekiyor.
web.config
system.web
<authorization>
<deny users=“?”>
< /authorization >
Form doğrulama ile site güvenliğini
sağlamak
Authentication (kimlik doğrulama)
forms
Authorization (yetkilendirme)
<deny users=“?”/>
Form doğrulama ile site güvenliğini
sağlamak
Logout sayfası
Header.ascx kontroluna LoginStatus
nesnesini ekle
Views: Logged In
menuPanel width özelliğini kontrol et
Login.aspx sayfasından login kontrolu dışındaki
ögeleri kaldır (gösterimlerine izin verilmediği için)
Form doğrulama ile site güvenliğini
sağlamak
<configuration>
<system.web>
<authentication mode="Forms">
<forms name="MyAppCookie"
loginUrl="~/Login.aspx"
protection="All"
timeout="30" path="/" />
</authentication>
...
</system.web>
</configuration>
Form doğrulama ile site güvenliğini
sağlamak
protection
All, None, Encryption, Validation
timeout
Dakika biriminden
Kısaltmalar
WAT Website Administration Tool
LINQ Language Integrated Query
ASP.NET web sitesini yayınlamak
IIS (Internet Information Services) – Web sunucusu
kurulumu
Add-remove windows components
World Wide Web Publishing services
Virtual directory yaratılması, alias verilmesi
IIS üzerinden anonymous access verilmesi
ASP.NET framework kurulumu
IIS -> Add Application
Veritabanı script’inin hazırlanması
http://msdn.microsoft.com/en-us/library/1y1404zt.aspx
ÖZET
.NET Framework, aşağıdaki imkanları
sağlayan bir yazılım platformudur:
Yönetilen bir bilgisayar plaformu
Güvenli bir çalışma yürütme ortamı
(runtime execution environment)
Dil seçeneği (C#, VB, etc.)
Dağıtık sistemler ile entegrasyon yeteneği
(web servisleri)
Nesnel tabanlı programlama ortamı
.NET Framework Altyapısı
.NET Framework Altyapısı
CLR (.NET Framework)
Diller aynı Type System’i kullanıyorlar,
FCL (BCL – Base Class Library) çekirdek
sınıflar, dosyalama vs.
Data Access FW (ODBC, OLEDB, etc.)
CLS
Visual Studio (IDE – Integrated
Development Environment)
ASP.NET Kodunun Derlenmesi
ASP.NET Kodunun Derlenmesi
ASP.NET Kodunun Derlenmesi
MSIL (Intermediate Language)
JIT Just in Time Compiler
ASP.NET Kodunun Derlenmesi
ASP.NET Web Form Özellikleri
Kodların ayrılması ve Page sınıfı
Sayfa yönergeleri ve öznitelikleri (directives and
attributes)
Web kontrolları
Kullanıcı girişlerinin doğrulanması (validating
user input)
Varsayılan değerleri ayarlamak (setting defaults)
Kullanıcı denetimler oluşturmak (creating user
controls)
ASP.NET Web Form
ASP.NET
Web Form olarak adlandırılan
programlanabilir Web sayfası sunar:
HTML hazırlamak (dinamik olarak)
Nesnel-tabanlı (sınıflar,
Page sınıfından türerler
Kontrolları kullanarak veri göstermek, toplamak ve
doğrulamak mümkün
ASP.NET Web Form Özellikleri
ASP.NET
Güvenlik (security)
Entegrasyon
Navigasyon
Login, logout, kayıt (registration), şifre hatırlatma (password
reminder)
Veri
Kontrol Kategorileri
Nerdeyim, menü kontrolları, xml site haritaları
Web parçacıkları
Share point, kısmi sayfa gönderileri (postback)
ASP.NET Web Form Özellikleri
Anahtar
Master sayfalar (şablon)
Özellikler
Siteye bütünlük getirmek
Temalar/Skin’ler (yerleşik – built-in)
Lokalizasyon (Türkçeleştirme)
Uyarlanabilir UI (adaptive user interface)
Tarayıcıya göre kendisini uyarlayan web kontrolleri
ASP.NET Web Form Özellikleri
Uygulama
Hizmetleri API’ları (uygulama
programlama arabirimi)
Üyelik
Rol yöneticisi
Kişiselleştirme (personalization)
Site navigasyonu
Belleğe alma (cashing)
Yönetimsel araçlar
Web Formunda Neler Bulunur?
Web Formları bir çok farklı öğe içerebilir
Yönergeler:
<%@ Page Language=“C#” AutoEventWireup=“True” %>
Kod blokları (tercih etmiyoruz)
<script language=“C#” runat=“server”>..</script>
Gösterim blokları:
<%=UserDetails%> klasik ASP
Sunucu kontrolları:
<asp:Label id=“lblMerhaba” runat=“server” />
Kullanıcı kontrolları:
<acme:Header id=“ucHeader” runat=“server” />
ASP.NET Expressions:
<%$ ConnectionStrings: MybookstoreConnString %>
Data Binding Expressions:
<%# Eval(“DBFieldName” )%>
Sayfa Yönergeleri ve Öznitelikleri
Sayfa yönergesi, her ASP.NET sayfasının
üstüne eklenir
<%@ Page Lanuage=“C#” %>
Sayfa yönergesinin anahtar özelikleri:
Sayfanın dilini belirtir
Scrollbar konumlarını korur !!
Kod dosyası yolunu tanımlar
İzlemeyi açar veya kapatır
Sayfa tarafından kullanılan temaları veya ana
şablonları belirtir
Hata sayfasını tanımlar
Sayfa Yönergeleri ve Öznitelikleri
Web Kontrolları (Denetimleri)
ASP.NET, veri toplamak görüntülemek ve
doğrulamak için web sunucusu kontrollerine
dayanır
Sunucu denetimleri, özellikleri, yöntemleri ve
olayları (event) olan sınıflardır
Sunucu denetimleri, dinamik olarak XHTML
uyumlu kod üretir
ASP.NET Denetim Türleri
ASP.NET kontrolleri Page sınıfı tarafından dinamik html
çıktı üretmek için kullanılan önemli bir teknolojidir
Sunucu denetimlerinin dört temel tipi vardır:
Web sunucu denetimleri: Kesin yazımlı (stronglytyped) programlanabilir nesneler. (sınıflar)
HTML sunucu denetimleri: Bilinen html
elemanlarına benzerler fakat sunucu tarafında
denetlenirler. (etiketler; runat=“server”)
Doğrulama denetimleri: Web Form gönderimlerini
doğrulamak için kullanılır. (yerleşik)
Kullanıcı denetimleri: Üstbilgi, altbilgi ve menü gibi
özel denetimler.
ASP.NET Web Sunucu
Denetimleri
ASP.NET Web Sunucu
Denetimleri …devamı
ASP.NET Denetim Örnekleri
ASP.NET Denetim Örnekleri
ASP.NET Denetim Örnekleri
ASP.NET Denetim Örnekleri
ASP.NET Denetim Örnekleri
ASP.NET Denetim Örnekleri
ASP.NET Denetim Örnekleri
<asp:Calendar ID="Calendar1" runat="server"></asp:Calendar>
<asp:CustomValidator ID="CalCheck" runat="server" ErrorMessage="* Lütfen doğum tarihinizi giriniz."
ValidationGroup="ValidationSummary1" ></asp:CustomValidator>
<asp:ValidationSummary ID="ValidationSummary1" runat="server" />
protected void Button1_Click(object sender, EventArgs e)
{
DateTime x;
DateTime y = new DateTime();
x = Calendar1.SelectedDate;
if (x == y)
{
CalCheck.IsValid = false;
return;
}
Label1.Text = Ad.Text + " " + Soyad.Text + " " + Calendar1.SelectedDate.Date.ToString();
}