740 likes | 1.03k Views
I nternet P rogramcılığı II. Sibel Öztan s .moyano @ iku . edu.tr. Bilinmesi Gerekenler. World Wide Web Consortium http://www.w3.org/ HTML ( HyperText Markup Language) http://www.w3.org/community/webed/wiki/HTML Cascading Style Sheets (CSS) http://www.w3.org/Style/CSS/ Temel programla
E N D
Internet Programcılığı II SibelÖztan s.moyano@iku.edu.tr
BilinmesiGerekenler • World Wide Web Consortium • http://www.w3.org/ • HTML (HyperText Markup Language) • http://www.w3.org/community/webed/wiki/HTML • Cascading Style Sheets (CSS) • http://www.w3.org/Style/CSS/ • Temelprogramla • C, VB, Javascript, ASP vb. • SQL (Structured Query Language) • SqlServer • MySql
DersProgramı? • 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 (UygulamaSunucusu) • 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şimkurar • Bir istemci bir web kaynağınaHTTP formatında bir istek gönderir • Web sayfası • Resimdosyası • Javascript, CSS dosyası • Bir sunucu yanıt verir
BilmeceninParçaları • Her istemcininbirtarayıcısıvardır • Kişiselbilgisayarlar (IE, Safari, Firefox, Opera) • Ceptelefonları • Diğeraraçlar, PDA (Personal Digital Assistant) gibi • Her sunucudaHTTP sunucusu olarak adlandırılanbiryazılımını çalışır • IIS (Internet Information Services) (Windows tabanlı) • Apache (Tümişletimsistemleriiçin)
BilmeceninParçaları • Her istemcininbirtarayıcısıvardır • Kişiselbilgisayarlar (IE, Safari, Firefox, Opera) • Ceptelefonları • Diğeraraçlar, PDA (Personal Digital Assistant) gibi • Her sunucudaHTTP sunucusu olarak adlandırılanbiryazılımını çalışır • IIS (Internet Information Services) (Windows tabanlı) • Apache (Tümişletimsistemleriiç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# ileMerhabaDunya • Add new item • Place code in a separate file • VB – C# • Dosyaadı • 80 http • 443 https • Protected var1 As String = "VB'denmerhaba!" • protected string var1 = "C#'danMerhaba!";
Development Web Server • Properties • ID • Port number : • Use dynamic ports : false
Visual Studio – GenelBakış • 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ı • KurumsalVeritabanları (Enterprise Databases) • MySQL (ücretsiz) • Oracle • IBM DB2 • SQL Server • Ölçeklenebilir • Sürücüdesteği • .Netkodlamasınaparalel • Kolaykimlikdoğrulamaiçin Windows güvenlikmodeliyleentegre
Sql Server KurulumuveGösterimi • Sql Server Express • MyBookStore • Visual Studio üzerindenSql 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();
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"/> • • <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”>
DinamikVeriGösterimi (Presentanting Dynamic Data) • Gridviewkontrolu • Gridview paging (sayfayönetimi) kontrolu • Enable Paging • Gridviewileverigüncelleme • ReadOnlydeğişkeni • Update statement • DataListkontroluileverigösterimi • Dynamic expression • Bağlama ifadeleri ile veri biçimlendirme (Formatting data with binding expressions)
Veri Giriş Sistemi - 1 • Belirli bir veritabanı tablosunun önemlisütunlarınıiçerenlistesayfası • Kullanıcının bu veritabanı tablosuna yeni bir kayıt eklemesineolanakverenlinkler • Seçilen bir kaydın detaylarınıgösterenve kullanıcının bu verilerde değişiklik yapmasınaolanaksağlayanbirgüncellemesayfası
Veri Giriş Sistemi - 2 • DetailsViewkontrolununkullanımı (alt-sift-enter tam sayfa) • Auto Format, ItemStyle, HeaderStyle (koddanve design üzerinden) • DetailsView kontrolü ile veri eklemek • Başlıkbilgilerinideğ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 • Fonksiyontanımı protectedaccessmodifiervoidreturntypeDetailView_ItemInsertfunctionname(object sender, DetailsViewInsertedEventArgs e)functionsignature { if (e.AffectedRowsnumericproperty == 1) { Response.Redirect("~/Authors.aspx"); } } • Event handler attribute eklemek OnItemInserted="DetailView_ItemInsert" • İptalişlemiiçinItemCommand 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ğrulamakontrolleri eklemek • Validation (doğrulama) • RangeValidator • RequiredFieldValidator • Doğrulama hata mesajınıdüzenlemek • CSS sınıfıeklemek • Hatamesajınısınıfıtanımlamak • Doğrulama özeti kontrolukullanı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 • Username (büyük harf duyarlı değil) • Membership (hashed encoded, karşılaştırma için kullanılabilir fakat okunamaz) • 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ı