<?xml version="1.0" encoding="windows-1254"?>
<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>Arda Çetinkaya</title>
	<atom:link href="http://www.minepla.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.minepla.net</link>
	<description></description>
	<lastBuildDate>Sat, 06 Mar 2010 21:38:58 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>&#8220;MEF&#8221; ile esneklik kazanıyoruz&#8230;</title>
		<link>http://www.minepla.net/2010/03/mef-ile-esneklik-kazaniyoruz/</link>
		<comments>http://www.minepla.net/2010/03/mef-ile-esneklik-kazaniyoruz/#comments</comments>
		<pubDate>Sat, 06 Mar 2010 21:37:16 +0000</pubDate>
		<dc:creator>Arda</dc:creator>
				<category><![CDATA[Minepla.Net]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[MEF]]></category>

		<guid isPermaLink="false">http://www.minepla.net/?p=983</guid>
		<description><![CDATA[2008’de Microsoft “MEF” yani Managed Extensibility Framework isimli yeni bir framework üzerinde çalıştığını açıklamıştı.  Basitçe, biz geliştiricilere, “plug-in” yapısını destekleyen uygulamalar geliştirmemiz için yöntemler sunan bir framework diyebiliriz “MEF” için.
.NET Framework 4.0’a kadar, Microsoft, .NET’in içine koymuyor, “preview” adı altında sürekli geliştirmeler yapıyordu. .NET 4.0 ile beraber artık “MEF”i gönül rahatlığı ile kullanabiliyor olacağız.
Bu kısa [...]]]></description>
			<content:encoded><![CDATA[<p>2008’de Microsoft “MEF” yani Managed Extensibility Framework isimli yeni bir framework üzerinde çalıştığını açıklamıştı.  Basitçe, biz geliştiricilere, “plug-in” yapısını destekleyen uygulamalar geliştirmemiz için yöntemler sunan bir framework diyebiliriz “MEF” için.</p>
<p>.NET Framework 4.0’a kadar, Microsoft, .NET’in içine koymuyor, “preview” adı altında sürekli geliştirmeler yapıyordu. .NET 4.0 ile beraber artık “MEF”i gönül rahatlığı ile kullanabiliyor olacağız.</p>
<p>Bu kısa girişten sonra, biraz daha derinlere inelim ve “MEF”in bize neler sağladığına ve neden kullanmamız gerektiğine bakalım. Öncelike “MEF” gibi bir framework’e neden ihtiyacımız var bunu anlamamız lazım. Tekrar kullanılabilirlik(Reusability) ve esneklik(extensibility), bir yazılımın yaşam sürecinde mutlaka bir şekilde karşımıza çıkan iki kavram. Geliştirdiğimiz yazılımlar çeşitli ihtiyaçlardan dolayı, ek özellikler ile genişletilmek istenebilir. Ya da geliştirdiğimiz yazılımı başka bir konfigürasyon ya da modüller ile başka bir şekilde kullanmamız da gerekebilir. Bu iki kavramı yazılımlara uygulamak oldukça zor ve sıkıntılıdır. Hele ki mimari tasarım sırasında bu iki kavramı göz ardı ettiysek sıkıntı çok daha büyük olur. Tabi ki bir yazılım illa ki esnek ya da tekrar kullanılabilir özelliğinin olması gerekmiyor. Ancak kişisel görüşüm, yazılımın yaşam süresinin uzun olabilmesi için bu iki kavramı karşılayabiliyor olması gerekmekte.</p>
<p>Esneklik ve tekrar kullanılabilirlik özelliklerine sahip bir yazılım ihtiyacı çok iyi bir tasarım gerektirir. Tasarımdan sonra ki geliştirme sürecini de bu iki kavram oldukça zorlar. Bu noktada “MEF”, .NET ile uygulama geliştirenlere bu süreci biraz daha kolaylaştırmak için elinden geleni yapıyor diyebilirim.</p>
<p>Bir PC’yi düşünelim&#8230;Anakartı ve bu kartın üzerine takılabilen ek kartlar ile çalışabilir bir sistem&#8230;X ekran kartı ile oynayamadığımız oyunları, X ekran kartını çıkartıp, Y ekran kartını takarak oynayabiliyoruz.Bunu ekran kartlarının, anakart ile belli bir arayüz standartı ile iletişim kurabilmesinden dolayı yapabiliyoruz.</p>
<p>“MEF” ile de bu tarz,“plug-in” yaklaşımı olan uygulamalar geliştirebiliyoruz. Run-time&#8217;da çıkarılıp, takılabilen &#8220;plug-in&#8221;ler ile uygulamalarımızı genişletebiliyoruz. Ve bütün bunlar System.ComponentModel.Composition.dll altında bulunan metod ve arayüzler sayesinde&#8230;</p>
<p>Kod üzerinden gidip ilk “MEF” uygulamamızı yaparsak sanırım bazı şeyler daha anlaşılır olur.Az önce yukarıda bahsetmiş olduğum PC örneği üzerinden gidiyor olacağım. Öncelikle aşağıdaki gibi 3 tane proje yaratıyoruz. Bunlardan biri ana uygulamamız(CustomPC,konsol uygulaması), biri arayüzümüz(DisplayAdapter) ve diğeri de ana kartımız(Xvidia). (:</p>
<p>Bu aşamada CustomPC ve XVidia projelerine System.ComponentModel.Composition.dll&#8217;i referans olarak eklememiz gerekmekte.</p>
<p style="text-align: center;"><a href="http://www.minepla.net/wp-content/uploads/Solution.jpg"><img class="size-full wp-image-984 aligncenter" title="Solution" src="http://www.minepla.net/wp-content/uploads/Solution.jpg" alt="" width="246" height="322" /></a></p>
<p style="text-align: left;">Öncelikle ana uygulamamız ve ekran kartımızın iletişim kuracağı arayüzümüzü oluşturalım. DisplayAdapter projesinde IDisplay.cs isimli aşağıdaki kodu içeren bir dosya yaratıyoruz;</p>
<p style="text-align: left;">
<div style="font-family: Courier New; font-size: 10pt; color: black; background: white;">
<p style="margin: 0px;"><span style="color: #2b91af;"> 46</span> <span style="color: blue;">using</span> System;</p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 47</span> <span style="color: blue;">using</span> System.Collections.Generic;</p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 48</span> <span style="color: blue;">using</span> System.Linq;</p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 49</span> <span style="color: blue;">using</span> System.Text;</p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 50</span></p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 51</span> <span style="color: blue;">namespace</span> DisplayAdapter</p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 52</span> {</p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 53</span> <span style="color: blue;">public</span> <span style="color: blue;">interface</span> <span style="color: #2b91af;">IDisplayAdapter</span></p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 54</span> {</p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 55</span> <span style="color: blue;">void</span> Display();</p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 56</span> }</p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 57</span> }</p>
</div>
<p>Bu arayüz sayesinde ana uygulamamız, &#8220;plug-in&#8221; olarak geliştirdiğimiz diğer bileşenleri çalıştırabiliyor olacak. Bundan sonra bu arayüzden yaratılan &#8220;plug-in&#8221;i geliştirebiliriz. Bir bakıma &#8220;ekran kartı&#8221;nı&#8230;(:</p>
<p>Bunun içinde XVidia projesinde aşağıdaki kodu yazmamız gerekmekte;</p>
<div style="font-family: Courier New; font-size: 10pt; color: black; background: white;">
<p style="margin: 0px;"><span style="color: #2b91af;"> 58</span> <span style="color: blue;">using</span> System;</p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 59</span> <span style="color: blue;">using</span> System.Collections.Generic;</p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 60</span> <span style="color: blue;">using</span> System.Linq;</p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 61</span> <span style="color: blue;">using</span> System.Text;</p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 62</span> <span style="color: blue;">using</span> System.ComponentModel.Composition;</p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 63</span></p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 64</span> <span style="color: blue;">namespace</span> DisplayAdapter</p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 65</span> {</p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 66</span> [Export(<span style="color: #a31515;">""</span>,<span style="color: blue;">typeof</span>(<span style="color: #2b91af;">IDisplayAdapter</span>))]</p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 67</span> <span style="color: blue;">public</span> <span style="color: blue;">class</span> <span style="color: #2b91af;">XVidia</span> :  <span style="color: #2b91af;">IDisplayAdapter</span></p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 68</span> {</p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 69</span></p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 70</span> <span style="color: blue;">public</span> <span style="color: blue;">void</span> Display()</p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 71</span> {</p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 72</span> <span style="color: #2b91af;">Console</span>.WriteLine(<span style="color: #a31515;">&#8220;This is XVidia Display Adapter&#8221;</span>);</p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 73</span> }</p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 74</span> }</p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 75</span> }</p>
</div>
<p>Bu noktada &#8220;Export&#8221; özelliği dikkatimizi çekmiş olmalı. &#8220;MEF&#8221;&#8216;de &#8220;Composable Parts&#8221; diye adlandırılan ve &#8220;MEF&#8221;in temel taşı olan bir kavram var. &#8220;Composable Parts&#8221; belli servisleri(metod) dışa sunan ve belli servisleride(metod) kullanan birimler. Ana uygulamalar ve &#8220;plug-in&#8221;ler bu birimlere göre çalışmakta. Yukarıdaki kod bloğunda &#8220;Export&#8221; özelliğini kullarak, XVidia sınıfını &#8220;IDisplayAdapter&#8221; arayüzünün metodlarını dışa sunduğunu göstermiş olduk.</p>
<p>Şimdi sıra &#8220;plug-in&#8221;leri çalıştıracak ana uygulamamıza geldi. Bunun için CustomPC projesinde aşağıdaki kodu içeren bir dosya yaratmamız yeterli.</p>
<div style="font-family: Courier New; font-size: 10pt; color: black; background: white;">
<p style="margin: 0px;"><span style="color: #2b91af;"> 82</span> <span style="color: blue;">using</span> System;</p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 83</span> <span style="color: blue;">using</span> System.Collections.Generic;</p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 84</span> <span style="color: blue;">using</span> System.Linq;</p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 85</span> <span style="color: blue;">using</span> System.Text;</p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 86</span> <span style="color: blue;">using</span> System.ComponentModel.Composition.Hosting;</p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 87</span> <span style="color: blue;">using</span> System.Reflection;</p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 88</span> <span style="color: blue;">using</span> DisplayAdapter;</p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 89</span> <span style="color: blue;">using</span> System.ComponentModel.Composition;</p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 90</span></p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 91</span> <span style="color: blue;">namespace</span> CustomPC</p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 92</span> {</p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 93</span> <span style="color: blue;">public</span> <span style="color: blue;">class</span> <span style="color: #2b91af;">Computer</span></p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 94</span> {</p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 95</span> <span style="color: green;">//Hangi arayüzün &#8220;MEF&#8221; tarafından import </span></p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 96</span> <span style="color: green;">//edileceğini belirtiyoruz.</span></p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 97</span> [Import(<span style="color: blue;">typeof</span>(<span style="color: #2b91af;">IDisplayAdapter</span>))]</p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 98</span> <span style="color: blue;">public</span> <span style="color: #2b91af;">IDisplayAdapter</span> DisplayAdapter { <span style="color: blue;">get</span>; <span style="color: blue;">set</span>; }</p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 99</span></p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 100</span> <span style="color: blue;">static</span> <span style="color: blue;">void</span> Main(<span style="color: blue;">string</span>[] args)</p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 101</span> {</p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 102</span> <span style="color: #2b91af;">Console</span>.WriteLine(<span style="color: #a31515;">&#8220;PC&#8217;s configuration&#8221;</span>);</p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 103</span> <span style="color: #2b91af;">Computer</span> comp = <span style="color: blue;">new</span> <span style="color: #2b91af;">Computer</span>();</p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 104</span> comp.Init();</p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 105</span></p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 106</span> <span style="color: #2b91af;">Console</span>.ReadLine();</p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 107</span> }</p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 108</span></p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 109</span> <span style="color: blue;">public</span> <span style="color: blue;">void</span> Init()</p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 110</span> {</p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 111</span> <span style="color: blue;">try</span></p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 112</span> {</p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 113</span> <span style="color: green;">/*</span></p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 114</span> <span style="color: green;"> * Plug-in&#8217;lerin olduğu yeri belirtmek için &#8220;MEF&#8221; </span></p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 115</span> <span style="color: green;"> * ile gelen katalog kavramından faydalanıyoruz.</span></p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 116</span> <span style="color: green;"> * İlerleyen yazılarda bu katalog kavramının </span></p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 117</span> <span style="color: green;"> * derinlerine dalıyor olacağım.Şimdilik &#8220;plug-in&#8221;lerin </span></p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 118</span> <span style="color: green;"> * bir dizinden okunacağını belirtmek için </span></p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 119</span> <span style="color: green;"> * DirectoryCatalog sınıfı kullanıyoruz.</span></p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 120</span> <span style="color: green;"> */</span></p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 121</span> DirectoryCatalog dirCat = <span style="color: blue;">new</span> DirectoryCatalog(<span style="color: #2b91af;">Environment</span>.CurrentDirectory + <span style="color: #a31515;">&#8220;\\plugin\\&#8221;</span>);</p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 122</span> <span style="color: green;">/*</span></p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 123</span> <span style="color: green;"> * &#8220;MEF&#8221; ile beraber gelen &#8220;CompositionBatch&#8221; ve </span></p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 124</span> <span style="color: green;"> * &#8220;CompositionContainer&#8221; sınıfı ile &#8220;is a part of&#8221; </span></p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 125</span> <span style="color: green;"> * ilişkisini kurabileceğimiz yapıyı yaratıyoruz. </span></p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 126</span> <span style="color: green;"> * &#8220;is a part of&#8221; ilişkisi derken ne demek istediğimi </span></p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 127</span> <span style="color: green;"> * açıklamamda fayda var sanırım.&#8221;plug-in&#8221;&#8216;ler ana </span></p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 128</span> <span style="color: green;"> * uygulamamızın bir parçası olacak.Ve bu parçalar </span></p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 129</span> <span style="color: green;"> * takıp,çıkarılabilir özelliklere sahip olacak. </span></p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 130</span> <span style="color: green;"> * Bütün bu ilişkiler &#8220;MEF&#8221; tarafından yönetiliyor olacak.</span></p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 131</span> <span style="color: green;"> * &#8220;CompositionBatch&#8221; parçaların(Composable Parts) </span></p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 132</span> <span style="color: green;"> * tutulduğu,&#8221;CompositionContainer&#8221; ise </span></p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 133</span> <span style="color: green;"> * parçaların(Composable Parts)&#8217;ın metodlarının ve </span></p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 134</span> <span style="color: green;"> * özelliklerinin sunulmasını sağlayan yapı olarak </span></p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 135</span> <span style="color: green;"> * tanımlanabilir.</span></p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 136</span> <span style="color: green;"> */</span></p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 137</span> CompositionBatch batch = <span style="color: blue;">new</span> CompositionBatch();</p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 138</span> CompositionContainer container = <span style="color: blue;">new</span> CompositionContainer(dirCat);</p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 139</span></p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 140</span> <span style="color: green;">//Parçalarımızı ekliyoruz</span></p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 141</span> batch.AddPart(<span style="color: blue;">this</span>);</p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 142</span></p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 143</span> <span style="color: green;">//Parçalarımızı ana uygulama ve birbirleri ile </span></p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 144</span> <span style="color: green;">//ilişkilendiriyoruz</span></p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 145</span> container.Compose(batch);</p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 146</span></p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 147</span> <span style="color: green;">//Parçalarımızı çalıştırıyoruz.Bu noktada </span></p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 148</span> <span style="color: green;">//arayüzün(IDisplayAdapter) sunduğu</span></p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 149</span> <span style="color: green;">//metodları sunabiliyoruz sadece.</span></p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 150</span> DisplayAdapter.Display();</p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 151</span> }</p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 152</span> <span style="color: blue;">catch</span> (<span style="color: #2b91af;">Exception</span>)</p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 153</span> {</p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 154</span></p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 155</span> <span style="color: blue;">throw</span>;</p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 156</span> }</p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 157</span></p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 158</span></p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 159</span> }</p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 160</span></p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 161</span></p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 162</span> }</p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 163</span></p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 164</span></p>
<p style="margin: 0px;"><span style="color: #2b91af;"> 165</span> }</p>
</div>
<p>Ve işte bu kadar&#8230;Hemen özetliyelim ne yaptık. Bir tane &#8220;plug-in&#8221; desteği olan ana uygulama yaptık(CustomPC) ve bu ana uygulama üstünde çalışacak bir tane &#8220;plug-in&#8221; yaptık. Yaptığımız &#8220;plug-in&#8221; benzeri başka &#8220;plug-in&#8221;ler yaparak, uygulamamızı çeşitlendirebiliriz. Mesela XTI diye yeni bir ekran kartı, pardon &#8220;plug-in&#8221;&#8230;.(:</p>
<p>Yukarıdaki CustomPC projesini çalıştırdığımız zaman hata alıyor olacağız. Peki ama neden? Bunun nedeni &#8220;XVidia&#8221; projesinin çıktısı olan *.Dll&#8217;in ana uygulama tarafına yüklenmemiş olması. CustomPC projesinin dizininde, &#8220;debug&#8221; klasörü altında &#8220;plugin&#8221; diye bir klasör açıp, &#8220;XVidia&#8221; projesinin çıktısı olan *.Dll&#8217;i kopyaladığımız zaman uygulamamızın sorunsuz bir şekilde çalıştığını göreceğiz.</p>
<p>&#8220;XVidia&#8221; projesinin çıktısı olan *.Dll yerine, benzer bir yapı ile oluşturulmuş bir *.Dll koyduğumuz zaman uygulamanın o *.Dll&#8217;i çalıştıracağını görüyor olacağız.</p>
<p>Çok basit ve güzel değil mi&#8230; .NET 4.0&#8242;ın bence en güzel yeniliği &#8220;MEF&#8221; ile entegre olması&#8230;İlerleyen yazılarda &#8220;MEF&#8221;in çok daha derinlerine dalıyor olacağım&#8230;Şimdilik bu kadar&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.minepla.net/2010/03/mef-ile-esneklik-kazaniyoruz/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sonishpere sonunda açıklandı&#8230;</title>
		<link>http://www.minepla.net/2010/03/sonishpere-sonunda-acyklandy/</link>
		<comments>http://www.minepla.net/2010/03/sonishpere-sonunda-acyklandy/#comments</comments>
		<pubDate>Fri, 05 Mar 2010 11:10:19 +0000</pubDate>
		<dc:creator>Arda</dc:creator>
				<category><![CDATA[Minepla.Net]]></category>
		<category><![CDATA[Music]]></category>

		<guid isPermaLink="false">http://www.minepla.net/?p=980</guid>
		<description><![CDATA[Uzun zamandır beklenen açıklama dün yapıldı ve Sonisphere&#8217;in Türkiye ayağı resmi olarak açıklandı.Biletlerde satışa çıktı&#8230;Hemen almak lazım, kesin biter&#8230;

Ayrıntılar: http://tr.sonispherefestivals.com/
Biletler: http://www.biletix.com 
]]></description>
			<content:encoded><![CDATA[<p>Uzun zamandır beklenen açıklama dün yapıldı ve Sonisphere&#8217;in Türkiye ayağı resmi olarak açıklandı.Biletlerde satışa çıktı&#8230;Hemen almak lazım, kesin biter&#8230;</p>
<p><img class="alignnone" title="Sonisphere Turkey" src="http://tr.sonispherefestivals.com/wp-content/uploads/2010/03/Soni-tk-wkd-black.jpg" alt="" width="550" height="785" /></p>
<p>Ayrıntılar: <a href="http://tr.sonispherefestivals.com/">http://tr.sonispherefestivals.com/</a></p>
<p>Biletler: <a href="http://www.biletix.com " target="_blank">http://www.biletix.com </a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.minepla.net/2010/03/sonishpere-sonunda-acyklandy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TechEd ME,Dubai 2010&#8242;a gittim, geleceÄŸim&#8230;</title>
		<link>http://www.minepla.net/2010/03/teched-medubai-2010a-gittim-gelecedhim/</link>
		<comments>http://www.minepla.net/2010/03/teched-medubai-2010a-gittim-gelecedhim/#comments</comments>
		<pubDate>Tue, 02 Mar 2010 18:33:31 +0000</pubDate>
		<dc:creator>Arda</dc:creator>
				<category><![CDATA[Minepla.Net]]></category>
		<category><![CDATA[Dubai]]></category>
		<category><![CDATA[Microsoft]]></category>
		<category><![CDATA[Tech.Ed]]></category>

		<guid isPermaLink="false">http://www.minepla.net/?p=975</guid>
		<description><![CDATA[Bu sene TechEd, ilk defa ortadoğu bölgesinde, Dubai&#8217;de yapılıyor&#8230;Yapılıyor diyorum,çünkü daha bitmedi&#8230;Yarın son gün&#8230;Dubai ile olan yakın ilişkilerimden(:)) dolayı bu sene bende TechEd furyasına Dubai&#8217;de başlangıç yaptım. 2 günü bitirdim&#8230;1 gün daha olmasına rağmen şimdiden açıkcası oldukça tatmin oldum. Önceki TechEd&#8217;e katılan kişiler ile konuştuğumda diğer TechEd&#8217;lere nazaran daha sönük geçtiğini öğrenmiş olsamda, dediğim gibi [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.minepla.net/wp-content/uploads/teched2010.jpg"><img class="alignleft size-full wp-image-976" title="teched2010" src="http://www.minepla.net/wp-content/uploads/teched2010.jpg" alt="" width="240" height="320" /></a>Bu sene TechEd, ilk defa ortadoğu bölgesinde, Dubai&#8217;de yapılıyor&#8230;Yapılıyor diyorum,çünkü daha bitmedi&#8230;Yarın son gün&#8230;Dubai ile olan yakın ilişkilerimden(:)) dolayı bu sene bende TechEd furyasına Dubai&#8217;de başlangıç yaptım. 2 günü bitirdim&#8230;1 gün daha olmasına rağmen şimdiden açıkcası oldukça tatmin oldum. Önceki TechEd&#8217;e katılan kişiler ile konuştuğumda diğer TechEd&#8217;lere nazaran daha sönük geçtiğini öğrenmiş olsamda, dediğim gibi hem oturumlar hemde organizasyon açısından beni tatmin etti. Türkiye&#8217;den tanıdık bir sürü yüz görmüş olmam da ayrı bir güzellik kattı benim açımdan&#8230;</p>
<p>Oturumlardan tek tek bahsetmeyi planlamıyorum ama genel olarak Microsoft&#8217;un çoğu ürünü ile ilgili oturumlar olduğunu söyleyebilirim. Teknik olarak çok daha güçlü bir içerik bekliyor olsamda, şu zamana kadar ki oturumlardan oldukça memnun kaldım. Bildiğim konuları pekiştirdim, bilmediğim konuları öğrendim ve öğrenmeyi öğrendim&#8230;&#8221;Öğrenmeyi&#8221; öğrendim diyorum çünkü bu tarz etkinliklerden açıkcası ilk olarak bunu bekliyorum. Konularda uzman kişiler tarafından doğru bir şekilde 1 saat boyunca yönlendiriliyor olmak bence en doğrusu&#8230;Yani sonuçta oturumlarda anlatılan konuların hiç birini bu kadar kısıtlı zamanda yalayıp yutmak imkansız&#8230;</p>
<p>S.Hanselman gibi(:)), Microsoft bünyesinde konularında uzman olan kişiler ile tanışmış olmak, sorularınıza cevap almak ise bu tarz etkinliklerin sanırım diğer bir güzel yanı. Problemlerinizi, düşüncelerinizi böyle bir ortamda paylaşabiliyor olmak zaten sanırım etkinliğin dayandığı temellerden biri&#8230;<a href="http://www.minepla.net/wp-content/uploads/meandscott.jpg"><img class="alignright size-full wp-image-977" title="Talking about MEF with Scott Hanselman" src="http://www.minepla.net/wp-content/uploads/meandscott.jpg" alt="" width="240" height="320" /></a></p>
<p>Türkiye&#8217;den de katılım oldukça fazlaydı.Sanırım yaklaşık 50 kişi gelmiş&#8230;İsimlerini ne yazık ki hatırlayamadığım bir çok kişi ile tanıştım ve bilgi paylaşımında bulundum, mutlu oldum&#8230;Ama açıkcası konuşmacı olarak Türkiye&#8217;den de daha fazla isim görmek isterdim.(Konuşmacı olarak sadece Daron Yöndem vardı)</p>
<p>Son olarak imkanı olan herkesin ileride mutlaka bu tarz etkinliklere katılıyor olmasını tavsiye ederim. Özellikle uluslararası düzeyde olanlara şiddetle tavsiye ederim&#8230;Neyse bu şimdilik bu kadar, ilerleyen zaman içerisinde TechEd Dubai ile ilgili başka şeyler daha yazıyor olacağım&#8230; Yani umarım&#8230;(:</p>
]]></content:encoded>
			<wfw:commentRss>http://www.minepla.net/2010/03/teched-medubai-2010a-gittim-gelecedhim/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Internet Explorer 8 Accelerator for Last.Fm</title>
		<link>http://www.minepla.net/2010/02/internet-explorer-8-accelerator-for-last-fm/</link>
		<comments>http://www.minepla.net/2010/02/internet-explorer-8-accelerator-for-last-fm/#comments</comments>
		<pubDate>Tue, 16 Feb 2010 21:12:58 +0000</pubDate>
		<dc:creator>Arda</dc:creator>
				<category><![CDATA[Minepla.Net]]></category>
		<category><![CDATA[Internet Explorer]]></category>

		<guid isPermaLink="false">http://www.minepla.net/?p=970</guid>
		<description><![CDATA[When IE 8 had released, I have developed an accelerator for Internex Explorer. The accelerator provides some kind of link between the selected context in a web page and Last.fm. I have developed it a little bit with preview windows support and some nice features coming from Last.Fm API. So if you ask &#8220;what is [...]]]></description>
			<content:encoded><![CDATA[<p>When IE 8 had released, I have developed an accelerator for Internex Explorer. The accelerator provides some kind of link between the selected context in a web page and Last.fm. I have developed it a little bit with preview windows support and some nice features coming from Last.Fm API. So if you ask &#8220;what is the accelerator doing now?&#8221;, just check the below image.</p>
<p><a href="http://www.minepla.net/wp-content/uploads/findonlastfm.jpg"><img class="alignnone size-full wp-image-971" title="findonlastfm" src="http://www.minepla.net/wp-content/uploads/findonlastfm.jpg" alt="" width="465" height="410" /></a></p>
<p>If you want to try it, just download it from <a href="http://www.ieaddons.com/en/details/other/Find_on_Lastfm/">http://www.ieaddons.com/en/details/other/Find_on_Lastfm/</a></p>
<p>And please feel free to send your feedbacks to me&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.minepla.net/2010/02/internet-explorer-8-accelerator-for-last-fm/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>İnşaatta hazır beton kullanıyoruz,yazılımda da kum&#8230;</title>
		<link>http://www.minepla.net/2010/02/insaatta-hazir-beton-kullaniyoruz-yazilimda-da-kum/</link>
		<comments>http://www.minepla.net/2010/02/insaatta-hazir-beton-kullaniyoruz-yazilimda-da-kum/#comments</comments>
		<pubDate>Tue, 16 Feb 2010 20:45:47 +0000</pubDate>
		<dc:creator>Arda</dc:creator>
				<category><![CDATA[Minepla.Net]]></category>
		<category><![CDATA[Architecture]]></category>

		<guid isPermaLink="false">http://www.minepla.net/?p=965</guid>
		<description><![CDATA[Bir çok yerde “Architecture and Design Patterns”(Mimari ve Tasarım Kalıpları) başlığına benzer başlıklar altında çeşitli yazılar okuyoruz. Ve çoğunun içeriği Gof(gang of four)’un ön ayak olduğu tasarım kalıpları ile ilgili&#8230;İyi,güzel ama peki bunların “mimari” kelimesi ile alakası ne&#8230;Direkt olarak pek yok&#8230;Evet, gerçekten pek yok&#8230;
Belki benden tecrübeli meslektaşlarım biraz kızacak ve hatta ne saçmalıyorsun falan diyecektir. [...]]]></description>
			<content:encoded><![CDATA[<p>Bir çok yerde “Architecture and Design Patterns”(Mimari ve Tasarım Kalıpları) başlığına benzer başlıklar altında çeşitli yazılar okuyoruz. Ve çoğunun içeriği Gof(gang of four)’un ön ayak olduğu tasarım kalıpları ile ilgili&#8230;İyi,güzel ama peki bunların “mimari” kelimesi ile alakası ne&#8230;Direkt olarak pek yok&#8230;Evet, gerçekten pek yok&#8230;</p>
<p>Belki benden tecrübeli meslektaşlarım biraz kızacak ve hatta ne saçmalıyorsun falan diyecektir. Ama açıkcası “Design Patterns”(Tasarım kalıplarının) direk olarak mimari yaklaşımlar ile alakalı olduğunu düşünmüyorum, aslında düşünmediğim gibi, kendi tecrübelerimden,okuduklarımdan, öğrendiklerimden görüyorum da&#8230;</p>
<p><a href="http://www.minepla.net/wp-content/uploads/concrete.jpg"><img class="size-full wp-image-966 alignleft" title="concrete" src="http://www.minepla.net/wp-content/uploads/concrete.jpg" alt="" width="224" height="195" /></a>“Design Patterns”(Tasarım kalıpları) hakkında internette bir çok kaynak var. Çoğunda belli kod parçacıkları ile örnekler ile ne amaçla kullanacağımızı falan anlatılıyor.Süper, mükemmel&#8230;Ama erken&#8230;Daha kod yazmaya başlamadık ki&#8230;</p>
<p>Madem böyle kalıp falan başladık bahsetmeye, bu yazının amaçı olan “Architecture Patterns(Sytles)”’e(Mimari Kalıplara) geçelim.Çeşitli kaynaklarda mimari sitiller, bazılarında da mimari kalıplar şeklinde geçer, ama yazılımcıların bakış açısından daha kolay anlaşılacağını düşündüğüm için bende kalıp olarak kullanacağım. Önceki yazılarda da bahsettiğim ihtiyaçlar doğrultusunda şekillenecek(şekillenmesi gereken) mimarimizi, belli tecrübelerden, teknolojik açılardan ve belli limitlerden dolayı belli kalıplar dahilinde şekillendirmemiz bize yardımcı olabilir. Kurabiye yaparken kullanılan kalıplar ya da kumdan kaleler yaparken kullandığımız kovalar gibi&#8230;</p>
<p>Bu bağlamda, ne olduklarının çok farkında olmadığımız ama sık sık kullandığımız kavramlar ortaya çıkıyor. Mimari kalıplar&#8230;</p>
<p><a href="http://www.minepla.net/wp-content/uploads/Concrete1.jpg"><img class="alignright size-full wp-image-967" title="Concrete1" src="http://www.minepla.net/wp-content/uploads/Concrete1.jpg" alt="" width="210" height="223" /></a>Mimari kalıplar, geliştireceğimiz sistemlerin ya da yazılımların ihtiyaçlarımız doğrultusunda çok daha etkili çalışabilmesini sağlayacak  ve mimarimizi geliştirirken bize yol gösterecek kalıplardır. Çok daha iyi anlaşılması adına aşağıdaki gibi bir liste yaparsam daha iyi olur sanırım.</p>
<ul>
<li> Bileşen tabanlı mimari</li>
<li> Katmanlı mimari</li>
<li> P2P mimari</li>
<li> UI tabalı mimari</li>
<li> Mesaj bazlı mimari</li>
<li> Servis tabanlı mimari</li>
<li> Event tabanlı mimari</li>
</ul>
<p>Yukarıda bazı popüler mimari kalıplardan örnekler var. Daha çeşitlenebilir tabi ki. Bunları tek tek şuan için açıklamayı düşünmüyorum. Bu noktada mimari kalıpların neden önemli olduğunu anlatmak istiyorum. Mimari kalıplar, ihtiyaçlarımızı daha net bir şekilde karşılamamızda bize yol gösterir. Ayrıca ihtiyaçlarımızı karşılarken, hangi yöntemleri kullanabiliriz bunları sunar. Bu kalıpları ayrı ayrı düşünüyor olmak biraz hatalı olabilir. Direk olarak kesiştirmek de hatalı olur. Mimari tasarımı yaparken, ihtiyaçlarımızı bu kalıplar doğrultusunda çerçeveleyip tasarımımızı yapmak çok daha sağlıklı sonuçlar getirecektir. Ayrıca bu kalıpların kendi içlerindeki kanıtlanmış yöntemler, sizi bir çok şeyden kurtarıyor da olacaktır.</p>
<p>Son olarak tekrardan “Design Patterns”-tasarım kalıplarının, mimari tasarımla direk alakası olmadığını söylemek istiyorum. Bu karıştırmadan dolayı kavramların da karıştığını görüyorum. İlerleyen yazılarda yine bu konulardan bahsediyor olacağım&#8230;Şimdilik bu kadar&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.minepla.net/2010/02/insaatta-hazir-beton-kullaniyoruz-yazilimda-da-kum/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>İnşaat mı tasarlarız, yoksa mimarisini mi&#8230;</title>
		<link>http://www.minepla.net/2010/02/insaat-mi-tasarlariz-yoksa-mimarisini-mi/</link>
		<comments>http://www.minepla.net/2010/02/insaat-mi-tasarlariz-yoksa-mimarisini-mi/#comments</comments>
		<pubDate>Sat, 13 Feb 2010 18:05:54 +0000</pubDate>
		<dc:creator>Arda</dc:creator>
				<category><![CDATA[Minepla.Net]]></category>
		<category><![CDATA[Architecture]]></category>

		<guid isPermaLink="false">http://www.minepla.net/?p=961</guid>
		<description><![CDATA[“Yazılım mı tasarlarız, yoksa yazılım mimarisini mi?” şeklinde yukarıdaki soruyu geliştirdiğimiz yazılımlar için de sorabiliriz. Hem yazılımın kendini, hem de yazılım mimarisini  tasarlamayı aynı kelime ile tanımladığımız için bu kavramlarda karışıyor. “Tasarım”&#8230;
“Software Design” ve “Software Architecture Design” iki farklı kavram aslında. Bu iki kavramın karıştırılıyor olması, mimari kavramların kaybolmasına neden oluyor ne yazık ki. Bundan [...]]]></description>
			<content:encoded><![CDATA[<p>“Yazılım mı tasarlarız, yoksa yazılım mimarisini mi?” şeklinde yukarıdaki soruyu geliştirdiğimiz yazılımlar için de sorabiliriz. Hem yazılımın kendini, hem de yazılım mimarisini  tasarlamayı aynı kelime ile tanımladığımız için bu kavramlarda karışıyor. “Tasarım”&#8230;</p>
<p><a href="http://www.minepla.net/wp-content/uploads/design.jpg"><img class="size-full wp-image-962 alignleft" title="design" src="http://www.minepla.net/wp-content/uploads/design.jpg" alt="" width="242" height="324" /></a>“Software Design” ve “Software Architecture Design” iki farklı kavram aslında. Bu iki kavramın karıştırılıyor olması, mimari kavramların kaybolmasına neden oluyor ne yazık ki. Bundan dolayı “Tasarım”(Design) ve “Mimari”(Architecture) kavramlarının arasındaki sınırı çok iyi anlamamız gerekmekte. Tüm mimari yaklaşımlar aslında bir tasarımdır. Ama bu tasarım, “Yazılım Tasarımı”(Software Design) daki tasarım değil. Mimari olarak yaklaştığımız zaman, “tasarım” kavramı çok daha yukarıdan bakmamızı gerektiren bir kelime olarak karşımıza çıkıyor. Bir yazılım ya da sistemdeki bileşenlerin nasıl organize olduğu ve ilişkilendirildiği, o sisteme ya da yazılıma “Mimari” açıdan yaklaşımı gösterir. Bu bileşenlerin nasıl sınıflandırıldığı ve ayrıştığı ise “Tasarımı” olarak açıklanabilir. Biraz daha basite indirgememiz gerekirse, yazılım geliştirirken bileşenlerimizi  “sınıf”(class)’lara ayırmamız, bu “sınıf”lar arasında ilişkileri belirlememiz “tasarım” kavramının konusu. Ama bileşenlerimizin(component) nasıl ilişkilendirileceği de “mimari” kavramının konusu.</p>
<p>Açıkcası kendi geliştirdiğim yazılımlarda, bu iki kavramın ayrımını fark ediyor olmak geliştirme sürecini daha sağlıklı hale getiriyor.Bir yazılım geliştirmeden önce hepimizin yapmış olduğu bir tasarım mutlaka vardır. İşte bu tasarım süreci  mimari tasarıma denk geliyor aslında. Ve yazılım geliştirme sürecinde herkesinde bildiği gibi çok önemli bir yer kaplıyor. Bu süreçte dikkat edilmesi gereken bir çok önemli nokta var.Bunlardan bence en önemlilerini kendimce anlatmaya çalışacağım;</p>
<ul>
<li><strong>Sınırlar:</strong> Tasarım sürecinde, geliştirmemiz gereken yazılımın ya da sistemin ihtiyaçları ve neden gerekli olduklarını kesinlikle unutmamak lazım. Ve ihtiyaçtan fazlasını düşünmememiz lazım. Açıkcası bunu sürekli yaşıyorum. İster istemez yazılımın olabildiğince geniş bir kapsamı olması, ya da “genişletilebilir” kalite özelliğinin hem tasarım hemde geliştirme sürecinde öne çıkması kötü tasarımlara yol açıyor. İş gereksinimleri dışında, tasarımı karmaşıklaştıracak etkenleri tasarıma sokmamak ve ihtiyaçlarımız doğrultusunda sınırlarımızı aşmamak lazım.<a href="http://www.minepla.net/wp-content/uploads/design1.jpg"><img class="size-full wp-image-963 alignright" title="design1" src="http://www.minepla.net/wp-content/uploads/design1.jpg" alt="" width="248" height="297" /></a></li>
<li><strong>Bileşenlerin Ayrılması: </strong>Tasarımı yaparken, bir birinden farklı tüm fonksiyonel özellikleri belli bileşenler olarak ayırmak tasarımın karmaşıklığını önleyecektir, ayrıca ihtiyaçların gerçekten karşılanabiliyor olmasının gözlemlenmesine ve bileşenlerin tek başlarına ne işe yaradıklarını da anlamaya yardımcı olacaktır.Literatürde “Separation of Concerns” olarak yer alan bu kavram, geliştirme sürecindeki tasarım kalıpları ile ne kadar önemli olduğunu zaten belli edecektir.  Dolayısıyla geliştirme sürecinde sonradan fark etmek yerine, başlangıçta bu yaklaşıma göre yapılacak tasarımlar faydalı olacaktır.</li>
<li><strong>Bileşim(Composition) ve Kalıtım(Inheritance): </strong>Bu iki kavramın çok iyi anlaşılıyor olması gerekmekte. Çünkü geliştirilecek sistemin ya da yazılımın bileşenleri üzerinde bu iki kavramın çok büyük etkisi olacaktır. İhtiyaca göre bu iki yaklaşım doğru çizilmelidir.”Kalıtım”(Inheritance) bileşenler üzerinde bağımlılığı artıracağından, hangi bileşenlerin bir birleri ile alakalı olacağı ilişkisinin çok iyi tanımlanması gerekmekte. Öte yandan “Bileşim”(Composition) bileşen kavramını daha netleştirecektir.</li>
<li><strong>Katmanlar(Layers):</strong> Geliştirilen sistem ya da yazılım da, bileşenler arasındaki ilişikileri görmek ve yönetmek adına sistemi ya da yazılımı katmanlara ayırmak tasarımı kolaylaştıracak ve temelini güçlendirecektir. Bu şekilde katmanlara ayırmak sistemdeki akışın yolunuda görmenize yardımcı olacaktır.</li>
</ul>
<p>Mimari tasarımı yaparken bu tarz şeylere dikkat ediyor olmak, cidden bazı şeyleri çok daha net ortaya çıkarıyor ve sağlıklı bir geliştirme sürecinin ilk ışıklarını gösteriyor. En azından kendi tecrübelerime dayanarak bunu söyleyebilirim.Kendi tecrübelerim ve bilgilerim dahilinde “Mimari Tasarım” ve “Yazılım Tasarımı” arasındaki farkı anlatmaya çalıştım. Hatta biraz da “Mimari Tasarım”a daldım&#8230;Umarım faydalı olmuştur.İlerleyen zamanlarda bu konular hakkında daha çok yazıyor olacağım. Her türlü eleştiriniz ve düşüncenizi lütfen paylaşmaktan çekinmeyin. Bu kavramlar böyle böyle ortaya çıkıyor ve gelişiyor&#8230;Haydi görüşmek üzere&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.minepla.net/2010/02/insaat-mi-tasarlariz-yoksa-mimarisini-mi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sineklik</title>
		<link>http://www.minepla.net/2010/02/sineklik/</link>
		<comments>http://www.minepla.net/2010/02/sineklik/#comments</comments>
		<pubDate>Fri, 12 Feb 2010 08:32:30 +0000</pubDate>
		<dc:creator>Arda</dc:creator>
				<category><![CDATA[Minepla.Net]]></category>

		<guid isPermaLink="false">http://www.minepla.net/?p=953</guid>
		<description><![CDATA[Çok hoşuma giden fotoğraflar geldi, paylaşmasam ölür, geberirdim&#8230;




]]></description>
			<content:encoded><![CDATA[<p>Çok hoşuma giden fotoğraflar geldi, paylaşmasam ölür, geberirdim&#8230;</p>
<p><a href="http://www.minepla.net/wp-content/uploads/sinek4.jpg"><img class="size-full wp-image-954 alignnone" title="sinek4" src="http://www.minepla.net/wp-content/uploads/sinek4.jpg" alt="" width="454" height="340" /></a></p>
<p><a href="http://www.minepla.net/wp-content/uploads/sinek1.jpg"><img class="alignnone size-full wp-image-955" title="sinek1" src="http://www.minepla.net/wp-content/uploads/sinek1.jpg" alt="" width="454" height="340" /></a></p>
<p><a href="http://www.minepla.net/wp-content/uploads/sinek2.jpg"><img class="alignnone size-full wp-image-956" title="sinek2" src="http://www.minepla.net/wp-content/uploads/sinek2.jpg" alt="" width="454" height="340" /></a></p>
<p><a href="http://www.minepla.net/wp-content/uploads/sinek3.jpg"><img class="alignnone size-full wp-image-957" title="sinek3" src="http://www.minepla.net/wp-content/uploads/sinek3.jpg" alt="" width="454" height="340" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.minepla.net/2010/02/sineklik/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Buzz diyor&#8230;</title>
		<link>http://www.minepla.net/2010/02/google-buzz-diyor/</link>
		<comments>http://www.minepla.net/2010/02/google-buzz-diyor/#comments</comments>
		<pubDate>Tue, 09 Feb 2010 19:46:35 +0000</pubDate>
		<dc:creator>Arda</dc:creator>
				<category><![CDATA[Minepla.Net]]></category>
		<category><![CDATA[Google]]></category>

		<guid isPermaLink="false">http://www.minepla.net/?p=950</guid>
		<description><![CDATA[Çok fazla söze gerek yok aslında&#8230;Twitter,Facebook,FriendFeed çılgınlığına Google&#8217;da Gmail içerisine entegre ettiği Buzz isimli servisi ile dahil oldu&#8230;Bakalım neler olacak&#8230;
Ayrıntıları buradan okuyabilirsiniz&#8230;

Edit: http://code.google.com/apis/buzz/ adresinden de API&#8217;si ile ilgili bilgileri takip edebilirsiniz&#8230;
]]></description>
			<content:encoded><![CDATA[<p>Çok fazla söze gerek yok aslında&#8230;Twitter,Facebook,FriendFeed çılgınlığına Google&#8217;da Gmail içerisine entegre ettiği Buzz isimli servisi ile dahil oldu&#8230;Bakalım neler olacak&#8230;</p>
<p>Ayrıntıları <a href="http://gmailblog.blogspot.com/2010/02/google-buzz-in-gmail.html" target="_blank">buradan</a> okuyabilirsiniz&#8230;</p>
<p><object width="560" height="340"><param name="movie" value="http://www.youtube.com/v/yi50KlsCBio&#038;hl=en_US&#038;fs=1&#038;"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/yi50KlsCBio&#038;hl=en_US&#038;fs=1&#038;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="560" height="340"></embed></object></p>
<p>Edit: http://code.google.com/apis/buzz/ adresinden de API&#8217;si ile ilgili bilgileri takip edebilirsiniz&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.minepla.net/2010/02/google-buzz-diyor/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>İnşaat mı yapıyoruz da mimarisi olsun&#8230;</title>
		<link>http://www.minepla.net/2010/02/insaat-mi-yapiyoruz-da-mimarisi-olsun/</link>
		<comments>http://www.minepla.net/2010/02/insaat-mi-yapiyoruz-da-mimarisi-olsun/#comments</comments>
		<pubDate>Tue, 09 Feb 2010 17:31:02 +0000</pubDate>
		<dc:creator>Arda</dc:creator>
				<category><![CDATA[Minepla.Net]]></category>
		<category><![CDATA[Architecture]]></category>

		<guid isPermaLink="false">http://www.minepla.net/?p=934</guid>
		<description><![CDATA[Yazılım kavramında mimari yaklaşım önemli bir unsur. Ne kadar bunu biliyor olsakta,ya da bildiğimizi sansakta uygulamaya gelince zaman zaman afallıyoruz. Hatta çok afallıyoruz&#8230;Çünkü yazılım kavramında mimariyi tam olarak tanımlayamıyoruz ya bilmiyoruz.
Yazılımda mimari yaklaşımlar, yazılım mimarisi, mimari modeller, mimari tasarım bu olayların içerisinde olduğumdan beri en çok ilgili çeken konular. Genellikle çözülmesi gereken olaylara, sebeplerini, oluşum [...]]]></description>
			<content:encoded><![CDATA[<p>Yazılım kavramında mimari yaklaşım önemli bir unsur. Ne kadar bunu biliyor olsakta,ya da bildiğimizi sansakta uygulamaya gelince zaman zaman afallıyoruz. Hatta çok afallıyoruz&#8230;Çünkü yazılım kavramında mimariyi tam olarak tanımlayamıyoruz ya bilmiyoruz.</p>
<p><a href="http://www.minepla.net/wp-content/uploads/building-construction.jpg"><img class="alignright size-full wp-image-943" title="İnşaaat" src="http://www.minepla.net/wp-content/uploads/building-construction.jpg" alt="" width="281" height="185" /></a>Yazılımda mimari yaklaşımlar, yazılım mimarisi, mimari modeller, mimari tasarım bu olayların içerisinde olduğumdan beri en çok ilgili çeken konular. Genellikle çözülmesi gereken olaylara, sebeplerini, oluşum süreçlerini ve nasıl çözülürse ne olur gibi yaklaşımlarla yaklaştığım için sanırım bundan dolayı da yazılım mimarisi kavramına olan ilgim arttı;üniversite de bu konu ile ilgili aldığım derslerin de etkisi yok değil.<br />
<strong> Peki nedir bu yazılımda ki mimari ya da yazılım mimarisi?</strong></p>
<p>Yazılım mimarisi en basit ve temel şekilde, bir sistemi oluşturan yapılar ve bu yapıların birbiri ile olan ilişkileri olarak tanımlanabilir. Ancak çok ucu açık ve geniş bir tanım olduğundan biraz daha derinlere inip kurcalamakta fayda var. Bu noktada L. Bass, P. Clements, ve R.Kazman beraber yazdığı &#8220;<a href="http://www.amazon.com/Software-Architecture-Practice-2nd-Bass/dp/0321154959/ref=dp_ob_title_bk" target="_blank"><strong>Software Architecture in Practice</strong></a>&#8220;(bu kitabı şiddetle tavsiye ederim.Mutlaka okunmalı.) kitabından bir alıntı yaparak başlamak istiyorum.(-ki bir çok kaynakta da zaten bu alıntı vardır.) Bu tanımlama bence yazılım mimarisinin en açık ve anlamlı tanımı.</p>
<blockquote><p>The software architecture of a program or computing system is the structure or structures of the system, which comprise software components, the externally visible properties of those components, and the relationships between them.</p></blockquote>
<p>Kendimce biraz daha anlayabileceğim şekilde yorumlamak açıkcası bu kavramları daha iyi anlamama yardımcı oluyor.Bu bağlamda bende “Yazılım mimarisi: bir yazılımın(sistemin); teknik tüm ihtiyaçlarını, iş kuralları dahilinde, operasyonel tüm ihtiyaçlarını belli kalite gereksinimlerini de göz önüne alarak ortaya çıkmış yapı ya da yapıların ilişkiler halinde bulunduğu bütünüdür” diyebilirim. Bu yapıları ele alırken aralarındaki ilişki(ler) ise mimarinin temelini ve modelini oluşturur. Ve bu noktada bu ilişkilerin ne yazık ki göz ardı edildiğini ve mimari yaklaşımdan uzaklaşmamıza sebep olduğunu düşünüyorum. Ne demek istediğimi ileride netleştireceğim.<br />
<strong><a href="http://www.minepla.net/wp-content/uploads/2888414_3905288.jpg"><img class="alignleft size-medium wp-image-944" title="İnşaat" src="http://www.minepla.net/wp-content/uploads/2888414_3905288-300x200.jpg" alt="" width="300" height="200" /></a>Peki cidden gerekli mi?Olmazsa ne olur?</strong></p>
<p>Aslına bakarsanız gerekliliğinin sorgulanabileceğini bir kavram olduğuna inanmıyorum yazılım mimarilerinin. Yani yukarıda bahsettiğim tanımlamaları düşünmeden bile bir yazılım ortaya çıkarmaya çalışabilir ve hatta başarılı olabiliriz. “Yapmadan” kelimesi yerine “Düşünmeden” kelimesini seçmemin önemli bir noktası var. Bir yazılım geliştirirken her ne kadar mimari açıdan fazla kurcalamasakta, yazılımın var oluş sebepleri, mimari yaklaşım içerisinde olduğundan ortaya çıkacak yazılım sistemlerinin mimarisi yok diyemeyiz. Kısaca geliştirilen her türlü yazılımın bir mimarisi zaten doğası gereği var. Bu noktada yazılım mimarisinin gerekliliğinden çok, neden ihtiyaç duyduğumuzu düşünürsek daha anlamlı sonuçlara varabiliriz.<br />
<strong> İyi&#8230;Peki o zaman, neden ihtiyaç duyuyoruz?</strong></p>
<p>Bir yazılım geliştirmeye neden ihtiyaç duyuyorsak aynı sebepten. <img src='http://www.minepla.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Biliyorum biraz karışık oldu ama aslında temelinde bu yatıyor. Belli ihtiyaçlarımızdan dolayı gereksinim duyduğumuz yazılımları geliştirirken, bu ihtiyaçları elimizden geldiğince yazılım için anlamlaştırmamız(soyutlaştırmamız) ve kesinleştirmemiz gerekmekte. İhtiyaçlarımızı, yazılım açısından daha belirgin hale getirmek için mimariye bu noktada ihtiyaç duyuyoruz. Bu noktada mimari modeller ve mimari sitiller zaten karşımıza çıkıyor. İhtiyaçlarımızdan farklı olarak da operasyonel veya teknik anlamda bazı kavramları da daha net görmek adına mimari yaklaşıma ihtiyaç duyuyoruz. Aşağıdaki gibi maddelendirip özetlemek biraz daha yardımcı olacaktır.</p>
<ul>
<li>Sistemimizi oluşturan yapıları daha net görmek için ve hangi yapılara ihtiyaç var belirlemek için</li>
<li>Sistemi oluşturan yapılar arasındaki ilişkileri sağlıklı kurabilmek için</li>
<li>Sistem ihtiyaçlarını karşılamak için</li>
<li>Sistem maliyetini düşürmek için</li>
<li>Oluşturabileceğimiz sistemi başka sistemler ile ilişkilendirebilmek için</li>
<li>Sistemi paylaştırebilmek için</li>
</ul>
<p>Uzun zamandır takıntılı olduğum bu konularda, kendi düşüncelerim ve tecrübelerimi paylaşmaya çalışacağım. Öğrendiğim, takip ettiğim tüm kaynakları da buradan paylaşacağım. Ve lütfen bu konulardaki tüm düşüncelerinizi sizde paylaşıyor olun, ya da zaten paylaşım içindeyseniz beni de dahil edin <img src='http://www.minepla.net/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .Açıkcası bu tarz şeylere dikkat ettiğimizi ve bu açılardan yaklaşarak geliştirme yaptığımızı pek sanmıyorum bundan dolayı da bu tarz kavramların bu şekilde gelişeceğine inanıyorum. Şimdilik bu kadar&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.minepla.net/2010/02/insaat-mi-yapiyoruz-da-mimarisi-olsun/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Visual Studio 2010 RC yayınlandı,yayınlanacak&#8230;</title>
		<link>http://www.minepla.net/2010/02/visual-studio-2010-rc-yayynlandyyayynlanacak/</link>
		<comments>http://www.minepla.net/2010/02/visual-studio-2010-rc-yayynlandyyayynlanacak/#comments</comments>
		<pubDate>Tue, 09 Feb 2010 07:22:09 +0000</pubDate>
		<dc:creator>Arda</dc:creator>
				<category><![CDATA[Minepla.Net]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[Visual Studio]]></category>

		<guid isPermaLink="false">http://www.minepla.net/?p=939</guid>
		<description><![CDATA[12 Nisan&#8217;dan önce Visual Studio&#8217;nun son versiyonun yayın adayı Visual Studio 2010 RC, MSDN üyelerine sunuldu. 10 Şubat&#8217;ta tüm kullanıcılara sunulacak bu yeni versiyon Nisan&#8217;daki son versiyona en yakın versiyon,bilginize&#8230;Kuralım bakalım&#8230;
]]></description>
			<content:encoded><![CDATA[<p>12 Nisan&#8217;dan önce Visual Studio&#8217;nun son versiyonun yayın adayı Visual Studio 2010 RC, MSDN üyelerine sunuldu. 10 Şubat&#8217;ta tüm kullanıcılara sunulacak bu yeni versiyon Nisan&#8217;daki son versiyona en yakın versiyon,bilginize&#8230;Kuralım bakalım&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.minepla.net/2010/02/visual-studio-2010-rc-yayynlandyyayynlanacak/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
