<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Fatih Güneş kişisel günlüğü &#187; Martin Fowler</title>
	<atom:link href="http://www.fatihgunes.com/tag/martin-fowler/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.fatihgunes.com</link>
	<description></description>
	<lastBuildDate>Sun, 05 Sep 2010 12:53:35 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Martin Fowler&#8217;dan: Katmanlı Mimarinin Evrimi</title>
		<link>http://www.fatihgunes.com/martin-fowlerdan-katmanli-mimarinin-evrimi/</link>
		<comments>http://www.fatihgunes.com/martin-fowlerdan-katmanli-mimarinin-evrimi/#comments</comments>
		<pubDate>Wed, 02 Dec 2009 23:25:56 +0000</pubDate>
		<dc:creator>Fatih Güneş</dc:creator>
				<category><![CDATA[Teknoloji]]></category>
		<category><![CDATA[Enterprise Application Architecture]]></category>
		<category><![CDATA[Katmanlı Mimari]]></category>
		<category><![CDATA[Martin Fowler]]></category>
		<category><![CDATA[The Evolution of Layers in Enterprise Application]]></category>

		<guid isPermaLink="false">http://www.fatihgunes.com/?p=165</guid>
		<description><![CDATA[Martin Fowler, yazılım dünyasının önde gelen guru&#8217;larından biridir. Geçenlerde bir vesile ile üstadın, &#8220;Enterprise Application Architecture&#8221; adlı eseri elime geçti. Ben, hem Martin Fowler&#8217;ı uzaktan takip eden, hem de Kurumsal Uygulamalara 10 yılını vermiş biri olarak kitaba balıklama daldım tabi. Aşağıda kitapta bulunan ve, genç yazılımcılar için faydalı olabileceğini düşündüğüm, &#8220;The Evolution of Layers in [...]]]></description>
			<content:encoded><![CDATA[<div class="wp-caption alignright" style="width: 215px"><img title="Martin_Fowler_QCon_2007.jpg" src="http://upload.wikimedia.org/wikipedia/commons/7/79/Martin_Fowler_QCon_2007.jpg" alt="Martin_Fowler_QCon_2007.jpg" width="205" height="242" /><p class="wp-caption-text">Martin_Fowler_QCon_2007.jpg</p></div>
<p>Martin Fowler, yazılım dünyasının önde gelen guru&#8217;larından biridir. Geçenlerde bir vesile ile üstadın, &#8220;Enterprise Application Architecture&#8221; adlı eseri elime geçti. Ben, hem Martin Fowler&#8217;ı uzaktan takip eden, hem de Kurumsal Uygulamalara 10 yılını vermiş biri olarak kitaba balıklama daldım tabi. Aşağıda kitapta bulunan ve, genç yazılımcılar için faydalı olabileceğini düşündüğüm, &#8220;The Evolution of Layers in Enterprise Application&#8221; başlıklı kısa bölümü, naçizane kendi yaptığım çevirisi ile sunuyorum. Yazar bu bölümde yıllar içinde evrimleşen, Kurumsal uygulama geliştirme konusuna kısa bir tarihçe sunarken, katmanlı mimariye nasıl ulaşıldığını özetliyor. Bu serüvenin her kilometresinde, yanlış yapa yapa doğruları öğrenen, ben ve benim gibi diğer yazılım dinazorları için de hoş bir panorama olduğunu düşünüyorum.<span id="more-165"></span></p>
<p>KURUMSAL UYGULAMALARDA KATMANLI MİMARİNİN EVRİMİ<br />
Batch sistemlerin erken zamanlarına yetişemeyecek kadar genç olmama rağmen, o zamanlarda insanların katman konusunu önemsediğini sanmıyorum. Bir takım dosyaları (ISAM, VSAM, vb.) yöneten bir program yazarsınız ve bu sizin uygulamanızdır. Katmanlı bir yapı uygulamaya gerek yoktur.<br />
Katman konusu, 90 lı yıllarda istemci-sunucu (client-server) sistemlerin yükselişi ile ortaya çıkmıştır. Bunlar iki katmanlı sistemlerdi: İstemci, kullanıcı arayüzleri ve diğer uygulama kodlarını çalıştırırdı, sunucu da genellikle bir veritabanıydı. Yaygın uygulama geliştirme araçları VB, Powerbuilder ve Delphi idi. Bunlar SQL bağlanabilen arayüz kontrolleri içerdiğinden, veri yoğun uygulama geliştirmeyi oldukça kolaylaştırıyorlardı. Böylece, formlara kontroller sürükleyerek ekranlar oluşturabiliyordunuz ve özellik alanlarını tanımlayarak kontrolleri veritabanına bağlayabiliyordunuz.<br />
Eğer uygulama, genel olarak, ilişkili verileri göstermek ve basit olarak güncellemek ise istemci-sunucu sistemleri iyi iş görüyordu. Problem iş kurallarındaydı: kontroller, hesaplamalar, vs. İnsanlar genellikle bunları istemci tarafında yazarlardı. Fakat bu kötü kodlamaydı ve iş mantığını ekranlara gömmeyi gerektiriyordu. İş kuralları komplike oldukça, bu kod ile çalışmak çok zorlaşıyordu. Dahası, iş mantığını ekranlara gömmek, kodun çoklanmasına sebep oluyordu. Bu da basit değişiklikler için tüm ekranları taramayı gerektiriyordu.<br />
Bir alternatif de iş mantığını, veritabanında sp (stored procedure) lere gömmekti. Ancak sp ler kısıtlı programlama imkanı sunuyordu, bu da yine kötü koda yol açıyordu. Ayrıca, birçok insan, SQL i, gerektiğinde veritabanını değiştirmeye olanak sağlayabilen bir standart olduğu için tercih ediyordu. Gerçekte çok az insanın bunu yapmasına rağmen, birçok insan yüksek taşıma maliyetine katlanmaksızın veritabanı bağımsızlığına sahip olmayı seviyordu.<br />
İstemci-sunucu sistemlerin popülerleştiği sırada, nesne yönelimli (object-oriented) yaklaşım da revaçtaydı. Nesnecilerin iş kuralları problemine verecek bir cevabı vardı: Üç katmanlı bir sistem. Bu yaklaşıma göre; kullanıcı arayüzlerinin bulunduğu bir sunum katmanı, iş kurallarının bulunduğu bir iş katmanı, ve bir veri katmanı vardır. Bu şekilde, girift iş kurallarını arayüzden çıkartıp ayrı bir katmana koyabilirdiniz ve nesneler kullanarak bu katmanı yapılandırabilirdiniz.<br />
Buna karşın, nesne taraftarları bir miktar ileri gitmişti. Gerçekte birçok sistem oldukça sadeydi, ya da en azından öyle başlıyordu. Üç katmanlı yaklaşımın birçok avantajı olmasına rağmen, eğer probleminiz basit ise, istemci-sunucu geliştirme araçları daha cazipti. İstemci-sunucu araçlarını, üç katmanlı mimaride kullanmak ise çok zordu, hatta imkansızdı.<br />
Bence, burada sismik şok, Web&#8217;in yükselişi ile geldi. İnsanlar birden, istemci-sunucu uygulamalarını web browser ile kullanmak istediler. Ancak, eğer tüm iş kurallarınız bir istemciye gömülü ise, bu kuralların tamamının bir web arayüzünde tekrar kodlanması gerekir. İyi tasarlanmış bir üç katmanlı uygulamada ise, sadece yeni bir sunum katmanı eklemek işi çözecektir. Dahası, Java ile gördük ki, tam tekmil bir nesne tabanlı geliştirme dili ana yola yerleşmişti bile. Web sayfaları geliştirmek için gerekli araçlar, SQL e daha az bağımlı, üçüncü katmana bağlanmaya daha uygundular.<br />
İnsanlar katman konunu konuştuklarında, genellikle katmanlı mimari ve katlı mimari terimleri üzerinde bir karışıklık olur. İki terim sık olarak eşanlamlı gibi kullanılsa bile, birçok insan kat kavramını fiziksel bir ayrılma ile eşleştirir. İstemci-sunucu sistemleri iki katlı sistemler olarak tanımlanır ve ayrışma fizikseldir: İstemci bir masaüstü bilgisayardır ve sunucu da bir sunucudur. Benim katman kelimesini kullanmam, ayrı katmanları ayrı makinelerde çalıştırmak zorunda olmadığımızı vurgulamak içindir. Ayrıştırılmış bir iş katmanı, istemcide veya sunucuda çalışabilir. Bu durumda iki noktanız ancak üç katmanınız vardır. Yerel bir veritabanı ile, üç katmanı da aynı dizüstü bilgisayarda çalıştırabilirim, ancak yine de üç katmanlı bir yapı vardır.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fatihgunes.com/martin-fowlerdan-katmanli-mimarinin-evrimi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
