BİL 458 Web Programlama dersi Yrd. Doç. Dr. Murat YEŞİLYURT [email protected] • ANA KAYNAK : • ASP .NET Web Developer's GuideLee, Wei Meng Ortiz, Jonothon Garrett, Chris Syngress Publishing, ISBN:9781928994510 • C# ile ASP.NET 4.0, Zafer Demirkol, Kodlab Yayınları, ISBN:9786054205011 Bu dersten geçmek için : Ödev/Proje/Sunum 5 % 20 Kısa Sınav (Quiz) 2 % 10 Ara Sınav 1 % 30 Yarıyıl Sonu Sınavı 1 % 40 INTERNET PROGRAMCILIĞI: Internet programcılığında bir istemci sunucu kavramı karşımıza çıkmaktadır.. Sunucu (Server) Sunucu İnternet İstemci (Client) İstemci İstemci INTERNET PROGRAMCILIĞI: Internet programcılığında bir istemci sunucu kavramı karşımıza çıkmaktadır.. INTERNET PROGRAMCILIĞI: İnternet dünyası sunucu - istemci mimarisine göre çalışır. Buna göre web sitelerini barındıran bilgisayarlara sunuculara (WEB SERVER), sunuculardan web sitelerini isteyen bilgisayarlara ise istemci adı verilir. Bu anlamda web sitelerini de ikiye ayırabiliriz: 1. Statik siteler 2. Dinamik siteler. Statik siteler HTML ile yapılan ve kullanıcı ile etkileşime girmeyen kullanıcıya sadece içerik sunulan, kullanıcının içeriğe müdahale edemediği sitelerdir. Dinamik siteler ise kullanıcıya içerik sunulduğunda etkileşime geçebildiği sitelerdir Örn: Yorum yazar, oy kullanır, içerik ekler, arama yapar, vs. INTERNET PROGRAMCILIĞI: İnternet Programcılığında kullanılan Diller: 1. Çeşitli markup (HTML, CSS, XHTML, XML) diller : Yani bir yorumlayıcıya ihtiyaç duyan işaret dilleri demektir. 2. Scripting (PHP, ASP, JavaScript, Perl gibi) diller: Hazır kod parçalarıdır. 3. Web Programlar için önemli bir sunucuda kullanılan diller: (PHP/C#/ASP.NET veya Servlets/JSP/JSF/Java/JEE) kullanılır. 4. Veri tabanı dilleri: SQL, ODBC, ADO.NET veya JDBC. 5.Zengin içerikli internet uygulamaları geliştirmek için kullanılan diller: Ajax, Flash vs.. INTERNET PROGRAMCILIĞI: WEB SUNUCU: HTML, ASP.Net, JSP gibi dinamik veya statik sayfaları HTTP protokolü üzerinden sunan sunucudur. IIS (Internet Information Services): Windows işletim sisteminin web sunucusu (windows server kurulu bir bilgisayarın web servis hizmetini sunan sunucusu) bileşenidir. Web uygulamalarının barındırılıp sunulması için bu uygulamanın olması gereklidir. (IIS ile ISS farklıdır !). İstemci sunucudan bir istekte bulunduğunda bunu IIS sayesinde yapacaktır. INTERNET PROGRAMCILIĞI: IIS (Internet Information Services): İlk olarak Windows NT (1993 yılında çıkmış 32 bitlik multi tasking bir sunucu mimarisi olarak çıkmıştır.. Kişisel bilgisayarlar için olan Windows işletim sistemlerinden ayrıdır.) ile birlikte çıkmıştır ve IIS 1.0 olarak adlandırılmıştır. Daha sonra Windows NT ile birlikte IIS 4.0 sürümüne kadar güncellenmiştir. Windows 2000 ile IIS 5.0 Windows XP ile IIS 5.1 Windows Server 2003 ile IIS 6.0 ile yenilenmiştir ki asıl atılımı burada yapmıştır. 64 bit mimariye geçiş olmuştur ve ilk defa Ipv6’yı desteklemektedir. INTERNET PROGRAMCILIĞI: IIS (Internet Information Services): Windows Server 2008 ile birlikte tamamen yeniden yazılan IIS 7.0 gelmiştir ve güvenlik en önemli öğe olmuştur. Failed Request Tracing (isteklerdeki hata izlenmesi) Windows 7 ve Windows Server 2008 R2 ile birlikte gelen IIS 7.5 gelmiştir. (IPSec (IP security TCP/IP protokolünün güvenliğini sağlamak için kullanılır kimlik doğrulama ve veri akışı her IP paket şifrelemesi) ve Requesting Filtering isteklerin filtrelenmesi özelliği) Windows Server 2012 ile birlikte tamamen yeniden yazılan IIS 8.0 gelmiştir SSL sertifika desteği ASP.NET 4.5 Desteği Windows Server 2012 R2 ve Windows 8.1 ile sunulan IIS 8.5 sunulmuştur.. Windows 10 için IIS ayarı. INTERNET PROGRAMCILIĞI: .NET yapısı: Yazılan bir program için en büyük sorun yazılan programın her işletim sistemi ve konfigürasyonunda kullanılamamasıdır. Bunun için .NET yapısı en iyi çözüm sunan platformdur. Birçok dil seçeneği tarafından desteklenir. Bu nedenle aslında ASP.Net bir programlama dili değil ASP dili üzerine bina edilmiş bir .NET platformudur. ASP:NET ile birlikte birçok dil kullanılabilmektedir. . INTERNET PROGRAMCILIĞI: .NET yapısı: .NET Application .NET Framework Operating System + Hardware .Net Framework’ün Yapısı • Java’dan önce, geliştirilen yazılımlar direkt olarak makine koduna çevrilirdi. Java ile program kodu önce byte code’a çevrilir. JVM (Java virtual machine) bu kodu işletim sisteminin istediği koda çevirir. .Net içinde çalışma mantığı benzerdir .NET kodu ilk önce IL’ ye (Intermediate Language-Ara dil-veya MSIL) derler, bu IL kodu çalıştırılmak istendiğinde CLR, JIT derleyicilerini kullanarak kodu makine diline çevirir. Basic C++ C# MSIL Derleyici Makine Dili J# • .Net Framework’ün Yapısı ile bir C# kodunun çalıştırılması C# MSIL CLR Makine Dili ..NET İLE KODU DERLEME VE ÇALIŞTIRMA • MSIL (Microsoft Intermediate Language) Normalde bir program derlendiğinde doğrudan makine koduna çevrilirken, .NET uyumlu bir dil ile derleme yapıldığında program kodu makine koduna değil de MSIL (Microsoft Intermediate Language)'e çevrilir. MSIL işlemciden bağımsız komut setinden oluşmaktadır. Bu komut seti içerisinde nesnelerin yüklenmesi, depolanması ve başlatılması sağlayan komutların yanı sıra aynı zamanda nesneler üzerinde metot çağrımını sağlayan komutlar da yer almaktadır. .NET Framework ile yazılmış bir kaynak kodun derlenmesi sonucu MSIL kodu oluşmaktadır. MSIL, NET dilleri arasında bir bütünleşme sağlamaktadır. MSIL kodun çalıştırılmasından önce var olan MSIL kodu, doğal makine koduna (native code) dönüştürülmektedir. Burada interpretation dediğimiz yorumlama işlemi yapılmaz. • CLR (Common Language Runtime): • Ortak Dil Çalışma Platformu olarak da adlandırılan CLR, .NET altyapısında programların çalışmasını kontrol eden ve işletim sistemi ile programımız arasında yer alan arabirimdir. • Eğer platformdan bağımsız bir ortam istiyorsak, ihtiyaç duyulan şey CLR dir, Hangi platformda iseniz (Linux, Mac, Windows) CLR bu noktada devreye girer ve. NET programlarını farklı platformlarda işletim sistemine göre çalıştırır. INTERNET PROGRAMCILIĞI: .NET Mimarisi VB VC++ VC# … JScript Common Language Specification Windows Forms ADO.NET: Data and XML Base Class Library Common Language Runtime Visual Studio.NET ASP.NET: Web Services and Web Forms .NET MİMARİSİ: •ASP.NET Web forms Yönetilebilir Kod (Manageable code (non spaghetti)) Mantıksal örgülü yapısı (Logical evolution of ASP (compiled)) Güçlü web Form yapısı (The power of Web Forms with a demonstration) Web Services İnternetin taşıyıcı gücü olarak adlandırılır. (Programming the Internet to leverage the "power at the edge of the cloud«). ADO.NET, Veritabanı (e.g., DataSets, Datareader) Visual Studio.NET ASP.NET MİMARİSİ: ASP.NET Microsoft tarafından geliştirilen bir teknolojidir. ASP (Active Server Pages) Etkin Sunucu Sayfaları. anlamına gelir. ASP.NET, klasik ASP'den çok daha üstün özelliklere sahiptir. ASP'de oluşturulan dosyaların uzantısı .asp iken, ASP.NET dosyalarının uzantısı .aspx'tir. ASP.NET sayfaları oluşturabilmek için bir programlama dili bilmemiz gerekiyor. Burada Microsoft'un bize sağladığı kolaylık, herhangi bir programlama dilini seçme şansını bize vermesidir. Fakat en çok Visual Basic ve CSharp(C#) dilleri kullanılır. ASP.NET 1.0 versiyonu ile çıktı ve günümüze kadar 1.1, 2.0, 3.5, 4.0 versiyonları yayınlandı. Şu anki en son ASP.NET versiyonu ise 4.5 dur. ASP.NET MİMARİSİ: Gelişmiş web uygulamaları oluşturmak için kullanılır. :NET Framework üzerinde uygulamalar geliştirilmesini sağlar. Nesne tabanlıdır. Dilden bağımsızdır. (.NET destekli diller kullanılabilir.) Yapısında bir çok hazır (class) yapı ve kontrol barındırır. Hızlı ve yüksek performans gerektiren uygulamalar için kullanılırlar. ASP.NET MİMARİSİ: Çalışma modeli olarak istemci ve sunucu çalışma modelini kullanır. İstemci tarafında .aspx sayfalar bulunur .Bu sayfalar HTML ve KOD kısmı olarak 2 bölümden oluşur. HTML kısmında bildiğimiz HTML bileşenleri ve ASP.NET sunucu kontrolleri bulunur. KOD kısmında .NET destekli bir dil ile yazılan ve sunucu tarafı için geliştirilen bölüm yer alır. Kod kısmındaki uzantılar .aspx.cs olur (C# için) Oluşturulan her sayfa bir CLASS dır. ASP.NET MİMARİSİ: İstemciden bir istek geldiğinde IIS bu isteği alır ve aspnet_Isapi.dll dosyasına oradan da .NET Framework aktarır. Bu istek sunucunun belleğinde kaydedilir. İsteğe göre C# kodu çalıştırılır. Ve HTML çıktı olarak tekrar IIS tarafından istemciye gönderilir. IIS Aspnet_Isapi.dll .NET Framework (Common Language Runtime) HTML C#kodu çalıştı ASP.NET MİMARİSİ: ASP dosyalarının çalışması için bilgisayarın C:/ sürücüsüne C://inetpub/wwwroot dizini olması gerekir. Böylece bilgisayarımız Yerel bir sunucu olarak çalışmaktadır. wwwroot dizinine direkt atmak istemiyorsanız bir klasör oluşturulup dosyalarınızı buraya atabilirsiniz. Örnek : klasör ismi: myesilyurt Tarayıcıda çalıştırmak için; http://localhost/myesilyurt yazmak yeterlidir. ÖNEMLİ !!: Eğer veritabanından veri çekilecekse wwwroot klasörüne okuma ve yazma izni vermeniz gerekiyor. Aksi takdirde hata verecektir. İzin vermek için; C://inetpub ve wwwroot klasörüne sağ tıklayıp Güvenlik sekmesinde IUSR kullanıcısına TAM yetki verilir. Sağ tıkladığınızda Güvenlik Sekmesi yok ise İşletim sisteminiz desteklemiyor olabilir ya da, Araçlar > Klasör seçenekleri > Basit dosya paylaşımını kullan seçeneğinin işaretini kaldırınız. ASP.NET MİMARİSİ: ASP.NET sayfalarının görsel kısmı HTML,CSS ve JAVASCRIPT olabilir. Buna ek olarak asp veya asp.net kodları da bu belgeye eklenebilir. ASP.NET sayfaları bildirim satırı ile başlar. Bu bildirim @Page ile başlar. Bu satıra Sayfa Direktifide denir. <%@ Page Title="Home Page" Ana sayfa tarayıcı Başlığı Language="C#" : Kullanılan Programlama dili MasterPageFile="~/Site.Master" : Ana sayfa dosyası AutoEventWireup="true" : varsayılan olaylara method arası bağlantı kur CodeBehind="Default.aspx.cs" Kod sayfası Inherits="WebApplication1._Default" Uygulamamamızın Anasayfası (çalıştırılacak sayfa) %> ASP.NET MİMARİSİ: ASP.NET sayfası ilk oluşturulduğunda runat="server" parametresi yazılıdır. <asp:Content runat="server" > Bu parametre yanlızca form için değil, sunucuda çalışacak tüm kontrolleri için gereklidir. Yani kodların sunucuda çalışmasını sağlar. Bu arada tüm sunucu kontrolleri <asp: ile başlar ardından kontrolün türü ve özellikleri gelir. <asp:Content runat="server" ID="FeaturedContent" ContentPlaceHolderID="FeaturedContent"> http://www.bilimsel.com.tr/04-04-ilk-asp-netprogramim/