<?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>mutix.net</title>
	<atom:link href="http://mutix.net/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://mutix.net/blog</link>
	<description>FeeL my EnerGy</description>
	<lastBuildDate>Wed, 23 Dec 2009 08:58:32 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Bu Zemanta da neyin nesi?</title>
		<link>http://mutix.net/blog/bu-zemanta-da-neyin-nesi-224/</link>
		<comments>http://mutix.net/blog/bu-zemanta-da-neyin-nesi-224/#comments</comments>
		<pubDate>Wed, 23 Dec 2009 08:56:27 +0000</pubDate>
		<dc:creator>mutkanx</dc:creator>
				<category><![CDATA[Yasam]]></category>

		<guid isPermaLink="false">http://mutix.net/blog/?p=224</guid>
		<description><![CDATA[Bloguma yazı yazıp, post ettikten sonra, kendini otomatik olarak ekliyor. Hem de div tagi içine 1&#215;1 pixellik bir gif atıyor. Acaba wordpress in özelliği mi?



 ]]></description>
			<content:encoded><![CDATA[<p>Bloguma yazı yazıp, post ettikten sonra, kendini otomatik olarak ekliyor. Hem de div tagi içine 1&#215;1 pixellik bir gif atıyor. Acaba wordpress in özelliği mi?</p>
]]></content:encoded>
			<wfw:commentRss>http://mutix.net/blog/bu-zemanta-da-neyin-nesi-224/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>C#ta Gmail kullanarak mail gönderme Kodu</title>
		<link>http://mutix.net/blog/cta-gmail-kullanarak-mail-gonderme-kodu-219/</link>
		<comments>http://mutix.net/blog/cta-gmail-kullanarak-mail-gonderme-kodu-219/#comments</comments>
		<pubDate>Wed, 23 Dec 2009 08:38:42 +0000</pubDate>
		<dc:creator>mutkanx</dc:creator>
				<category><![CDATA[Yasam]]></category>
		<category><![CDATA[C#]]></category>

		<guid isPermaLink="false">http://mutix.net/blog/cta-gmail-kullanarak-mail-gonderme-kodu-219/</guid>
		<description><![CDATA[Csharp kullanarak Gmail üzerinden mail gönderme:
class Program
{
static void Main(string[] args)
{
MailMessage mail = new MailMessage();

mail.From = new MailAddress("xxxxx@gmail.com");
mail.To.Add("gondereginizMailiBurayayazin");

mail.Subject = "Hi";
mail.Body = "Mesajinizi buraya yazin";

SmtpClient smtp = new SmtpClient("smtp.gmail.com", 587);
smtp.EnableSsl = true;

smtp.Credentials = new NetworkCredential("xxxxx@gmail.com", "xxxxgmailSifreniziBurayaYazin");
try
{
smtp.Send(mail);
}
catch (SmtpException ex)
{
Console.WriteLine(ex.Message);
}
}
}

bu kadar basitmiş ;)
]]></description>
			<content:encoded><![CDATA[<p>Csharp kullanarak Gmail üzerinden mail gönderme:</p>
<pre>class Program
{
static void Main(string[] args)
{
MailMessage mail = new MailMessage();</code>

mail.From = new MailAddress("xxxxx@gmail.com");
mail.To.Add("gondereginizMailiBurayayazin");

mail.Subject = "Hi";
mail.Body = "Mesajinizi buraya yazin";

SmtpClient smtp = new SmtpClient("smtp.gmail.com", 587);
smtp.EnableSsl = true;

smtp.Credentials = new NetworkCredential("xxxxx@gmail.com", "xxxxgmailSifreniziBurayaYazin");
try
{
smtp.Send(mail);
}
catch (SmtpException ex)
{
Console.WriteLine(ex.Message);
}
}
}
</pre>
<p>bu kadar basitmiş ;)</p>
]]></content:encoded>
			<wfw:commentRss>http://mutix.net/blog/cta-gmail-kullanarak-mail-gonderme-kodu-219/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Service Manager da Ctrl+H özelliğini açma</title>
		<link>http://mutix.net/blog/service-manager-da-ctrlh-ozelligini-acma-216/</link>
		<comments>http://mutix.net/blog/service-manager-da-ctrlh-ozelligini-acma-216/#comments</comments>
		<pubDate>Thu, 17 Dec 2009 11:32:47 +0000</pubDate>
		<dc:creator>mutkanx</dc:creator>
				<category><![CDATA[Yasam]]></category>
		<category><![CDATA[HP Service Manager]]></category>

		<guid isPermaLink="false">http://mutix.net/blog/service-manager-da-ctrlh-ozelligini-acma-216/</guid>
		<description><![CDATA[Gerçekten Semi arkadaşım saolsun, böyle bir özelliği söylemesi, bize çok yardımı oldu. Yazının devamında nasıl yapıldığını görebilirsiniz.




]]></description>
			<content:encoded><![CDATA[<p>Gerçekten Semi arkadaşım saolsun, böyle bir özelliği söylemesi, bize çok yardımı oldu. Yazının devamında nasıl yapıldığını görebilirsiniz.</p>
<p><span id="more-216"></span></p>
<p><img style="max-width: 800px;" src="http://farm4.static.flickr.com/3518/3985839709_8394d37765_o.png" /></p>
<p><img style="max-width: 800px;" src="http://farm4.static.flickr.com/3424/3985839713_1e3885d02d_o.png" /></p>
<div class="zemanta-pixie"><img class="zemanta-pixie-img" alt="" src="http://img.zemanta.com/pixy.gif?x-id=c918f281-8334-8eb9-b8ab-1296c818f510" /></div>
]]></content:encoded>
			<wfw:commentRss>http://mutix.net/blog/service-manager-da-ctrlh-ozelligini-acma-216/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Service Manager da Web Service Kullanıcılarına Timeout verme</title>
		<link>http://mutix.net/blog/service-manager-da-web-service-kullanicilarina-timeout-verme-215/</link>
		<comments>http://mutix.net/blog/service-manager-da-web-service-kullanicilarina-timeout-verme-215/#comments</comments>
		<pubDate>Thu, 17 Dec 2009 11:22:28 +0000</pubDate>
		<dc:creator>mutkanx</dc:creator>
				<category><![CDATA[Yasam]]></category>
		<category><![CDATA[HP Service Manager]]></category>
		<category><![CDATA[web service]]></category>

		<guid isPermaLink="false">http://mutix.net/blog/service-manager-da-web-service-kullanicilarina-timeout-verme-215/</guid>
		<description><![CDATA[HP Service Manager Server klasorunde sm.ini içine webservices_sessiontimeout:nn komutunu ekliyorsunuz, bu kadar basit ;)
Not: nn saniye olarak vermelisiniz, yani 1 dakika için, webservices_sessiontimeout:60demeniz yeterki olacaktır.

]]></description>
			<content:encoded><![CDATA[<p>HP Service Manager Server klasorunde sm.ini içine webservices_sessiontimeout:nn komutunu ekliyorsunuz, bu kadar basit ;)</p>
<p>Not: nn saniye olarak vermelisiniz, yani 1 dakika için, webservices_sessiontimeout:60<br />demeniz yeterki olacaktır.<span style="font-family: Arial,Verdana,Helvetica,sans-serif; font-size: 12px;"></span></p>
<div class="zemanta-pixie"><img class="zemanta-pixie-img" alt="" src="http://img.zemanta.com/pixy.gif?x-id=01ca93c8-c991-89a5-8099-74a5f49c80eb" /></div>
]]></content:encoded>
			<wfw:commentRss>http://mutix.net/blog/service-manager-da-web-service-kullanicilarina-timeout-verme-215/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>HP SWFScan</title>
		<link>http://mutix.net/blog/hp-swfscan-214/</link>
		<comments>http://mutix.net/blog/hp-swfscan-214/#comments</comments>
		<pubDate>Thu, 17 Dec 2009 10:22:07 +0000</pubDate>
		<dc:creator>mutkanx</dc:creator>
				<category><![CDATA[Yasam]]></category>
		<category><![CDATA[güvenlik]]></category>
		<category><![CDATA[HP]]></category>
		<category><![CDATA[SWFScan]]></category>

		<guid isPermaLink="false">http://mutix.net/blog/hp-swfscan-214/</guid>
		<description><![CDATA[Adobe Flash Platformlarında güvenlik açıklarını bulmaya yarıyormuş. Detaylı bilgi için tıkla.

]]></description>
			<content:encoded><![CDATA[<p>Adobe Flash Platformlarında güvenlik açıklarını bulmaya yarıyormuş. Detaylı bilgi için <a target="_blank" href="http://www.communities.hp.com/securitysoftware/blogs/spilabs/archive/2009/03/20/exposing-flash-application-vulnerabilities-with-swfscan.aspx">tıkla</a>.</p>
<div class="zemanta-pixie"><img class="zemanta-pixie-img" alt="" src="http://img.zemanta.com/pixy.gif?x-id=47fd41d9-a70c-81ca-8866-d8c7d8c701c6" /></div>
]]></content:encoded>
			<wfw:commentRss>http://mutix.net/blog/hp-swfscan-214/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Service Manager açılırken default gelen formun değiştirilmesi</title>
		<link>http://mutix.net/blog/service-manager-acilirken-default-gelen-formun-degistirilmesi-211/</link>
		<comments>http://mutix.net/blog/service-manager-acilirken-default-gelen-formun-degistirilmesi-211/#comments</comments>
		<pubDate>Thu, 17 Dec 2009 09:56:18 +0000</pubDate>
		<dc:creator>mutkanx</dc:creator>
				<category><![CDATA[Yasam]]></category>
		<category><![CDATA[Format Control]]></category>
		<category><![CDATA[HP Service Manager]]></category>
		<category><![CDATA[Stored Query]]></category>

		<guid isPermaLink="false">http://mutix.net/blog/service-manager-acilirken-default-gelen-formun-degistirilmesi-211/</guid>
		<description><![CDATA[Bunun için ilk önce query.stored prosedürü tanımlamamız gerekiyor. Bunun için command satırına sq yazıp, stored query maintenance sayfası geliyor. Burda aşağıdaki gibi düzenlemeler yapıyoruz.


Command satırından fc(format control) çağırıyoruz ve name kismina login.DEFAULT yazarak login.defaultun format controlune giriyoruz, burda subroutine tıklıyoruz ve show expanded form diyerek ekranın aşağıdaki görünmesini sağlıyoruz. En son eklenen application name, yazdığımız [...]]]></description>
			<content:encoded><![CDATA[<p>Bunun için ilk önce query.stored prosedürü tanımlamamız gerekiyor. Bunun için command satırına sq yazıp, stored query maintenance sayfası geliyor. Burda aşağıdaki gibi düzenlemeler yapıyoruz.</p>
<p><span id="more-211"></span></p>
<p><img style="max-width: 800px;" src="http://farm5.static.flickr.com/4011/4191766727_780c1991e3_o.png" alt="" /></p>
<p>Command satırından fc(format control) çağırıyoruz ve name kismina login.DEFAULT yazarak login.defaultun format controlune giriyoruz, burda subroutine tıklıyoruz ve show expanded form diyerek ekranın aşağıdaki görünmesini sağlıyoruz. En son eklenen application name, yazdığımız stored query ekliyoruz. Bundan sonra login olurken artık stored query deki yazdığımız form gelecek.</p>
<p><img style="max-width: 800px;" src="http://farm3.static.flickr.com/2605/4191746593_123b949f69_o.png" alt="" width="800" height="424" /></p>
<div class="zemanta-pixie"><img class="zemanta-pixie-img" src="http://img.zemanta.com/pixy.gif?x-id=8456543b-7136-81b9-96c5-069658835a28" alt="" /></div>
]]></content:encoded>
			<wfw:commentRss>http://mutix.net/blog/service-manager-acilirken-default-gelen-formun-degistirilmesi-211/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Wordpressinizi Mobile Ortama Taşıyın</title>
		<link>http://mutix.net/blog/wordpressinizi-mobile-ortama-tasiyin-210/</link>
		<comments>http://mutix.net/blog/wordpressinizi-mobile-ortama-tasiyin-210/#comments</comments>
		<pubDate>Mon, 26 Oct 2009 08:03:37 +0000</pubDate>
		<dc:creator>mutkanx</dc:creator>
				<category><![CDATA[Yasam]]></category>
		<category><![CDATA[blackberry]]></category>
		<category><![CDATA[cell phone]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[windows mobile]]></category>

		<guid isPermaLink="false">http://mutix.net/blog/wordpressinizi-mobile-ortama-tasiyin-210/</guid>
		<description><![CDATA[Iphone üzerinden girildiği zaman iphone arayüzü, diger mobil ortamlardan girildiği zaman da başka bir arayüz sağlayan pluginler burada.

]]></description>
			<content:encoded><![CDATA[<p>Iphone üzerinden girildiği zaman iphone arayüzü, diger mobil ortamlardan girildiği zaman da başka bir arayüz sağlayan pluginler <a target="_blank" href="http://en.support.wordpress.com/themes/mobile-themes/">burada</a>.</p>
<div class="zemanta-pixie"><img class="zemanta-pixie-img" alt="" src="http://img.zemanta.com/pixy.gif?x-id=7a59e563-375e-8e71-9ce2-0f523a1add32" /></div>
]]></content:encoded>
			<wfw:commentRss>http://mutix.net/blog/wordpressinizi-mobile-ortama-tasiyin-210/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Messenger key ports error solution</title>
		<link>http://mutix.net/blog/messenger-key-ports-error-solution-209/</link>
		<comments>http://mutix.net/blog/messenger-key-ports-error-solution-209/#comments</comments>
		<pubDate>Thu, 01 Oct 2009 14:48:17 +0000</pubDate>
		<dc:creator>mutkanx</dc:creator>
				<category><![CDATA[Yasam]]></category>
		<category><![CDATA[error]]></category>
		<category><![CDATA[key ports]]></category>
		<category><![CDATA[messenger]]></category>
		<category><![CDATA[msn]]></category>

		<guid isPermaLink="false">http://mutix.net/blog/messenger-key-ports-error-solution-209/</guid>
		<description><![CDATA[Sizde benim gibi msn de durmadan key ports hatası alıyorsanız, burdaki yazılanlara bakın ;) 

]]></description>
			<content:encoded><![CDATA[<p>Sizde benim gibi msn de durmadan key ports hatası alıyorsanız, <a target="_blank" href="http://ysolution.blogspot.com/2008/05/msn-key-ports-error-solution.html">burdaki</a> yazılanlara bakın ;) </p>
<div class="zemanta-pixie"><img class="zemanta-pixie-img" alt="" src="http://img.zemanta.com/pixy.gif?x-id=8b63a0d3-a61f-8300-be26-dfada7b12cc2" /></div>
]]></content:encoded>
			<wfw:commentRss>http://mutix.net/blog/messenger-key-ports-error-solution-209/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Remote Debugger with Visual Studio 2008 &#8211; MSVSMON</title>
		<link>http://mutix.net/blog/remote-debugger-with-visual-studio-2008-msvsmon-207/</link>
		<comments>http://mutix.net/blog/remote-debugger-with-visual-studio-2008-msvsmon-207/#comments</comments>
		<pubDate>Fri, 11 Sep 2009 07:42:15 +0000</pubDate>
		<dc:creator>mutkanx</dc:creator>
				<category><![CDATA[Yasam]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[msvsmon]]></category>
		<category><![CDATA[remote debugger]]></category>
		<category><![CDATA[visual studio]]></category>

		<guid isPermaLink="false">http://mutix.net/blog/?p=207</guid>
		<description><![CDATA[Geçenlerde, multimonitor bir uygulama yazdım ve çalışmadığını gördüm. Bir turlu sorunun nerde oldugunu anlayamadım. Bunun üzerine aklıma neden makinam uzerinde diger makinadakı uygulamayı debug edemiyim diye bir soru takıldı aklıma ve Remote Debugger i kesfettim. Epey bir araştırdım kurulumu için, uygulamayı çalıştırdıgım makina XP Home oldugu icin MSVSMON kuramadim, 1 gun sonra araştırmalarım sonucunda XP [...]]]></description>
			<content:encoded><![CDATA[<p>Geçenlerde, multimonitor bir uygulama yazdım ve çalışmadığını gördüm. Bir turlu sorunun nerde oldugunu anlayamadım. Bunun üzerine aklıma neden makinam uzerinde diger makinadakı uygulamayı debug edemiyim diye bir soru takıldı aklıma ve Remote Debugger i kesfettim. Epey bir araştırdım kurulumu için, uygulamayı çalıştırdıgım makina XP Home oldugu icin MSVSMON kuramadim, 1 gun sonra araştırmalarım sonucunda XP Home üzerine kurulmadığını öğrendim. O yüzden sizde benim gibi fazla araştırmadan <a title="Video" href="http://www.microsoft.com/uk/msdn/nuggets/nugget/313/visual-studio-2008-remote-debugging-with-msvsmonexe.aspx" target="_blank">bu videoyu</a> izleyin. O kadar.</p>
]]></content:encoded>
			<wfw:commentRss>http://mutix.net/blog/remote-debugger-with-visual-studio-2008-msvsmon-207/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iki veya daha fazla masaüstü uygulamasını konuşturma &#8211; WCF</title>
		<link>http://mutix.net/blog/iki-veya-daha-fazla-masaustu-uygulamasini-konusturma-wcf-201/</link>
		<comments>http://mutix.net/blog/iki-veya-daha-fazla-masaustu-uygulamasini-konusturma-wcf-201/#comments</comments>
		<pubDate>Fri, 11 Sep 2009 06:57:18 +0000</pubDate>
		<dc:creator>mutkanx</dc:creator>
				<category><![CDATA[Yasam]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[netNamedPipeBinding]]></category>
		<category><![CDATA[wcf]]></category>

		<guid isPermaLink="false">http://mutix.net/blog/?p=201</guid>
		<description><![CDATA[Note: Yazi Burak Selim Senyurt&#8216;a aittir, ustune anlamadigim ve ogrenip yaptigim birkac cumle ekledim.
Windows Communication Foundation mimarisinin geliştirilmesininin tek amacı, var olan dağıtık mimari modellerini bir çatı altında birleştirmek değildir. Buna paralel olaraktan WCF mimarisi, .Net Remoting, Xml Web Servisleri, WSE(Web Service Enhancements), MSMQ(Microsoft Message Queue), COM+ gibi pek çok dağıtık uygulama geliştirme modelinin çalışma [...]]]></description>
			<content:encoded><![CDATA[<p><em>Note: Yazi <a href="http://www.bsenyurt.com/" target="_blank">Burak Selim Senyurt</a>&#8216;a aittir, ustune anlamadigim ve ogrenip yaptigim birkac cumle ekledim.</em></p>
<p>Windows Communication Foundation mimarisinin geliştirilmesininin tek amacı, var olan dağıtık mimari modellerini bir çatı altında birleştirmek değildir. Buna paralel olaraktan WCF mimarisi, .Net Remoting, Xml Web Servisleri, WSE(Web Service Enhancements), MSMQ(Microsoft Message Queue), COM+ gibi pek çok dağıtık uygulama geliştirme modelinin çalışma zamanı alt yapısının kolayca oluşturulabilmesinide hedeflemektedir. Burada dekleratif programlama modelinin benimsenmesinin önemli katkısı vardır. Sonuçta geliştiricinin sıklıkla yapmak zorunda kaldığı alt yapı hazırlıklarının  attribute(nitelik) veya konfigurasyon bazlı olacak şekilde ayarlanabilmesi son derece avantajlıdır. Bu açıdan bakıldığında olayın kilit noktası WCF in ABC(AddressBindingContract) sinde yer alan bağlayıcı tiplerdir(Binding Types). Bilindiği üzere WCF mimarisi .Net Framework 3.0 ile birlikte gelmiştir. Bununla birlikte şu an itibariyle .Net Framework 3.5 sürümünde ek yeniliklerde içermektedir(Örneğin Web Programlama Modeli, WorkFlow Foundation ile Tam Entegrasyon, JSON, AJAX desteği gibi). Bağlayıcı tiplerin sayısının çok olmasının, geliştiricilerin karar verme noktasındaki işlerini zorlaştırdığıda bir gerçektir. Bu nedenle çoğunlukla yardımcı tablolardan veya diagramlardan yararlanılmaktadır.</p>
<p><span id="more-201"></span></p>
<p>Yazın geldiği bu sıcak günlerde yazdığımız bu makalemizde, biraz hafiften ilerleyecek ve bu bağlayıcı tiplerden çok sık kullanılanlar arasındaki performans farklarını incelemek için nasıl bir yol izleyebileceğimizi incelemeye çalışacağız. Nitekim senaryoya göre seçilebilecek bağlayıcı tiplerin birden fazla olması halinde performans kriterleri ön plana çıkmaktadır. Öncelikli olarak şu anda kullanılan bağlayıcı tipler ve aralarındaki belirgin farklıları göz önüne almakta yarar vardır. İşte aşağıdaki tablo bu farklılıkları dile getirmektedir.</p>
<p><img class="alignnone" title="1" src="http://farm3.static.flickr.com/2444/3909144566_ea30db9336.jpg" alt="" width="500" height="410" /></p>
<p>Görüldüğü gibi bağlayıcı tiplerin birbirlerine göre farklı kullanım sahaları ve senaryoları bulunmaktadır. Buradaki bağlayıcı tiplerde yeterli gelmiyorsa bu durumda özel bağlayıcı tiplerin(Custom Binding Type) yazılmasıda tercih edilebilir ki bazı senaryolarda(örneğin Front-End Service yazılması gereken durumlar veya Reply Attack gibi vakalarda) bu gereklidir. Yukarıdaki tablo karar vermek için tam olarak yeterli değildir. Karar verirken ele alınması gereken sorular arasında platform bağımsızlık(Interoperability), güvenilirlik(Relaibiliyu), performans, WS-* şartnameleri(Specifications), güvenlik(Security) gibi pek çok kriter bulunmaktadır. İşte bu noktada da devreye aşağıdaki gibi bir tablo girmektedir.</p>
<p><img class="alignnone" title="2" src="http://farm3.static.flickr.com/2483/3909144612_af578bf4bf.jpg" alt="" width="500" height="414" /></p>
<p>Görüldüğü gibi bu tabloda yer alan kriterlerden yararlanarak hangi bağlayıcı tipin kullanılacağı kolay bir şekilde kararlaştırılabilir. Söz gelimi çift yönlü(Duplex) iletişimin söz konusu olduğu bir vaka varsa, kriterler sınırlıdır. Bir başka deyişle böyle bir senaryoda WsDualHttpBinding, NetTcpBinding, NetNamedPipeBinding ve NetPeerTcpBinding tiplerinden birisi kullanılabilir. Ancak karar vermek halen daha zor olabilmektedir. Belkide bir başlangıç noktası olsa bu iş daha da kolaylaşabilir. O halde bir akış şeması son derece yerinde olur. Mesela;</p>
<p><img class="alignnone" title="3" src="http://farm4.static.flickr.com/3101/3909144648_db095e2e41.jpg" alt="" width="500" height="281" /></p>
<p>Öncelikli olarak başka servisler ile uyumlu bir şekilde konuşulup konuşulmayacağına karar verilerek başlayan bu iş akışının farklı versiyonlarıda bulunmaktadır. Ancak Juval Löwy ve Steve Resnic in önerdiği örnek karar verme adımlarından biriside bu çizelgedir. Karar vermede önemli olan kriterlerden biriside elbetteki Performans tır. Çoğunlukla gerçek hayat ortamlarında, yazılan uygulamaların gerçek değeri performansları ile ölçülmektedir. Bu durumda akla gelen sorulardan ilki vakaya göre hangi bağlayıcı tipin en iyi performansı verdiğidir. İşte yazımızın bu bölümünden itibaren 4 temel ve sık kullanılan bağlayıcı tip arasındaki saniye başına düşen çağrı(Calls Per Seconds) sayılarını test edeceğimiz örnek bir senaryo üzerinde durmaya çalışacağız. Vakamızda NetTcpBinding, WsHttpBinding, BasicHttpBinding ve NetNamedPipeBinding bağlayıcı tipleri ele alınmaktadır.</p>
<p>Bilindiği üzere NetTcpBinding bağlayıcı tipi çoğunlukla intranet tabanlı sistemlerde yüksek performansı ile göz önüne çıkmaktadır. Ne varki WS destekli servisler ile konuşulması gereken vakalarda WsHttpBinding bağlayıcı tipi sıkılıkla değerlendirilmektedir. Tüm bunların yanında özellikle WS Basic Profile 1.1 ve öncesi yazılmış Web Servisleri ile olan haberleşmede BasicHttpBinding biçilmiş kaftandır. Elbette öyle vakalar vardırki aynı makine üzerinde koşmakta olan servislerin bir birleriyle haberleşmesi söz konusudur. Çok doğal olarak böyle bir durumda NetNamedPipeBinding tipi ön tarafa çıkmaktadır.</p>
<h1>1.   UYGULAMA</h1>
<p>Öncelikli olarak kendimize bir adet WCF Servis Library geliştiriyor olacağız. (Söz konusu servis kütüphanesi Visual Studio 2008 kullanılarak .Net Framework 3.5 şablonunda geliştirilmiştir.) Servis tarafına sunulacak olan sözleşme(Contract) ve uygulayıcı tipin içeriği aşağıdaki gibidir.</p>
<p><img class="alignnone" title="4" src="http://farm4.static.flickr.com/3495/3909144678_df88319239.jpg" alt="" width="163" height="257" /></p>
<p>Visual Studio 2008 de ProcessLib adinda Class Library projesi olusturuyoruz, buna dikkat edelim, yoksa benim gibi Console Application yaratip, dll dosyasini arayip durursunuz J Burda ogrendigim bir tricki söylemek istiyorum, Tester sinifini direk veya manuel yarattiktan sonra diagram da sag tiklayip direk Interface i oluşturabilirsiniz.</p>
<p><code>using System;<br />
using System.ServiceModel;<br />
namespace ProcessLib<br />
{<br />
[ServiceContract]<br />
public interface ITester<br />
{<br />
[OperationContract]<br />
int topla(int a, int b);<br />
}<br />
}</code></p>
<p><code>using System;<br />
namespace ProcessLib<br />
{<br />
public class Tester:ITester<br />
{<br />
#region ITester Members<br />
public int topla(int a, int b)<br />
{<br />
return a+b;<br />
}<br />
#endregion<br />
}<br />
}</code></p>
<p>Şimdi bir tane de Console Uygulamasi yaratiyoruz, adina da ServerApp diyelim. Solution Explorer a bakarsaniz app.config I goremiceksiniz. Projeye sag tiklayip, add-&gt;new item-&gt;application configuration file direk ekliyoruz. Sonra aşagidaki configi yapiştirin.</p>
<p><code><br />
&lt;?xml version="1.0" encoding="utf-8" ?&gt;<br />
&lt;configuration&gt;<br />
&lt;system.serviceModel&gt;<br />
&lt;services&gt;<br />
&lt;service name="ProcessLib.Tester"&gt;<br />
&lt;endpoint address="net.pipe://localhost/TesterService" binding="netNamedPipeBinding" bindingConfiguration="" name="TesterServicePipeEndPoint" contract="ProcessLib.ITester" /&gt;<br />
&lt;/service&gt;<br />
&lt;/services&gt;<br />
&lt;/system.serviceModel&gt;<br />
&lt;/configuration&gt;<!--formatted--></code></p>
<p>Program.cs icine direk aşağidaki kodu ekleyebilirsiniz. Bu kod server gorevini goruyor.<br />
<code><br />
using System;<br />
using System.ServiceModel;<br />
using ProcessLib;<br />
namespace ServerApp<br />
{<br />
class Program<br />
{<br />
static void Main(string[] args)<br />
{<br />
ServiceHost host = new ServiceHost(typeof(Tester));<br />
host.Opening += delegate(object sender, EventArgs e)<br />
{<br />
Console.WriteLine(&quot;Servis açılıyor...&quot;);<br />
};<br />
// Servis açıldıktan sonraki event metodu<br />
host.Opened += delegate(object sender, EventArgs e)<br />
{<br />
Console.WriteLine(&quot;Servis açıldı...&quot;);<br />
};<br />
// Servis kapanırkenki event metodu<br />
host.Closing += delegate(object sender, EventArgs e)<br />
{<br />
Console.WriteLine(&quot;Servis kapanıyor...&quot;);<br />
};<br />
// Servis kapandığındaki event metodu<br />
host.Closed += delegate(object sender, EventArgs e)<br />
{<br />
Console.WriteLine(&quot;Servis kapandı...&quot;);<br />
};<br />
try<br />
{<br />
host.Open();<br />
}<br />
catch (Exception e)<br />
{<br />
Console.WriteLine(e.Message);<br />
throw;<br />
}<br />
Console.WriteLine(&quot;Servis dinlemede\nKapatmak için bir tuşa basın&quot;);<br />
Console.ReadLine();<br />
try<br />
{<br />
host.Close();<br />
}<br />
catch (Exception e)<br />
{<br />
Console.WriteLine(e.Message);<br />
throw;<br />
}<br />
}<br />
}<br />
}<br />
</code><br />
Host uygulama 1 EndPoint üzerinden hizmet vermektedir. EndPoint Tester isimli servis tipini kullanmaktadır. İstemci tarafını geliştirmeden önce gerekli proxy tipinin üretimi için svcutil* aracından aşağıdaki ekran görüntüsünde yer aldığı gibi yararlanılabilir. Bu proxy, normal bildigimiz browser uzerinden yasaklanmis bir siteye girmek icin kullandigimiz bir proxy degil. Burdaki proxy, applicationlarin birbirleriyle nasil konuşacaklarini gösteren yol. Burda olusturulan TesterProxy.cs dosyasini diger application yazacak olan arkadaslara veriyoruz, boylece onlar bu cs dosyasi uzerinden bizim sunmus oldugumuz fonksiyonlara erişebiliyorlar.</p>
<p><img class="alignnone" title="5" src="http://farm3.static.flickr.com/2472/3908365193_d8a80747cb.jpg" alt="" width="500" height="281" /></p>
<p>Artık istemci uygulamanın geliştirilmesine başlanabilir. Buradada örneği basit bir şekilde ele alabilmek için bir Console uygulaması göz önüne alınmaktadır. ClientApp adinda bir console uygulamasi yaratin. Yine manuel olarak app.config dosyasini ekleyin ve aşağıdaki kodlari ilgili yerlere yapiştirin. Yine önemli olan nokta konfigurasyon dosyasının içeriğidir.<br />
<code><br />
&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;<br />
&lt;configuration&gt;<br />
    &lt;system.serviceModel&gt;<br />
        &lt;client&gt;<br />
            &lt;endpoint address=&quot;net.pipe://localhost/TesterService&quot; binding=&quot;netNamedPipeBinding&quot; bindingConfiguration=&quot;&quot; contract=&quot;ITester&quot; name=&quot;ClientPipeEndPoint&quot; /&gt;<br />
        &lt;/client&gt;<br />
    &lt;/system.serviceModel&gt;<br />
&lt;/configuration&gt;<br />
</code></p>
<p><code><br />
using System;<br />
namespace ClientApp<br />
{<br />
    class Program<br />
    {<br />
        static void Main(string[] args)<br />
        {<br />
            int a = 0, b = 0;<br />
            TesterClient client = new TesterClient(&quot;ClientPipeEndPoint&quot;);<br />
            while (true)<br />
            {<br />
                Console.WriteLine(&quot;Bir sayi girin: &quot;);<br />
                a = Int32.Parse(Console.ReadLine());<br />
                Console.WriteLine(&quot;Bir sayi girin: &quot;);<br />
                b = Int32.Parse(Console.ReadLine());<br />
                Console.WriteLine(&quot;Toplam: &quot; + client.topla(a, b));<br />
            }<br />
        }<br />
    }<br />
}<br />
</code></p>
<p>Bundan sonra yapmaniz gereken uygulamalari çalıştırmak. İlk once AppServer uygulamamizi calistiralim. Sonra client uygulamamiz ile test edebiliriz.</p>
<p>Not*: svcutil direk command promtta çalışmıyor. Bu yuzden Visual Studio uzerinde olusturacağimiz kisayol ile hem svcutil programina hemde direk proje icine command prompt açabiliyoruz.<br />
Bunla ilgili gerekli bilgi asagidaki sitede mevcuttur:<br />
http://www.c-sharpcorner.com/UploadFile/rmcochran/CommandPromptInStudioToolsMenu01152008103357AM/CommandPromptInStudioToolsMenu.aspx</p>
]]></content:encoded>
			<wfw:commentRss>http://mutix.net/blog/iki-veya-daha-fazla-masaustu-uygulamasini-konusturma-wcf-201/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
