Service oriented architecture, microservices, katmanlı mimari. Bu üç kavrama bakmadan başlama derim. bu üç kavram yalayıp yutayımmı diyorsun yoksa aşına mı olayım hangisi yeterli olur ayrıca nce web versiyonu yazıp daha sonra mobil için çalışma yapsam sıkıntı olur mu yoksa daha en baştan mobil uygulamaya ynelik kodlamam nemli mi? Tada en başta nemsemezsem acı çekermiyim mobil uygulamaya uyarlarken Milyarlarca yıl lüydüm dirildim ve tekrar dirilmemek üzere leceğim günü bekliyorum!

Servislerin hazır olsun da mobili istersen 50 sene sonra yaz bişey farketmezsin bence :D Andolsun kuşluk vaktine ve dindiği zaman o geceye ki, Rabbin sana veda etmedi ve darılmadı! Ve kesinlikle senin için sonu nünden daha hayırlıdır. ileride Rabbin sana verecek de hoşnut olacaksın! O, seni bir yetim iken barındırmadı mı? Seni, yol bilmez iken yola koymadı mı? Seni bir yoksul iken zengin etmedi mi? yle ise, sakın yetime kahretme ! El açıp isteyeni de azarlama! Fakat Rabbinin nimetini anlat da anlat!

Hocalar şimdi yeni bir projeye girişiyorum bu projeyide php ile yazıcam. ama projenin mobil ayağıda olacak bu mobil ayağını json çıktısı vs ler ile yapabiliyorlar yani bi webservis kullanıp rss feed den bile içerik çekebiliyorlar. Benim projeye dha başlarken mobil için çıktı almak adına yapmam gereken birşey var mı? Yani şunları en başta yap sonra sıkıntı çekme dediğiniz veya rss feed json çıktısı vs nin haricinde şu şekilde daha basit olur dediğiniz bir yol var mı? NOT: json rss feed çıktısnıda nasıl alacağımı bilmiyorum açıkçası :D ama ğrenicez bi şekilde konuyu gizliyorum dışardan takip edenler soruyor sonra ne projesi falan filan diye kimseye bi bok anlatasım yok Milyarlarca yıl lüydüm dirildim ve tekrar dirilmemek üzere leceğim günü bekliyorum!

Service oriented architecture, microservices, katmanlı mimari. Bu üç kavrama bakmadan başlama derim. Sen hiç kaval çaldın mı?

Çok güzel bi makale yazmış :D dediklerini uygula projeyi 20 sene geliştirir o dalda en iyi proje seninki olur her gün ekle sil güncelle diye diye yle bi proje yaparsın ki :D basit ama çok sağlam bi proje yaparsın herşeye sen müdahale edersin :) Andolsun kuşluk vaktine ve dindiği zaman o geceye ki, Rabbin sana veda etmedi ve darılmadı! Ve kesinlikle senin için sonu nünden daha hayırlıdır. ileride Rabbin sana verecek de hoşnut olacaksın! O, seni bir yetim iken barındırmadı mı? Seni, yol bilmez iken yola koymadı mı? Seni bir yoksul iken zengin etmedi mi? yle ise, sakın yetime kahretme ! El açıp isteyeni de azarlama! Fakat Rabbinin nimetini anlat da anlat!

İlk soruna cevap: uzmanlaşmak aylarını alır, fikir sahibi olmak yeterli en azından. Birer ikişer sayfa okusan bir şeyler canlanacaktır kafanda. Diğer soruna kısa cevap: sonradan acı çekmek istemiyorsan en baştan mobili de düşünüp o şekilde kurgulaman lazım mimarini. Daha uzun cevap: Dilimin dndüğünce anlatmaya çalışayım, ama kesinlikle bilen birinden ğrenmen daha faydalı olacaktır senin için. Benim yazacaklarım yanlış/eksik bilgiler de içeriyor olabilir. Diyelim ki web uygulaması ile başladın, sql'leri byle php kodlarının arasında yazdın, sorguların çalışıyor ve sistemin hizmet vermeye başladı diyelim. On numara da sistem oldu. Hadi arkada da MySql var diyelim. Bir süre sonra Oracle ya da PostgreSql'in senin için daha faydalı olacağına kanaat getirdin ve diyelim ki MySql'den Oracle'a taşınmaya karar verdin. İlk büyük problem burda başlar. 100 tane PHP dosyasında SQL yazdıysan gidip her bir dosyada tek tek güncelleme yapman gerekecek ve bir yerlerin bozulmadığından emin olmak çok da kolay olmayacak. Üstelik bunu başarmış olsan bile ileride Oracle'dan da vazgeçmeyeceğinin garantisi yok Bu problemi aşmak için ORM kullanmak akla gelen ilk çzüm olacaktır. Araya bir katman daha ekleyerek database'den bağımsız kodlar geliştirebileceksin artık. Artık daha iyi ve esnek bir sisteme sahibiz. Peki yeterli mi? Hatır. Database bağımsızlığını aştığımızı varsayalım ama dataların tek kaynağı database olmayabilir. İleride dosya sistemi, REST ve/veya SOAP webservice, message broker / queue, cache, NoSql db.. gibi yerlere de ihtiyaç duyulabilir. Buralardan veri okuman ya da buralara da yazman gerekebilir. Bunun için ORM de yeterli olmayacak. Sistem en başta sadece database'den çalışacakmış gibi tasarlanırsa, bunlardan herhangi bir tanesi bile işin içine girerse ne kadar çok editleme/güncelleme yapman gerektiğini hayal edebiliyorsundur. Kısaca demek istediğim data/persistance katmanını, sistemin geri kalanından izole edebilmelisin ve bağımsız çalışacak ayrı bir katmana çevirmeye uğraşmalısın. . Android client'ın ya da web client'ın data'nın nereden geldiği ile bir ilgisi olmaması lazım. Onlar sadece talep edecekler ve istedikleri şey nlerine gelecek. Data katmanını sistemin geri kalanından izole ettik diyelim. Artık ilk duruma gre çok daha iyi bir mimarimiz var. Peki yeterli mi? Tabi ki hayır. Çünkü hala iş yapan kısımlar ile kullanıcıya açılan arayüz iç içeler. En basitinden sisteme bir bootstrap giydirmeye çalışsan, database ya da işin kendisi ile ilgili kısımlara dokunmayacağının garantisi yok. Oysa tek ihtiyacımız bir miktar HTML/CSS olayıydı. Bunu sağlamak için de data katmanı dışında kalan sistemi yine en az iki katmana blmemiz gerekiyor. Çook genel olarak arayüz ve iş mantığının dndüğü kısımlar diyebiliriz. Bylece arkada hangi persistance sistemi olursa olsun, arada ne işler ne manipulasyonlar dnüyor olursa olsun, arayüzde istedğin gibi taklalar atabilirsin. Reel hayattan aklıma gelen ilk rnek Wordpress temaları olabilir. Database'e hiç dokunmadan, arkada dnen blog sisteminde hiçbir şey aksamadan siteyi istediğin her gün yepyeni bir siteye çevirebilmene olanak sağlıyor adamlar. Temelinde bütün bu katmanları birbirinden max. bağımsızlık ile ayırmış olmaları yatıyor. Data, iş ve arayüz olarak sistemimizi katmanlara bldük ve çalışır olmasını sağladık. Artık ilk duruma gre çook daha iyi, daha nceki durumlara gre yine daha iyi durumdayız. Peki yeterli mi? Sadece web uygulaması istiyorsan yeterli ama mobil de olsun diyorsan hayır, sistemi geliştirmeye devam :) Mobil için neler yapmalı kısmına geçmeden nce bir virgül koyalım, buraya kadarkilerin doğru düzgün ifade edilmiş hallerini ğrenebilmen için birkaç keyword ekleyelim. Google'da bakarsan benim yazdıklarıma nazaran çok daha faydalı olabilecek şeyler bulabilirsin. ORM tools N-tier architecture / multitier architecture Three-tier architecture MVC MVP MVVM Bonus: http://martinfowler.com/eaaDev/uiArchs.html Şu ana kadar hazırladığımız kadarıyla nurtopu gibi bir ORM tool'u da kullandığımız, n-tier architecture üzerine kurulu bir MVC uygulamamız var. M bizim sistemdeki data katmanına tekabül ediyor. V komple arayüz tarafına denk geliyor . C ise bu iki katman arasında bulunan, bütün iş mantığının dndüğü katman. Tekrar ediyorum, şu yularıdaki listedeki her şeye düzgün kaynaklardan ayrıca bak. Birer ikişey sayfa da olsa faydalı olacaktır. Şimdi gelelim web dışındaki clientlara. Aynı sistemin native iOS, Android, Windows Phone, Windows masaüstü, Linux/Mac masaüstü ve otomobil konsolunda çalışan versiyonları da olsun istiyorsun. İlk paragrafta belirttiğim senaryoda çalışan sistemimize bunları istiyorsak çok acılı ve cefalı bir yola girmemiz gerekiyordu ancak son versiyonumuzda daha az emek ile çok daha kısa sürede ve esnek sistemler geliştirebileceğiz. Web uygulamasındaki view katmanının neye ihtiyacı varsa, diğer tüm clientların da en fazla onlara ihtiyacı var. Yani zaten iki farklı katman bizim ihtiyacımız olan her işi yapabiliyorlar. Aslında burda olay min. 2 farklı senaryoya ayrılıyor. 1. View' katmanının Controller katmanına doğrudan bağlı olduğu senaryo. Sonuçta aynı ekosistem üzerinde çalışıyorlar. 2. Controller katmanından faydalanacak olan tüm view controller'a doğrudan erişmek yerine bir API üzerinden eriştiği senaryo. Sadece web için çalışıyorsan iki senaryo da uygun ancak diğer clientlar işin içine giriyorsa mecburen en baştan ikinci senaryoya uygun gitmen gerekiyor. SOA kısmı burada devreye giriyor. Hiçbir client data katmanına doğrudan erişemiyor, ancak iş katmanı üzerinden erişebilirler. İş katmanına da bir RMI veya Restful service ya da SOAP Webservice üzerinden erişebilirler. @MhmdAlmz biraz bahsetmiş zaten. Eğer deme sistemleri/bankacılık seviyesinde bir güvenlik sz konusu değilse en temiz yntem RESTful bir servis ile iş metodlarını dışarıya açıp, isteyen client'ın onları kullanmasına izin vererek devam etmektir. Buna web client'ın da dahil. Microservices denilen hede grece yeni bir akım ve henüz bizim topraklara tam anlamıyla uğramış değil. Başlangıç için yok sayabilirsin. Yukarıda yazdıklarım arasında gzünü korkutan bir şey varsa lütfen korkutmasın, toplamda en fazla 20-30 sayfa yazı okuyarak çoğu hakkında fikir sahibi olabilirsin. Ayrıca forumdaki bazı arkadaşlar Laravel diyeceğim için kızacaklar ama, Laravel kullanarak çok hızlı, esnek, güvenli ve basit bir şekilde bu sistemi ortaya çıkarabilirsin. . Şyle basit bir rneğe gz atabilirsin: https://selftaughtcoders.com/from-idea-to-launch/lesson-17/laravel-5-mvc-application-in-10-minutes/ İlk postta PHP dediğin için yazı içinde PHP spesifik rnekler var ama bunların hiçbiri PHP'ye zel şeyler değil. Tamamı Java, . net, Ruby, Node.. gibi diğer platformlar için de geçerli. Sen hiç kaval çaldın mı?

Mobil de Json çıktı alacaksan SOA ya kesinlikle bakman lazım. Web servis den Header ile bile veri gnderebiliyorsun mantık aynı. Curl ile aldığın veriler var ya php de aynı şekilde mobil taraflı sitenin çıktısını Json olarak alıp header body falan ayrıştırıyorsun.. Header ve body ile bile veri gnderebilirsin. güvenlik tarafında iyi oluyor genelde. Sorun olursa pm deyim hocam. Basit birşey zaten çok zor değil fakat bazı olaylar var güvenlik tarafında. Servislerini gizlemen lazım 1 2. de url ler bulunsa bile veri çekmemeleri lazım Authentication yani. Projenin büyüklüğüne gre daha başka nlemler alınabilir konunu altına ufaktan konunun büyüklüğünden bahsedersen ek şeyler gerektirebilir. Satın alma işlemleri falan da olursa iş çok sıkıntıya girer. RESTFULL APİ lere de bakman lazım zaten ya REST Olur yada SOAP bu konu çok uzun yapacağın işe gre değişkenlik gsterebiliyor. + ları ve - leri var ikisinin de. SOA, REST, UDDI, WSDL Bu 4 veri işini grür zaten hepsi webServisin bacakları gibi bişey yanlış ifade de olabilir :D EDİT ;SOA=Service oriented architecture zaten yazılmış sorry :D MhmdAlmz tarafından 22/Haz/16 01:12 tarihinde düzenlenmiştir Andolsun kuşluk vaktine ve dindiği zaman o geceye ki, Rabbin sana veda etmedi ve darılmadı! Ve kesinlikle senin için sonu nünden daha hayırlıdır. ileride Rabbin sana verecek de hoşnut olacaksın! O, seni bir yetim iken barındırmadı mı? Seni, yol bilmez iken yola koymadı mı? Seni bir yoksul iken zengin etmedi mi? yle ise, sakın yetime kahretme ! El açıp isteyeni de azarlama! Fakat Rabbinin nimetini anlat da anlat!

@Nvidia, Hocam Şuan Json falan çıktı alıp okuyabiliyorum bi uygulama da yaptım bununla ilgili. Eğer çzemedi isen rnek bi uygulama üzerinden bakalım :) Andolsun kuşluk vaktine ve dindiği zaman o geceye ki, Rabbin sana veda etmedi ve darılmadı! Ve kesinlikle senin için sonu nünden daha hayırlıdır. ileride Rabbin sana verecek de hoşnut olacaksın! O, seni bir yetim iken barındırmadı mı? Seni, yol bilmez iken yola koymadı mı? Seni bir yoksul iken zengin etmedi mi? yle ise, sakın yetime kahretme ! El açıp isteyeni de azarlama! Fakat Rabbinin nimetini anlat da anlat!