{"id":8410,"date":"2010-10-21T21:49:07","date_gmt":"2010-10-21T19:49:07","guid":{"rendered":"https:\/\/fatihboy.com\/?p=8410"},"modified":"2010-10-21T21:49:07","modified_gmt":"2010-10-21T19:49:07","slug":"ileri-duzey-serilestirme-1","status":"publish","type":"post","link":"https:\/\/fatihboy.com\/en\/ileri-duzey-serilestirme-1\/","title":{"rendered":"\u0130leri D\u00fczey Serile\u015ftirme \u2013 1"},"content":{"rendered":"<p>&nbsp;&nbsp; Nesnelerin serile\u015ftirilerek saklanmas\u0131 konusunda C# i\u015flerimizi olduk\u00e7a kolayla\u015ft\u0131rmakta. \u00c7o\u011fu zaman s\u0131n\u0131f\u0131m\u0131z\u0131n \u00fczerine yerle\u015ftirece\u011fimiz bir <strong>SerializableAttribute<\/strong> ile nesnelerimizi serile\u015ftirilebilir hale getirebiliyor, ard\u0131ndan da <strong>BinaryFormatter<\/strong> s\u0131n\u0131f\u0131 yard\u0131m\u0131yla bu nesneleri bir stream\u2019e yazabiliyor ve yine stream\u2019den okuyabiliyoruz.<\/p>\n\n\n\n<p>&nbsp;&nbsp; Serializable ve NonSeriazable attribute\u2019leri ve BinaryFormatter s\u0131n\u0131f\u0131n\u0131 kullanmak \u00e7o\u011fu senaryo da bizleri h\u0131zl\u0131ca sonuca ula\u015ft\u0131rsa da malesef ki s\u0131n\u0131f hiyerar\u015fisi, yap\u0131s\u0131 ya da a\u00e7\u0131k anahtar simgesi de\u011fi\u015fmi\u015f assembly\u2019lerde geriye d\u00f6n\u00fck uyumluluk, serile\u015ftirilmi\u015f eski verilerin yeniden a\u00e7\u0131lmas\u0131 tam bir ba\u015f a\u011fr\u0131s\u0131 olabiliyor. \u00d6zellikle uygulamam\u0131z\u0131n yeni s\u00fcr\u00fcmlerinde ya\u015fanabilecek olan s\u0131n\u0131f ve namespace de\u011fi\u015fikliklerinde <a href=\"\/en\/?p=719\">\u00f6nceki makalemde<\/a> sizlerle payla\u015ft\u0131\u011f\u0131m y\u00f6ntemle <strong>SerializationBinder<\/strong> s\u0131n\u0131f\u0131 \u00fczerinden yap\u0131lacak y\u00f6nlendirme ile problemi a\u015fabilmektesiniz.<\/p>\n\n\n\n<p>&nbsp;&nbsp; Kimi senaryolarda sizin kontrol\u00fcn\u00fczde olmayan, 3. parti,&nbsp; s\u0131n\u0131flar\u0131n da serile\u015ftirilmesi gerekebiliyor. M\u00fcdahale edemedi\u011finiz bu 3. parti s\u0131n\u0131flar\u0131n SerializableAttribute ile i\u015faretlenmedi\u011fi de varsayarsak serile\u015ftirme anlam\u0131nda yap\u0131labilecek \u00e7ok fazla \u015fey kalm\u0131yor. Elimizin kolumuzun ba\u011fland\u0131\u011f\u0131 bu durumda ne <strong>BinaryFormatter<\/strong>, ne de <strong>SerializationBinder<\/strong> derdimize \u00e7are olamayacakt\u0131r; \u00e7\u00fcnk\u00fc yap\u0131lmas\u0131 gereken do\u011frudan serile\u015ftirme s\u00fcrecine m\u00fcdahale etmektir. Bu tarz bir durumla kar\u015f\u0131la\u015ft\u0131\u011f\u0131n\u0131zda hemen farkedeceksiniz ki standart serile\u015ftirme i\u015fleminde ya\u015fad\u0131\u011f\u0131n\u0131z konfor ve kolayl\u0131k art\u0131k sizinle de\u011fil. .Net framework serile\u015ftirme i\u00e7 s\u00fcrecine m\u00fcdahale etmeyi az say\u0131da aray\u00fcz ve s\u0131n\u0131f ile s\u0131n\u0131rland\u0131rm\u0131\u015f durumdad\u0131r.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">public class Ogrenci{\n   public string Adi;\n   public string Bolum;\n}<\/pre>\n\n\n\n<p>&nbsp;&nbsp; Yukar\u0131daki \u00f6rnek s\u0131n\u0131f\u0131 ele alal\u0131m, size ait olmayan 3. parti bir k\u00fct\u00fcphane i\u00e7erisinde yer ald\u0131\u011f\u0131n\u0131 varsayd\u0131\u011f\u0131m &#8211;<em>dolay\u0131s\u0131yla da m\u00fcdahale edemedi\u011fim<\/em>&#8211; bu s\u0131n\u0131f \u00fczerinde serile\u015ftirme ile ilgili bir bilgi bulunmad\u0131\u011f\u0131 i\u00e7in standart y\u00f6ntemler ve BinaryFormatter kullanarak s\u0131n\u0131f \u00f6rne\u011fini serile\u015ftirmeye \u00e7al\u0131\u015f\u0131rsan\u0131z a\u015fa\u011f\u0131daki hata mesaj\u0131 ile kar\u015f\u0131la\u015f\u0131rs\u0131n\u0131z;<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\"><p><strong>SerializationException was unhandled<\/strong><\/p><p>&#8216;SerilestirmeDeneme, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null&#8217; Derlemesindeki &#8216;SerilestirmeDeneme.Ogrenci&#8217; T\u00fcr\u00fc seri hale getirilebilir olarak i\u015faretlenmedi.<\/p><\/blockquote>\n\n\n\n<p>&nbsp;&nbsp; Bu durumda Ogrenci s\u0131n\u0131f\u0131n\u0131n serile\u015ftirme i\u015fleminde kullan\u0131lmak \u00fczere sizin kontrol edebilece\u011finiz bir <em>vekil s\u0131n\u0131f<\/em> olu\u015fturmal\u0131 ve BinaryFormatter\u2019a Ogrenci t\u00fcr\u00fcndeki t\u00fcm s\u0131n\u0131f \u00f6rneklerinde bu vekil\u2019i kullanmas\u0131 y\u00f6n\u00fcnde zorlamal\u0131s\u0131n\u0131z. \u015eimdi isterseniz ad\u0131m ad\u0131m bunu nas\u0131l yapabilece\u011fimizi g\u00f6relim.<\/p>\n\n\n\n<p>&nbsp;&nbsp; Her\u015feyden \u00f6nce, .net framework yerine Ogrenci s\u0131n\u0131f\u0131n\u0131n serile\u015ftirmesini yapaca\u011f\u0131m\u0131z olan serile\u015ftirme vekil s\u0131n\u0131f\u0131m\u0131z <strong>System.Runtime.Serialization.ISerializationSurrogate<\/strong> aray\u00fcz\u00fcn\u00fc uygulamal\u0131d\u0131r. Bu aray\u00fcz\u00fc inceleyecek olursak nesnenin serile\u015ftirilmesinde \u00e7a\u011fr\u0131lan <strong>GetObjectData<\/strong> ve serile\u015ftirilmi\u015f nesnenin okundu\u011fu <strong>SetObjectData<\/strong> fonksiyonlar\u0131n\u0131n bulundu\u011funu g\u00f6r\u00fcr\u00fcz;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">public interface ISerializationSurrogate {\n   void GetObjectData(Object nesneOrnegi,\n      SerializationInfo serilestirmeBilgisi,\n      StreamingContext kapsam);\n\n   Object SetObjectData(Object nesneOrnegi,\n      SerializationInfo serilestirmeBilgisi,\n      StreamingContext kapsam,\n      ISurrogateSelector vekilSecici);\n}<\/pre>\n\n\n\n<p>&nbsp;&nbsp; A\u015fa\u011f\u0131da Ogrenci s\u0131n\u0131f\u0131n\u0131n serile\u015ftirmesinde vekil olacak olan OgrenciSerializationSurrogate s\u0131n\u0131f\u0131n\u0131 bulabilirsiniz;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">public sealed class OgrenciSerializationSurrogate : ISerializationSurrogate {\n    public void GetObjectData(Object nesne,\n        SerializationInfo serilestirmeBilgisi,\n        StreamingContext kapsam) {\n\n        Ogrenci ogrenciOrnegi = (Ogrenci)nesne;\n\n        serilestirmeBilgisi.AddValue(\"Adi\", ogrenciOrnegi.Adi);\n        serilestirmeBilgisi.AddValue(\"Bolum\", ogrenciOrnegi.Bolum);\n    }\n\n    public Object SetObjectData(Object nesne,\n        SerializationInfo serilestirmeBilgisi,\n        StreamingContext kapsam,\n        ISurrogateSelector vekilSecici) {\n\n        Ogrenci ogrenciOrnegi = (Ogrenci)nesne;\n\n        ogrenciOrnegi.Adi = serilestirmeBilgisi.GetString(\"Adi\");\n        ogrenciOrnegi.Bolum = serilestirmeBilgisi.GetString(\"Bolum\");\n\n        return null;\n    }\n}<\/pre>\n\n\n\n<p>&nbsp;&nbsp; Tahminimce daha \u00f6nceden <strong>ISerializable<\/strong> aray\u00fcz\u00fcn\u00fc kullanarak serile\u015ftirme yapm\u0131\u015f olanlar\u0131n\u0131z\u0131n ilk farkedece\u011fi \u015fey <em>GetObjectData<\/em> fonksiyonu olacakt\u0131r. Her iki aray\u00fczde de bulunan bu fonksiyon ISerializable\u2019den farkl\u0131 olarak ISerializationSurrogate i\u00e7erisinde ger\u00e7ek nesnenin g\u00f6nderildi\u011fi ek parametresidir. Serile\u015ftirme vekil s\u0131n\u0131f\u0131n\u0131zda, size iletilen bu ger\u00e7ek nesneyi kullanarak, gerekli olan serile\u015ftirme bilgisini .net framework\u2019e verebilirsiniz. Benzer bir kullan\u0131mla da <em>SetObjectData<\/em> fonksiyonu yard\u0131m\u0131yla .net framework taraf\u0131ndan g\u00f6nderilen bilgiler yard\u0131m\u0131yla serile\u015ftirilmi\u015f veri nesne i\u00e7erisine geri eklenebilir.<\/p>\n\n\n\n<p>Bu noktada d\u00fc\u015fmem gereken iki \u00f6nemli not var;<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li> Ger\u00e7ek \u00f6rneklerde serile\u015ftirmeniz gereken nesne her zaman i\u00e7in bu kadar basit olmayabilir. S\u0131n\u0131f salt okunur \u00f6zelliklere sahip ve as\u0131l verisi arka alanda bulunan \/ hesaplanan private de\u011fi\u015fkenler bar\u0131nd\u0131rabilir. Bu durumda serile\u015ftirme s\u0131ras\u0131nda farkl\u0131 i\u015flemler yap\u0131lmas\u0131 gerekecektir. <\/li><li> Her ne kadar <em>SetObjectData<\/em> fonksiyonu nesne d\u00f6necek \u015fekilde tan\u0131mlanm\u0131\u015fta olsa Microsoft taraf\u0131ndan implemente edilmi\u015f olan SoapFormatter ve BinaryFormatter s\u0131n\u0131flar\u0131 <em>fonksiyondan d\u00f6nen de\u011feri dikkate almay\u0131p<\/em> fonksiyonun ilk parametresi olarak ge\u00e7ilen nesneyle i\u015flem yapmaya devam etmektedir. Bu durum yukar\u0131daki Ogrenci s\u0131n\u0131f\u0131 gibi referans t\u00fcrler (reference type) i\u00e7in bir s\u0131k\u0131nt\u0131 olu\u015fturmaz iken <em>struct<\/em> gibi <strong>de\u011fer tiplerin (value type) bu y\u00f6ntem ile serile\u015ftirilemez<\/strong>. <\/li><\/ul>\n\n\n\n<p>&nbsp;&nbsp; Serile\u015ftirme de kullanaca\u011f\u0131m\u0131z vekil s\u0131n\u0131f\u0131m\u0131z\u0131 tan\u0131mlad\u0131ktan sonra bunun formatter nesnesine bildirilmesi gerekecektir. Bu i\u015flem i\u00e7in \u00f6ncelikle <strong>System.Runtime.Serialization<\/strong> namespace\u2019i alt\u0131nda bulunan <strong>SurrogateSelector<\/strong> s\u0131n\u0131f\u0131n\u0131n bir \u00f6rne\u011fi olu\u015fturmal\u0131, ard\u0131ndan da bu s\u0131n\u0131f i\u00e7erisinde tan\u0131ml\u0131 olan <strong>AddSurrogate<\/strong> fonksiyonu yard\u0131m\u0131yla Ogrenci t\u00fcr\u00fc i\u00e7in OgrenciSerializationSurrogate vekil s\u0131n\u0131f\u0131n\u0131n kullan\u0131lmas\u0131 gerekti\u011fini belirtmeliyiz. Bu i\u015fleme dair \u00f6rnek kod a\u015fa\u011f\u0131da bulunabilir;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">SurrogateSelector vekilSecici = new SurrogateSelector();\n\nOgrenciSerializationSurrogate serilestirmeVekili = new OgrenciSerializationSurrogate();\nvekilSecici.AddSurrogate(typeof(Ogrenci), new StreamingContext(StreamingContextStates.All), serilestirmeVekili);<\/pre>\n\n\n\n<p>&nbsp;&nbsp; \u0130\u015f mant\u0131\u011f\u0131m\u0131z gere\u011fi birden fazla s\u0131n\u0131f i\u00e7in serile\u015ftirme vekil s\u0131n\u0131f tan\u0131mlanmas\u0131n\u0131n gerekti\u011fi durumlarda AddSurrogate fonksiyonu ilgili t\u00fcr bilgileriyle birlikte her bir t\u00fcr i\u00e7in \u00e7a\u011f\u0131r\u0131labilir.<\/p>\n\n\n\n<p>&nbsp;&nbsp; Yukar\u0131daki i\u015flemler ard\u0131ndan, haz\u0131rlam\u0131\u015f oldu\u011fumuz vekil se\u00e7icimizi a\u015fa\u011f\u0131daki gibi formatter\u2019\u0131m\u0131za belirterek \u00f6zelle\u015fmi\u015f serile\u015ftirmeye haz\u0131r oluruz;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">formatter.SurrogateSelector = vekilSecici;<\/pre>\n\n\n\n<p>&nbsp;&nbsp; \u015eimdiye kadar anlatt\u0131klar\u0131m\u0131 bir araya toplayacak olursak bu \u00f6zelle\u015fmi\u015f serile\u015ftirme i\u015flemi i\u00e7in gerekli olan kod par\u00e7ac\u0131\u011f\u0131 a\u015fa\u011f\u0131daki gibi olacakt\u0131r;<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">namespace SerilestirmeDeneme {\n    public class Ogrenci {\n        public string Adi;\n        public string Bolum;\n    }\n\n    static class Program {\n        static void Main() {\n            BinaryFormatter formatter = new BinaryFormatter();\n\n            SurrogateSelector vekilSecici = new SurrogateSelector();\n\n            OgrenciSerializationSurrogate serilestirmeVekili = new OgrenciSerializationSurrogate();\n            vekilSecici.AddSurrogate(typeof(Ogrenci), new StreamingContext(StreamingContextStates.All), serilestirmeVekili);\n\n            formatter.SurrogateSelector = vekilSecici;\n\n            Ogrenci ogrenciOrnegi = new Ogrenci();\n            ogrenciOrnegi.Adi = \"Fatih Boy\";\n            ogrenciOrnegi.Bolum = \"Bilgisayar M\u00fchendisli\u011fi\";\n\n            formatter.Serialize(new System.IO.MemoryStream(), ogrenciOrnegi);\n        }\n\n        public sealed class OgrenciSerializationSurrogate : ISerializationSurrogate {\n            public void GetObjectData(Object nesne,\n                SerializationInfo serilestirmeBilgisi,\n                StreamingContext kapsam) {\n\n                Ogrenci ogrenciOrnegi = (Ogrenci)nesne;\n\n                serilestirmeBilgisi.AddValue(\"Adi\", ogrenciOrnegi.Adi);\n                serilestirmeBilgisi.AddValue(\"Bolum\", ogrenciOrnegi.Bolum);\n            }\n\n            public Object SetObjectData(Object nesne,\n                SerializationInfo serilestirmeBilgisi,\n                StreamingContext kapsam,\n                ISurrogateSelector vekilSecici) {\n\n                Ogrenci ogrenciOrnegi = (Ogrenci)nesne;\n\n                ogrenciOrnegi.Adi = serilestirmeBilgisi.GetString(\"Adi\");\n                ogrenciOrnegi.Bolum = serilestirmeBilgisi.GetString(\"Bolum\");\n\n                return null;\n            }\n        }\n    }\n}<\/pre>\n\n\n\n<p>&nbsp;&nbsp; Serile\u015ftirme i\u015flemi s\u0131ras\u0131nda Formatter s\u0131n\u0131f\u0131 her bir t\u00fcr i\u00e7in tan\u0131ml\u0131 bir serile\u015ftirme vekil s\u0131n\u0131f\u0131 olup olmad\u0131\u011f\u0131n\u0131 <em>vekil se\u00e7ici s\u0131n\u0131f\u0131 \u00fczerinden<\/em> sorgular. T\u00fcr i\u00e7in tan\u0131mlanm\u0131\u015f bir serile\u015ftirme vekil s\u0131n\u0131f\u0131 bulunmas\u0131 durumunda ilgili bilgiler ile bu s\u0131n\u0131f\u0131n GetObjectData (<em>e\u011fer bir serile\u015ftirme i\u015flemi ise<\/em>) ya da SetObjectData (<em>e\u011fer serile\u015ftirilmi\u015f bir verinin okunmas\u0131 i\u015flemi ise<\/em>) fonksiyonlar\u0131 \u00e7a\u011f\u0131r\u0131lacakt\u0131r. Bu fonksiyonlar i\u00e7erisindeki i\u015f mant\u0131klar\u0131n\u0131n i\u015fletilmesi sonras\u0131 nesnemiz ba\u015far\u0131l\u0131 bir \u015fekilde serile\u015ftirilebilecektir.<\/p>","protected":false},"excerpt":{"rendered":"<p>&nbsp;&nbsp; Nesnelerin serile\u015ftirilerek saklanmas\u0131 konusunda C# i\u015flerimizi olduk\u00e7a kolayla\u015ft\u0131rmakta. \u00c7o\u011fu zaman s\u0131n\u0131f\u0131m\u0131z\u0131n \u00fczerine yerle\u015ftirece\u011fimiz bir SerializableAttribute ile nesnelerimizi serile\u015ftirilebilir hale getirebiliyor, ard\u0131ndan da BinaryFormatter s\u0131n\u0131f\u0131 yard\u0131m\u0131yla bu nesneleri bir stream\u2019e yazabiliyor ve yine stream\u2019den okuyabiliyoruz. &nbsp;&nbsp; Serializable ve NonSeriazable attribute\u2019leri ve BinaryFormatter s\u0131n\u0131f\u0131n\u0131 kullanmak \u00e7o\u011fu senaryo da bizleri h\u0131zl\u0131ca sonuca ula\u015ft\u0131rsa da malesef ki s\u0131n\u0131f&#8230;<\/p>\n<p><a class=\"read-more\" href=\"https:\/\/fatihboy.com\/en\/ileri-duzey-serilestirme-1\/\">Read More<\/a><\/p>","protected":false},"author":1,"featured_media":17670,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[77,28],"tags":[41,109],"class_list":["post-8410","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-csharp","category-turkce","tag-c","tag-serialization"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.7 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>\u0130leri D\u00fczey Serile\u015ftirme \u2013 1 - Fatih Boy<\/title>\n<meta name=\"description\" content=\"C# ile geli\u015ftirdi\u011finiz uygulamalar\u0131n\u0131zda ileri d\u00fczeyde nas\u0131l serile\u015ftirme i\u015flemi yapabilece\u011fize dair detaylar\u0131 bu makalemde bulabilirsiniz.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihboy.com\/en\/ileri-duzey-serilestirme-1\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\u0130leri D\u00fczey Serile\u015ftirme \u2013 1 - Fatih Boy\" \/>\n<meta property=\"og:description\" content=\"C# ile geli\u015ftirdi\u011finiz uygulamalar\u0131n\u0131zda ileri d\u00fczeyde nas\u0131l serile\u015ftirme i\u015flemi yapabilece\u011fize dair detaylar\u0131 bu makalemde bulabilirsiniz.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihboy.com\/en\/ileri-duzey-serilestirme-1\/\" \/>\n<meta property=\"og:site_name\" content=\"Fatih Boy\" \/>\n<meta property=\"article:published_time\" content=\"2010-10-21T19:49:07+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/fatihboy.com\/wp-content\/uploads\/2010\/10\/907.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1024\" \/>\n\t<meta property=\"og:image:height\" content=\"576\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Fatih Boy\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Boy\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihboy.com\/ileri-duzey-serilestirme-1\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihboy.com\/ileri-duzey-serilestirme-1\/\"},\"author\":{\"name\":\"Fatih Boy\",\"@id\":\"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158\"},\"headline\":\"\u0130leri D\u00fczey Serile\u015ftirme \u2013 1\",\"datePublished\":\"2010-10-21T19:49:07+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihboy.com\/ileri-duzey-serilestirme-1\/\"},\"wordCount\":1092,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158\"},\"image\":{\"@id\":\"https:\/\/fatihboy.com\/ileri-duzey-serilestirme-1\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/fatihboy.com\/wp-content\/uploads\/2010\/10\/907.jpg\",\"keywords\":[\"C#\",\"Serialization\"],\"articleSection\":[\"C#\",\"T\u00fcrk\u00e7e\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihboy.com\/ileri-duzey-serilestirme-1\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihboy.com\/ileri-duzey-serilestirme-1\/\",\"url\":\"https:\/\/fatihboy.com\/ileri-duzey-serilestirme-1\/\",\"name\":\"\u0130leri D\u00fczey Serile\u015ftirme \u2013 1 - Fatih Boy\",\"isPartOf\":{\"@id\":\"https:\/\/fatihboy.com\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/fatihboy.com\/ileri-duzey-serilestirme-1\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/fatihboy.com\/ileri-duzey-serilestirme-1\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/fatihboy.com\/wp-content\/uploads\/2010\/10\/907.jpg\",\"datePublished\":\"2010-10-21T19:49:07+00:00\",\"description\":\"C# ile geli\u015ftirdi\u011finiz uygulamalar\u0131n\u0131zda ileri d\u00fczeyde nas\u0131l serile\u015ftirme i\u015flemi yapabilece\u011fize dair detaylar\u0131 bu makalemde bulabilirsiniz.\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihboy.com\/ileri-duzey-serilestirme-1\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihboy.com\/ileri-duzey-serilestirme-1\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/fatihboy.com\/ileri-duzey-serilestirme-1\/#primaryimage\",\"url\":\"https:\/\/fatihboy.com\/wp-content\/uploads\/2010\/10\/907.jpg\",\"contentUrl\":\"https:\/\/fatihboy.com\/wp-content\/uploads\/2010\/10\/907.jpg\",\"width\":1024,\"height\":576},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihboy.com\/ileri-duzey-serilestirme-1\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/fatihboy.com\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\u0130leri D\u00fczey Serile\u015ftirme \u2013 1\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihboy.com\/#website\",\"url\":\"https:\/\/fatihboy.com\/\",\"name\":\"Fatih Boy\",\"description\":\"Ki\u015fisel Web Sitesi\",\"publisher\":{\"@id\":\"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihboy.com\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158\",\"name\":\"Fatih Boy\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/fatihboy.com\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/5b3de123ad95a2ffe30b75a54cee98b55f65185c6d6805b35088a3d945f2feb4?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/5b3de123ad95a2ffe30b75a54cee98b55f65185c6d6805b35088a3d945f2feb4?s=96&d=mm&r=g\",\"caption\":\"Fatih Boy\"},\"logo\":{\"@id\":\"https:\/\/fatihboy.com\/#\/schema\/person\/image\/\"},\"sameAs\":[\"https:\/\/fatihboy.com\"],\"url\":\"https:\/\/fatihboy.com\/en\/author\/fatih\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"\u0130leri D\u00fczey Serile\u015ftirme \u2013 1 - Fatih Boy","description":"C# ile geli\u015ftirdi\u011finiz uygulamalar\u0131n\u0131zda ileri d\u00fczeyde nas\u0131l serile\u015ftirme i\u015flemi yapabilece\u011fize dair detaylar\u0131 bu makalemde bulabilirsiniz.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihboy.com\/en\/ileri-duzey-serilestirme-1\/","og_locale":"en_US","og_type":"article","og_title":"\u0130leri D\u00fczey Serile\u015ftirme \u2013 1 - Fatih Boy","og_description":"C# ile geli\u015ftirdi\u011finiz uygulamalar\u0131n\u0131zda ileri d\u00fczeyde nas\u0131l serile\u015ftirme i\u015flemi yapabilece\u011fize dair detaylar\u0131 bu makalemde bulabilirsiniz.","og_url":"https:\/\/fatihboy.com\/en\/ileri-duzey-serilestirme-1\/","og_site_name":"Fatih Boy","article_published_time":"2010-10-21T19:49:07+00:00","og_image":[{"width":1024,"height":576,"url":"https:\/\/fatihboy.com\/wp-content\/uploads\/2010\/10\/907.jpg","type":"image\/jpeg"}],"author":"Fatih Boy","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Fatih Boy","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihboy.com\/ileri-duzey-serilestirme-1\/#article","isPartOf":{"@id":"https:\/\/fatihboy.com\/ileri-duzey-serilestirme-1\/"},"author":{"name":"Fatih Boy","@id":"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158"},"headline":"\u0130leri D\u00fczey Serile\u015ftirme \u2013 1","datePublished":"2010-10-21T19:49:07+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihboy.com\/ileri-duzey-serilestirme-1\/"},"wordCount":1092,"commentCount":0,"publisher":{"@id":"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158"},"image":{"@id":"https:\/\/fatihboy.com\/ileri-duzey-serilestirme-1\/#primaryimage"},"thumbnailUrl":"https:\/\/fatihboy.com\/wp-content\/uploads\/2010\/10\/907.jpg","keywords":["C#","Serialization"],"articleSection":["C#","T\u00fcrk\u00e7e"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihboy.com\/ileri-duzey-serilestirme-1\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/fatihboy.com\/ileri-duzey-serilestirme-1\/","url":"https:\/\/fatihboy.com\/ileri-duzey-serilestirme-1\/","name":"\u0130leri D\u00fczey Serile\u015ftirme \u2013 1 - Fatih Boy","isPartOf":{"@id":"https:\/\/fatihboy.com\/#website"},"primaryImageOfPage":{"@id":"https:\/\/fatihboy.com\/ileri-duzey-serilestirme-1\/#primaryimage"},"image":{"@id":"https:\/\/fatihboy.com\/ileri-duzey-serilestirme-1\/#primaryimage"},"thumbnailUrl":"https:\/\/fatihboy.com\/wp-content\/uploads\/2010\/10\/907.jpg","datePublished":"2010-10-21T19:49:07+00:00","description":"C# ile geli\u015ftirdi\u011finiz uygulamalar\u0131n\u0131zda ileri d\u00fczeyde nas\u0131l serile\u015ftirme i\u015flemi yapabilece\u011fize dair detaylar\u0131 bu makalemde bulabilirsiniz.","breadcrumb":{"@id":"https:\/\/fatihboy.com\/ileri-duzey-serilestirme-1\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihboy.com\/ileri-duzey-serilestirme-1\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/fatihboy.com\/ileri-duzey-serilestirme-1\/#primaryimage","url":"https:\/\/fatihboy.com\/wp-content\/uploads\/2010\/10\/907.jpg","contentUrl":"https:\/\/fatihboy.com\/wp-content\/uploads\/2010\/10\/907.jpg","width":1024,"height":576},{"@type":"BreadcrumbList","@id":"https:\/\/fatihboy.com\/ileri-duzey-serilestirme-1\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/fatihboy.com\/"},{"@type":"ListItem","position":2,"name":"\u0130leri D\u00fczey Serile\u015ftirme \u2013 1"}]},{"@type":"WebSite","@id":"https:\/\/fatihboy.com\/#website","url":"https:\/\/fatihboy.com\/","name":"Fatih Boy","description":"Ki\u015fisel Web Sitesi","publisher":{"@id":"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihboy.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihboy.com\/#\/schema\/person\/6b06a41d42eed36eaa0780fbeb774158","name":"Fatih Boy","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/fatihboy.com\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/5b3de123ad95a2ffe30b75a54cee98b55f65185c6d6805b35088a3d945f2feb4?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/5b3de123ad95a2ffe30b75a54cee98b55f65185c6d6805b35088a3d945f2feb4?s=96&d=mm&r=g","caption":"Fatih Boy"},"logo":{"@id":"https:\/\/fatihboy.com\/#\/schema\/person\/image\/"},"sameAs":["https:\/\/fatihboy.com"],"url":"https:\/\/fatihboy.com\/en\/author\/fatih\/"}]}},"brizy_media":[],"_links":{"self":[{"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/posts\/8410","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/comments?post=8410"}],"version-history":[{"count":0,"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/posts\/8410\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/media\/17670"}],"wp:attachment":[{"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/media?parent=8410"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/categories?post=8410"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihboy.com\/en\/wp-json\/wp\/v2\/tags?post=8410"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}