06 Ocak 2008

Bir Delinin Hatıra Defteri

Gogol'un "Bir Delinin Hatıra Defteri" oyununu tekrar okurken Gogol'ın Google a kelime olarak çok benzediğini farkettim. O anda kafamda 20 yıl sonra yazılacak bir başarı (veya sonradan başarısızlık) öyküsünün ismi belirdi. "Google,İki delinin hatıra defteri". Şu an bile aslında Google için yazılmış başarı öyküsü veya firma hikayesi şeklinde çok sayıda kitap var. Belki de şu ana kadar yazılanlar o kitap için bir önsöz niteliğinde kalacak. Zaten adı üstünde anı kitabı, tahmin yürütmeye gerek yok.

Google'ın iş yaşamında bir devrimin öncüsü olduğunu kabul edersek, aslında iki deli tanımlaması çok da uzak olmaz. Peki delilik nedir veya iş yaşamında fark yaratmak için illaki deli mi olmak gerekir? Aslında ikisinin de deli kalıbına pek uymayacağını söyleyebiliriz fakat bu süreçteki bazı tercihler biraz delilik gerektirmiştir.



Ben fark yaratmanın normalin üstü ve dahilik arasında bir yerde olduğunu düşünüyorum. Yani kesinlikle ezber bozacaksınız ama bu ezberi yani şu anki genel yaşanan hayatı uzaktan da olsa göreceksiniz. Bu tanım aslında kendi konumumla da çok alakalı olan internet girişimlerinde başarılı olmak konusuna uygun düşmekte. Aslında Google kesinlikle donanım ve yazılım anlamında bazı disiplinleri bir araya getirmiştir. Fakat daha farklı olarak Facebook benzeri girişimlere baktığımızda bunu tam anlamıyla söylemek zor. Kesinlikle farklı kurgular ama sosyolojik ve psikolojik boyutlarıyla de düşünülmüş yapılar. Aslında deli veya dahi olarak tanımlayabileceğimiz kişilerin de genel olarak az alanda kendini aşmış ama diğer alanlardan tamamen kopmuş olduğunu söyleyebiliriz. Farklı olmak ikisinin ortasında bir noktada kesişiyor: Hayatı çok iyi bilen ama ezber bozan.

Anı kitabı yazmak herkesin yaptığı bişey. 40 yıllık bir yönetmenden tutun meşhur olmak için memleketini terkeden şöhret adayına kadar. Aslında herkesin yazılacak bir hikayesi var. Kendileri veya başkaları tarafından.

Belki de günün birinde Sergey ve Larry'nin yolları ayrılır ve bu kitap birisi tarafından "Bir Delinin Hatıra Defteri" olarak yazılır. Kalan mı daha deli olur yoksa giden mi bunu kestirmek zor :)

31 Aralık 2007

2007'nin Bıraktıkları

Blog okuyanlar mutlaka yaşamıştır. Tesadüfen bir kaç ay önce yazılmış gündemle alakalı bir yazıya rastlarsınız. Yazı derinlemesine yazılmış ve onlarca yorum yapılmıştır. Konunun sıcaklığı geçip bir de aradaki geçen zamanın olgunluğu eklendiğinde yorumlar biraz daha duru bir şekilde olur. Ama blogların dinamikleri itibariyle o kadar eski bir yazıya yorum yapamazsınız. Ama insan kendi yazdığı yazıya yorumlar ve eklemeler yapabilir galiba :) Ben de bu kategoriye giren bir kaç yazı seçtim bir kaç küçük ekleme yapmak istedim.

Veritabanı ve Pazarlama
İnternetin pazarlama faaliyetlerinde kullanılmaya başlanmasının ülkemiz için yeni olduğunu söyleyebiliriz. Bilgi toplama konusunda zamanla daha doğru düzgün yöntemler kullanılmaya başlanıyor. Ama hala buradaki en ciddi problem bu tarz işlerin teknik olmayan veya yeterli düzeyde donanıma sahip olmayan kişiler tarafından üstlenilip yönlendirilmesi.

Web 3.0 ve Servis Odaklı Mimari
Burada tekrarlamak istediğim şey, bu standartların bir moda gibi düşünülüp kendi başında değerlendirilmemeleri. Kullanım alanına uygun olarak bu parçalardan doğru olanları uygulamalara yerleştirmemiz.

Web 3.0 yazılımcısı olmak
Artık kaliteli uygulamalar için web platformunda web yazılımcılarının değil daha nitelikli yazılımcıların çalışması gerektiğinden bahsetmiştim. Aslında o günlerde piyasada nitelikli yazılımcı bulmanın zorlaştığı bir döneme girdik. Böyle bir ortamda bu ne kadar mümkün olacak tartışılır.

Programlanabilir Web
Google'ın Open Social ile Facebook un karşısındaki gövde gösterisi Türkiye için kayda değer bir sonuç vermedi aslında. Facebook için geliştirilen uygulamalar hızla artıyor. Zamanla artık ayakta kalabilen saman alevi gibi olmayan uygulamarın daha revaçta olacağını düşünüyorum. Ama bunun da ne kadar süreceğini yine bekleyip göreceğiz.

Herkese mutlu yıllar :)

11 Aralık 2007

Veritabanı İsimlendirme Kuralları

Kod yazma standartlarında bazı isimlendirme notasyonları kullanılmaktadır. Database nesneleri için de bazı standartlar önerilmekte. Aşağıda bu standartları derleyip kendi yorumlarıma göre değiştirerek bir kaç madde listelemeye çalıştım. İsimlendirmede genel olarak Pascal Case kullanılmaktadır.

Tablo isimlendirmesi:
  • Tablo isimleri çoğul olmalıdır şeklinde bir kural var. Fakat çift kelimeli tablolar kullandığımızda bir sıralama problemi yaşamamız mümkün. Yani Users ve UserAnswers şeklinde bir sıralamada UserAnswers daha önde olur. Bu yüzden şahsi görüşüm temel tabloları tekil olarak isimlendirmenin daha doğru olduğu yönünde.
  • Birden fazla kelimeli tablo isimlerinde sadece son kelime çoğul olmalıdır. Örneğin UserAnswers.
  • tbl gibi bir prefix hiç bir anlam ifade etmediği için kullanılmamalıdır. Prefix olarak projenin kısaltılması kullanılabilir. Örneğin Google Analytics projesi için GaUser şeklinde bir isimlendirme olabilir.
  • Tablo isimlerinde _ kullanılmamalıdır
  • SQL cümlelerinde SQL terimlerinin tamamı büyük harfle kullanılmalıdır
  • Developer dışında kişilerin de database i kullanma ihtiyacı olacağı için hiç bir kısaltma kullanılmamalıdır
  • Çoka çok ilişkilerde iki tablo ismi de çoğul kullanılması önerilir. Ama son kelimenin çoğul kullanılma kuralı ile karmaşa yaratacağı için bu durumda da son kelimeyi çoğul olarak kullanmak daha tutarlı olacaktır. Örneğin EmployeeCustomers



Kolon isimlendirmesi

  • User tablosu için UserId alanı key alan için kullanılabilir. Fakat SQL Server'da I küçük harfle i nin karşılığı olmadığı için dilimize özgü olarak tüm Id ifadelerinin id olarak yazılmasını öneriyorum. Örneğin Userid,Cityid.
  • Yabancı anahtarların isimleri ana tablodaki alan isimleriyle aynı olmalı. Örneğin City tablosunda alan Cityid olarak kullanıldıysa id değerin tutulduğu User tablosunda da Cityid olarak kullanılmalıdır.
  • Birden fazla alanın PK olduğu tablolarda id isiminde bir alan kullanılmamalıdır.
  • Kolon isminde kln, fld gibi prefixler kullanmak gereksizdir. Sadece alan IntUserid şeklinde alan tipi prefix olabilir ama bu da pek önerilen bir şey değildir.
View isimlendirmesi
  • Vw prefix iyle başlamalıdır.
  • İki tablo join edilerek bir view oluşturuluyorsa isimde iki tablo da kullanılmalıdır.
SP isimlendirmesi
  • Create,Get,Update,Delete,Set gibi fiil ifadeler isimde prefix olarak kullanılabilir. Örneğin GetUserInformation.
  • "sp_", "xp_" veya "dt_" gibi prefixler kullanıldığında önce master tabloya bakılıp aranacağı için bir performans kaybı yaratır. Kesinlikle kullanılmamalıdır.

18 Kasım 2007

Full Text Index

Yoğun sorgulamalarda indeksler bize performans artışı sağlar. Fakat klasik indeksleri her alan tipi için kullanamayız. Text ağırlıklı alanların indekslenmesi için Sql Server üzerinde Full Text Search isimli ekstra bir servis bulunmakta. CHAR, NCHAR, VARCHAR, NVARCHAR, TEXT, ve NTEXT alanları indekslenmesini sağlamakta. Tek şart bu indeksin yapılacağı tabloda bir tane tekil alan bulunması.

Full Text Search servisinin algoritmasına ulaşamadım ama tahminimce bu tekil alanla birlikte varolan text ifadenin kelimeler olarak farklı satırlara bölünmesi şeklinde.
Yani
1, "bugün hava güzel"

şeklinde bir kayıt varsa bu kayıt
1, "bugün"
1, "hava"
1, "güzel"

şeklinde 3 kayıt olarak eklenir ve diğer satırlarla birlikte text alan üzerinde tekrar bir indeksleme yapılır. Eğer "bugün" kelimesini sorgularsak direk indekslenmiş datadan sonuç gelir ve içinde "bugün" geçen kayıtlar kolayca bulunabilir. Biz de aslında bu mantıkla kendimize özel servisleri yazabiliriz. Bu şekilde algoritma sadece kendi isteğimize cevap vereceği için daha fazla performans yakalayabiliriz. Tabii ki database sistemleri kendi algoritmalarında sistem üzerindeki kendi nimetlerinden faydalanmakta.

Bir Full Text Index tanımlamak için öncelikle Database-Storage altında yeni bir Full Text Catalog oluşturulur.Database özelliklerinden Files sekmesinde "Use full-text indexing" seçeneği aktif hale getirilir.İstediğimiz kolon üzerinde sağ tuş ile FullText Index ekleyebiliriz.
FREETEXT
FREETEXTTABLE
CONTAINS
CONTAINSTABLE
şeklinde 4 kullanımı var.

SELECT testtable
FROM textcolumn
WHERE FREETEXT (textcolumn, 'bugün' )

textcolumn kolonu üzerinde "bugün" geçen tüm kayıtları listeleyebiliriz. Diğer komutlarla daha farklı seçenekler mevcut.

02 Kasım 2007

Programlanabilir Web

Facebook'un bu kadar hızla hayatımıza girip kullanıcı ve altyapı bazında bazı devrimler yaratmasıyla birlikte aslında web 3.0 ın programlanabilir web standartı yavaş yavaş yaygınlaşmya başladı. Web 3.0 yazılımcısı profilinde olabilecek değişikliklerden bahsetmiştim. Google'ın facebook a karşı oluşturduğu OpenSocial'da facebook tan daha rahat bir geliştirme ortamı sunacakları vaad ediliyor. FBML gibi ekstra kuralları öğrenmenin gerek olmayacağı gibi. Tabii ki diğer sosyal ağ ve benzeri platformların rekabet ortamı için bunu yapması kaçınılmaz gibi görünüyor.

Çok geriye gitmeden herhangi bir web tabanlı uygulamasında döviz bilgilerini göstermek için harcadığımız çabayı ele alalım. Bir bankadan bu bilgiyi almamız arada bir iş ortaklığı yoksa hala zor gibi görünüyor. Burada aslında kritik nokta verinin değerli olmasıydı. İçerik sağlayıcı bu içerik için bir maliyet harcıyor ve doğal olarak bunu ücretsiz vermiyordu. Web 2.0 ın içeriği kullanıcının yaratması özeliğiyle aslında maliyeti çok da fazla olmayan bir veri topluluğuna sahip olunabiliyor.

Bir facebook uygulamasından örnek verelim. Siz benim yazdığım bir facebook uygulamasını kullanmaya başlarsanız ben geliştirici olarak sizin ve arkadaşlarınızın profil bilgilerini alabiliyorum. Burada insanların facebook kullanırken açık olma özelliğini varsayarsak bu ayrıntı çok da önemli değil. Yani CRM kapsamında insanların çok büyük maliyetlerle elde ettiği profil bilgilerine ulaşmak mümkün oluyor. Bunu sadece sosyal ağ ile sınırlandırmazsak business anlamında çok daha fazla açılım yapması muhtemel görünüyor.

İdris Cin'in belirttiği şekilde sadece programlanabilir web uygulamaları için uygulama geliştiren yazılımcılar oluşmaya başlayacak. Diğer taraftan veriyi elde etme maliyetlerinin düştüğünü varsayarsak bu verilerin bilgiye dönüşme ve bunların gerçek uygulamalarda bir aksiyon olarak kullanılma konusu daha da önem kazanacak. Aslında şu aralar her şeyin daha hızlandığı ve belirsizliğin arttığı, stratejilerin anlık olarak değişebileceği bir döneme giriyoruz. Daha fazlasını bekleyip göreceğiz.

28 Ekim 2007

Assocıatıve (Çağrısımsal) Model Database

Web 3.0 'ın mimari anlamındaki yaklaşım değişikliğinden ve semantic web kavramının merkezine yerleşmesinden bahsetmiştim. Bir database mimarı veya tasarımcısının web 3.0 ile birlikte bir takım değişikliklere maruz kalması muhtemel. Veritabanı sistemlerinde köklü bir değişliklik olan ilişkisel veritabanı tasarımının yerini web 3.0 da associative (çağrışımsal) model tasarıma kısmen bırakabileceğini söyleyebiliriz.

Aslında ilişkisel veritabanı modelinin daha katı kuralları olan ve net veriler söyleyen bir model olduğunu söyleyebiliriz. Semantic web in doğası da aslında metadataya (veri hakkında veri) dayanmakta. Yani herşeyin siyah ve beyaz olmayıp gri tonların değerlendirilmesi; bir nevi bulantık mantık yaklaşımı.

Bir giriş niteliğinde fikir oluşması açısından Mike Griffiths 'in 2001 yılında yazdığı makaledeki örnekler üzerinde duracağım.




Verilerimiz aşağıdaki cümleler olsun.

"Red is a Colour"
"Mary is a Vegetarian"
"Vegetarians eat Plants"
"Cardiff is located in Wales"
"Wales is part of the UK"

Bu verileri ilişkisel bir veritabanında tutmak isteseydik çeşitli unsur tablolarına ve özelliklerinin tutulacağı ilişkisel tablolara ihtiyaç duyacaktık. Ama 5 cümlenin de birbirinden alakasız fiil ve özellikler içermesi sebebiyle ilişkisel model bir hayli zahmetli olacaktı.

Associative model kullanarak bu cümleleri saklamak istediğimizde 2 tabloya ihtiyacımız olacak. İlki nesne, fiil ve özelliklerin saklandığı Items tablosu, İkincisi ise bu item ların ilişkilerinin tutulduğu Links tablosu

Items

Items (1. tablo)

Identifier Name (Tablo alanları)
12 Red
41 Is a
76 Colour
14 Mary
81 Vegetarian
43 Eats
82 Plants
15 Ski Lessons
39 Start at
83 08:00
42 On
85 Sunday


Links (2. tablo)

Identifier Source Verb Target (Tablo alanları)
101 12 41 76
103 14 41 81
124 81 43 82
105 15 39 83
107 105 42 85

Burada göze çarpan en önemli nokta link tablosundaki bir elemanın farklı bir elaman içerinde bir kaynak olarak kullanılabilmesi. Verileri dikkatli bir şekilde incelediğinizde sanırım bu model hakkında bir miktar fikir sahibi olacaksınız.

Note:This picture has been taken from flickr.

01 Ekim 2007

Web 3.0 Yazılımcısı Olmak

Web uygulamalarının yaygınlaştığı yıllarda yazılım geliştiriciler arasında yazılım geliştirici ve web yazılımcısı şeklinde iki kategori oluştu. 2. grupta yer alan kişiler genelde çok detaylı kod bilgisi ve tecrübesi olmayan, asp ve php gibi script dilleri kullanabilen, bunun yanında html, javascript, flash bilen ve hatta tasarım yapabilen kişiler durumuna geldiler. Ülkemiz web yazılım piyasası düşünülürse aslında bu tarz ihtiyaçlar için deneyimli ve mektepli yazılımcılar yerine kendisini bu alanda geliştirmiş farklı yerlerden gelen web yazılımcıları maaş olarak daha cazip olduğu için bu pozisyonlarda çalıştırıldı. Bu süreçte web yazılımcısı kavramı ortaya çıktı.

Ben web 3.0 ile birlikte bu 2. grubun işlevselliğinin azalacağını düşünüyorum. Çünkü servis odaklı mimarilerde web sayfaları sistemin merkezi değil bir parçası konumuna geliyor. Bu modelde işleyen yapıların görünmeyen kısmının görünen kısmından daha etkili olacağı düşünülürse web sayfalarının kullanım oranının düşmesi beklenen bir sonuç olacaktır.

Ülkemizde hala yükselmekte ve yaygınlaşması sürmekte olan bir konu olduğu için bu trendlerin işleyisi zamansal olarak biraz farklılık gösterecektir.

Artık bir web yazılımcısından çok iyi bir database tasarımı, performanslı ve güvenilir servisler ile bunların çerçevesinde ciddi altyapılar beklenecektir. Bu beklenti de sanırım birinci gruptaki yazılım odaklı kişilerin yöneleceği bir boşluk olacaktır.







Son günlerin trend sitesi Facebook'u web 3.0 ve bu geçiş süreci için örnek kabul edebiliriz. Facebook bir web sitesi, ama aynı zamanda bir uygulama geliştirme platform altyapısı sunuyor. web 3.0'ın programlanabilir web tanımlaması da aslında bunu gerektiriyor.

Web 3.0'ın bir diğer odağı semantic web için de durum aynı şekilde. Artık database işlemleri kayıt ekle, sorgula sürecinden çok fazla uzaklaşıyor. Geliştiriciden ihtiyaca çözüm olacak algortimaları öğrenmesi ve kullanması beklenecektir. Üzerinde biraz daha kafa yorulması bir gereklilik olacaktır.

Aslında burada bahsettiğimiz konu büyük web uygulamalarının gideceği bir yol gibi görünse de zamanla her web uygulamasından servis beklentisi olacaktır. Örneğin başka platformlara servis vermeyen bir e-ticaret sitesinden bahsedemeyeceğiz. Kişisel web sitelerinde dahi rss benzeri hizmetlerin olması kaçınılmaz. Bu durumda da tüm bu servislere uygun derli toplu altyapılar olacaktır. Aslında web sitelerinin veritabanlarına ve bunun etrafındaki servislere dönüşeceğini söyleyebiliriz.

Bir çoğumuzun programcılığı öğrendiği lokal uygulamaların artık büyük ölçüde değerlerini yitirmesi gibi web uygulama geliştirmenin de zamanla değerini yitireceğini söyleyebiliriz.

İşin ilginç yanı bunları hala web uygulamalarının daha yeni yeni oturduğu ve büyüyen bir trend izlediği bir ülkeden söylememiz. Web 2.0 'ın "geldi, yaşandı, bitiyor" veryansınları arasında hala anlaşılamaması ve hala yeni bir yaklaşım gibi sunulup insanları heyecanlandırması gibi.

Note:This picture has been taken from flickr.

28 Eylül 2007

Newid Ve Newsequentialid Arasındaki Fark

NEWSEQUENTIALID SQL Server 2005 ile gelen yeni bir fonksiyondur.
Database'in GUID üretmesi için kullandığımız NewId ile, default değeri artan sayı olan durumların birleşimi olarak düşünebiliriz. Yani sıralı Guid üreten bir fonksiyon.
Bu fonksiyon sadece default değer olarak kullanılabilir. Kullanımı aşağıdaki şekildedir.

create table test(
colA uniqueidentifier DEFAULT NEWSEQUENTIALID(),
colB varchar(20)
)

insert into test (ColB) values ('aa')
insert into test (ColB) values ('bb')
insert into test (ColB) values ('cc')
insert into test (ColB) values ('dd')

eklemeleri sonucunda ColA varsayılan değer olarak aşağıdaki şekilde oluştu.

6EAF72CF-E96D-DC11-BD20-0011D8A6F316
6FAF72CF-E96D-DC11-BD20-0011D8A6F316
F0D309E7-E96D-DC11-BD20-0011D8A6F316
F817F4F1-E96D-DC11-BD20-0011D8A6F316

Fakat bu fonksiyon güvenlik gerektiren bir uygulamada kullanılamamalıdır. Çünkü değerler sıralı olduğu için kolayca tahmin edilebilir. Bu durumda NewId daha doğru bir tercih olacaktır.

24 Eylül 2007

And Operatörü ile Sorgulama

Veritabanı sorgulamalarında and ifadelerine sahip cümle grubunda 1. şartın sağlanmaması durumunda diğer şartlar kontrol edilmez. Bu durumda and ifadesi öğelerinde en hızlı çalışacak koşulu önce yazmak bize performans kazancı sağlayacaktır.

Örnek verecek olursak;

Bazı durumlarda bir değerin bulunan kayıta göre iki farklı alandan alındığı durumlar olabilmekte. Örneğin müşteri tablomuzda name,surname ve firmname isimli alanlar olsun.
Name ve surname alanları boşsa müşteri ismi firmname kolonundan alınsın.

Eğer biz A ile başlayan müşterileri sorgulamak istersek;

(name like 'A%' and firmname is null) or (firmname like 'A%' and name is null)

şeklinde yazabildiğimiz sorguyu ;

(firmname is null and name like 'A%' ) or (name is null and firmname like 'A%')

şeklinde yazarsak daha performanslı çalışır. Performans kazancı koşulların çok olduğu cümlelerde artacaktır.

19 Eylül 2007

Web 3.0 ve Servis Odaklı Mimari

Web 2.0. ın Ajax dışında kayda değer bir yazılım yeniliği getirmediğini, tasarım ve kullanıcı odaklı yeni yaklaşımlar olduğunu söyleyebiliriz. Web 3.0 da ise roller tamamen değişiyor. Web uygulama mimarisinin değiştiğini söylemek yanlış olmaz . Bir kaç yıldan beri sıkça duyduğumuz SOA (Servis odaklı mimari) kavramı Web 3.0 ın temeline yerleşiyor. Aslında Web 3.0 bir çok otorite tarafından bir web versiyonu olarak görülmüyor. Web sayfaları artık sistemin sadece bir arayüzü haline geliyor. Sistem tamamen servislerden oluşuyor. Amazon ve ebay canlı örneklerini verebiliriz. Şu anki yapıda, siz aynı altyapının sağladığı api veya web servisleri kullanarak kendi sitenizden satış yapabiliyorsunuz. Bunu mobil uygulamalara veya televizyondan satış gibi farklı ortamlara taşımak mümkün olacaktır. Bu süreç içerisinde amazon.com web sitesi de arayüzlerden biri haline geliyor. Yemeksepeti'nin Digiturk kanalından sipariş alma uygulamasını örnek verebiliriz. Uçuk örnek verecek olursak bir gıda perakendecisinin servislerini kullanarak buzdolabınızdan alışveriş yaptırması mümkün olabilir. Tabii ki kış aylarında pek tercih edilecek bir durum olmasa gerek :)

Burada bir parantez açmak gerekirse bunlar zaten hepimizin bir şekilde uyguladığı ve kullandığı yapılar. Web 2.0, Web 3.0 veya herhangi bir yaklaşımı sıfırdan oluşan şeyler olarak düşünmemek gerekiyor. Sadece benzer özelliklerin bir grupta toplanıp ortak standartların yakalanması olarak düşünebiliriz. Yoksa siz zaten web 2.0, web 3.0 veya herhangi bir standart özelliğini kullanıyor olabilirsiniz. Ayrıca uygulamanın sadece bir standart özellikleri de taşıması şart değil.

.net ve java web servisleri de aslında benzer bir ihtiyaç için çıkmıştı. Bir .net geliştiricisinin uygulamasının bir parçasını başka platformda uygulama geliştiren bir partiyle paylaşmasını sağlıyordu.


SOA kavramı ile beraber ikinci büyük yeniliğin semantic web olduğunu söyleyebiliriz. Semantic web, Hakia arama motoru ile bilinirlik kazanan mantıksal arama yaklaşımı. İçeriğin anlamını anlamaya odaklı bir yöntem. Klasik indeksleme ile bir web sayfası içerdiği kelimelere göre indekslenirken, bu yaklaşımda web dökümanının tümü düşünülerek bir indeksleme yapılmaktadır. Yani herhangi bir kelime, sadece gerçek anlamıyla değil bulunduğu konum itibariyle de anlamlandırılımaktadır. Semantic web için temel veri modeli olarak RDF (Resource Description Framework) kullanılabilir.

Bu arada .net versiyonlarının versiyon numarası ve özellik olarak web versiyonlarıyla beraber gitmesiyle Microsoft'un bu standartları kabul ettiği ve önem verdiği sonucunu çıkarabiliriz.

Başka bir açıdan bakarsak Web 2.0 aslında bir sosyal ağ patlaması yaratmıştı. Birbirine çok benzeyen ama kurgu olarak farklılık gösteren çok sayıda site geliştirildi. Web 3.0 'ın Web 2.0'ın içerik nimetlerinden faydalanıp veri analizi konusunda odaklanması muhtemel. Diğer taraftan SOA mimarisiyle daha çok iş ihtiyaçlarını karşılayacağını ve bu tarafta yeni açılımlar yaratacağını düşünüyorum.
Note:This picture has been taken from http://www.instamedia.org/ web site.