Şimdi Ara

Java backend ve frontend

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
20
Cevap
1
Favori
2.215
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
1 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Merhabalar.
    Soruma geçmeden önce kısaca birşeyler bahsetmek istiyorum. Ben java backend teknolojileri ile uğraşan birisiyim. Ağırlık Spring üzerine yoğunlaşıyorum. Belli başlı bazı projeler yaptım. Ancak frontend developmen alanında çok bilgili değilim. Spring mvc ile çalışırken view kısmında en fazla bootstrap kullandım.
    Ancak son zamanlarda Vuejs öğrenip frontend uygulamalar deniyor, öğreniyor ve açık kaynak hazır templateleri indirip inceleyip anlayabilecek kadar biliyorum.Bilirsiniz neredeyse her js frameworkün CLI var. Bende bu şekilde geliştirme yapıyorum, anlayacağınız NPM ile geliştiriyorum.

    Kısaca bahsettikten sonra asıl soruma geçeyim.

    Başlıkta yazdığım gibi, backend tarafını java teknolojileri ile yazıp -tercih spring-, frontend de ise gelişmiş bir frontend framework teknolojileri -angular,react,vue- - -webpack,eslint,npm vs- ile geliştirme yapmak istiyorum.
    Görünüşte iki farklı projeyi nasıl tek çatı altında geliştirebilirim. Yada iki farklı projemi geliştirmem gerekiyor. Java taraflı deneyimliyim fakat ikisini kaynaştırma noktasında birşey yapmadım.

    Ben biraz araştırdım arkadaşlarıma falan sordum şu şekilde duyma bilgiler edindim sizinle paylaşayım.

    1. Vue ile ayrı bir proje yap - javada da REST api yaz, verilerini buradan çekersin (nasıl deploy edeceğim bu ikisini ?)
    2. Spring Mvc proje oluştur, projenin içindeki web-inf klasoru içerisine npm ile projeyi oluştur, mappingleri falan burdan yap ( mantıksız geldi)

    Şimdi duyduklarım bunlar, ne kadar doğru bilmiyorum. Java taraflı olanları yapabilirim. Frontend tarafınıda yapabilirim ayrı ayrı. Ama ben bütün bir proje istiyorum. Backend-frontend proje olacak.

    Anlaşılmayan yerler olursa sorabilirsiniz. Sadece java taraflı düşünmeyin, diğer dillerden de örnek verebilirsiniz.
    Fikirlerinizi bekliyor ve teşekkür ediyorum.







  • Backend REST , tercihen microservice mimarili.

    Frontend bu REST API yi consume edecek.

    Deploy edecegin minimum 2 application olacak. Bir tanesi Front end. Bunu da herhangi bir static server ina yapabilirsin. Fiziksel olarak ayni makinede bulunmasi sart degil ama olabilir de. Sonucta SPA uygulamalari sadece static dosyalardan olusuyorlar. Angular'da da boyle, Vue'da da.

    Backend'i de istedigin formatta "WAR" ya da "JAR" ya da "EAR" olarak ilgili bir server da konumlandirabilirsin.

    Ornek:
    Bilgisayar - A
    - Apache ( ya da nginx )
    - Front-end js dosyalari www.hedehodo.com

    Bilgisayar - B
    - Apache
    - Tomcat
    - Backend www.hedehodo.com/api

    Ya da:
    Bilgisayar A:
    -Apache Proxy
    - Frontendwww.hedehodo.com ( proxy buraya yonlendirecek )
    - Tomcat -> Backendwww.hedehodo.com/api ( /api** ile gelen requestler buraya )

    Ikisini ayni code versiyonlama ile kontrol eder, gerekirse client ve server 'i ayri ayri deploy edersin.

    Deploy yapacagin zaman eger frontend deploy ediyorsan staticleri ( /var/www/html ) , backend ediyorsan tomcat ( ya da weblogic, ya da websphere artik ne kullaniyosan ) dosyalarini degistireceksin.

    < Bu ileti tablet sürüm kullanılarak atıldı >




  • Mephalay M kullanıcısına yanıt
    Hımm. Development kısım için en uygun çözüm bu mudur ? İki farklı app geliştirmek. Java rest yazacağım ve frontend. Başka çözümler var ise onuda bilmek isterim o yüzden verdiğiniz cevabı tekrarlıyorum.

    Deploy için, sanırım anladım biraz. Sadece development kısmı ile uğraştığım için deploy için uğraşmadım fazla. Dediklerinizden yola çıkarak araştıracağım.

    Teşekkürler.
  • javacıı kullanıcısına yanıt
    Zaten REST kullanmanin mantigi uygulamayi ayirmak. Single Service - Multiple Client paradigmasi. REST'i ayiriyorsun digerlerinden, Web- Mobil vs onu consume ediyor.
    O noktadan sonra problem, 2 uygulamayi ayri ayri deploy etmek olmuyor; Nasil Frontend uygulamami deploy ederim seklinde oluyor, zira bagimsiz oldular.
    Hatta Backendi de microservis ile bir suru farkli parcaya ayirabilirsin. Bagimlilik azalir, deployment ve yonetim kolaylasir eger duzgun ayirabildiysen.

    Eger ikisini ayni anda deploy edecegim ben dersen de, webapp altina static'leri gomebilirsin tomcat ile fakat bu bana gore cok sacma.

    < Bu ileti tablet sürüm kullanılarak atıldı >
  • Mephalay M kullanıcısına yanıt
    Resti biliyorum. Sadece bu şekilde mi geliştirme yapılmalı diye sordum. Hani farklı türevleride vardır belki. Örneğin diyebilirisiniz ki spring mvc yaz, kullanacagın js leri res'e ekle htmle göm vs. jquery bootstrap gibi.Ama bu seferde kaliteli bir view geliştirmeyi zorlaştıracaktır.

    Anlatmak istediklerinizi kavradım. Teşekkürler.
  • quote:

    Orijinalden alıntı: javacıı

    Resti biliyorum. Sadece bu şekilde mi geliştirme yapılmalı diye sordum. Hani farklı türevleride vardır belki. Örneğin diyebilirisiniz ki spring mvc yaz, kullanacagın js leri res'e ekle htmle göm vs. jquery bootstrap gibi.Ama bu seferde kaliteli bir view geliştirmeyi zorlaştıracaktır.

    Anlatmak istediklerinizi kavradım. Teşekkürler.

    Merhabalar en mantıklı çözüm neymiş? Öğrenebildiniz mi?
    Bende aynı sizin gibi java spring boot ile rest api yazıp, oradan frontend ile çekmek istiyorum.
    Frontend kısmı için angular düşünüyorum.

    Son olarak microservisi kısmını öğrenebileceğim tavsiye edebileceğiniz bir site var mı?

    < Bu ileti tablet sürüm kullanılarak atıldı >
  • Sanırım rest api yazmak

    < Bu ileti DH mobil uygulamasından atıldı >
  • Merhaba,

    Mephalay gayet guzelce anlatmis, bir iki sey ekleyecegim sadece. Bazi kavramlarin Turkcesini bilmiyorum, onun icin bastan kusuruma bakmayin.

    Eger uygulamaniz gayet basit, az kisinin kullanacagi ve sadece web arayuzu olacak bir uygulama ise front-end ve back-end'i ayni proje icerisinde tutabilirsiniz bu sorun degil.

    Ama uygulama eger bir kac kisiden fazla kullaniciya hitap ediyorsa, internet uzerinden herkese acilacaksa isler birz degisir. Katmanlari ayirlamanin bir cok avantaji var.

    Oncelikle olceklenebilirlik. Uygulamaniz nerede dar bogaza ( bottleneck ) girdiyse o katmani olceklendirebilirsiniz ya da ayirip baska bir microservice'e tasiyabilirsiniz.
    Microservice mimarisi ile high availability de saglayabilirsiniz. Eger katmanlar ayri ayri olursa bunu yonetmek daha kolay olur, monolotik bir uygulamada buyuk ihtimalle single point of failure ihtimali de artacaktir.
    Yine microservice uygulamais ileride refactoring icin daha verimli olur. Anlatildigi gibi on yuz ile arka tarafi ayirdiniz, rest api uzerinden konusuyorlr diyelim. Yarin obur gun db'yi degistirmeye kalkarsaniz, api duzgun yazilmissa on yuz bundan etkilenmez. Hatta backend'i java yerine baska bir dille yazsaniz da on yuz icin degisen bir sey olmayacaktir.

    Katmanlari bu sekilde ayirdiginiz zaman deployment daha kompleks hale geliyor. Bu yuzden de continuous integration/continuous delivery sistemleri kurmak gerekebilir. Ugyulamayi calistirmak icin de docker, kubernetes en populer cozumler simdilik.

    Yukarida yazdim ama tekrar ediyorum, eger sirket icinde 5-10 kullanici icin calisacak bir uygulamaya ihtiyaciniz varsa bunlara gerek olmayabilir.



    < Bu mesaj bu kişi tarafından değiştirildi bestanealtcizgi -- 19 Ekim 2018; 12:47:7 >




  • bestanealtcizgi B kullanıcısına yanıt
    Bilgi için sağolun, micro service için kaynak önerileriniz varmı. Bunun hakkında hiçbirşey bilmiyorum ki hiç bir projeyi de deploy etmedim ama basitce yapabilirim

    < Bu ileti DH mobil uygulamasından atıldı >
  • quote:

    Orijinalden alıntı: javacıı

    Bilgi için sağolun, micro service için kaynak önerileriniz varmı. Bunun hakkında hiçbirşey bilmiyorum ki hiç bir projeyi de deploy etmedim ama basitce yapabilirim
    kaynak google

    https://microservices.io/
  • bestanealtcizgi B kullanıcısına yanıt
    Teşekkür ederim

    < Bu ileti DH mobil uygulamasından atıldı >
  • javacıı kullanıcısına yanıt
    Rica ederim, kolay gelsin.
  • Gerekmiyorsa Js Kütüpaneleri ile view manüple etmeye gerek yok. Projeye ek külfiyet getiyor. Sok serverside rendering yok build etc. Her projenin UI ihtiyacları bir framework gerektirecek kadar komplex değil. Projenizde tüm keyworkleri düşünün buna gerçekten ihtiyacım var mı diye.



    Vue tarafına gelirsek. Spa yapmayacaksan cli ile olusturulmuş .vue ile calısan bir projeye ihtiyacın yok. vue.min.js ekleyip
    var app=new Vue({
    el:'#selector-name'})
    diyerek de kullanabilirsin. ben projemde kısmen komplex yerler olduğunda vue hiç bir kurulum yapısı kurmdan kısmen ekleyip.
    örnek kullanım.https://stackoverflow.com/questions/48442598/can-we-make-vue-js-application-without-vue-extension-component-and-webpack

    Normalde .net core spa ile bütünleşik çalışacka default bir şablon veriyor. hatta içerisinde serverside rendering de sağlıyor.

    Ancak kendin bunu kurman gerektiğinde ayrı projeler olarak ayrı klasörlerde kurup bittiğinde ikisini build edip aynı sunucuya koyabilirsin. Burada bunu otomatize etmek için mini bir script de yazabilirsin. Ancak dediğim gibi gerçekten gerekmedikçe projene karmaşıklık ekleme



    < Bu mesaj bu kişi tarafından değiştirildi mahoni_38 -- 20 Ekim 2018; 18:44:57 >




  • quote:

    Orijinalden alıntı: bestanealtcizgi

    kaynak google

    https://microservices.io/

    Alıntıları Göster
    konunun hakaten microservis ile ilgilisini çözemedim.
  • mahoni_38 kullanıcısına yanıt
    Farklı bir yorum olmuş, fakat asıl sorum, yapmak veya yapmamak değil, bunu en uygun nasıl yapmak şeklindeydi. Yinede yazı için sağol faydalı olacaktır elbet

    < Bu ileti DH mobil uygulamasından atıldı >
  • mahoni_38 kullanıcısına yanıt
    Ben frontend alanında çok az bilgiliyim. SPA projeler sadece cümle içerisinde biliyorum. Geliştirmek istediğim proje fazla interaktif bir proje , discord, stackoverflow karşımı o tarz birşey olabilir, chat odalı, birebir pm, soru cevap, alan konu kanal, vs, yani anlayacagın baya interaktif bir uygulama. Hani biraz araştırdım ve en uygun Vue olur diye düşündüm. Çünkü çok karmaşık bir yapısı yok. Benim gibi birisi öğrenirken zorluk çekmez



    < Bu mesaj bu kişi tarafından değiştirildi javacıı -- 20 Ekim 2018; 19:57:32 >
    < Bu ileti DH mobil uygulamasından atıldı >
  • quote:

    Orijinalden alıntı: javacıı

    Ben frontend alanında çok az bilgiliyim. SPA projeler sadece cümle içerisinde biliyorum. Geliştirmek istediğim proje fazla interaktif bir proje , discord, stackoverflow karşımı o tarz birşey olabilir, chat odalı, birebir pm, soru cevap, alan konu kanal, vs, yani anlayacagın baya interaktif bir uygulama. Hani biraz araştırdım ve en uygun Vue olur diye düşündüm. Çünkü çok karmaşık bir yapısı yok. Benim gibi birisi öğrenirken zorluk çekmez
    vue ayrı bir kurulum veya cli kurmadan da çalışabilir.http://fuzzytolerance.info/blog/2018/01/29/Vue-components-without-vue-files/

    ama cli ile kurmanız gerekirse de tavsiyem ayrı iki proje olarka başlayın ama ayrı iki proje olarak deploy etmek zorunda değilsiniz. bu gereksiz karmaşıklık getirir. tek başına iki tarafı da yazacak sizseniz.

    https://github.com/jonashackt/spring-boot-vuejs#setup-vuejs--spring-boot
    bu tarz ikisini de aynı proje işerisinde barındıran template örnekleri var. Eğer .net core olsaydı daha iyi bilgi verebilirdim ama hepsi benzer kapıya cıktığı için eminim ki aynı project file da calısan templateler vardır.

    veya ayrı klasörlerde olmuş olsa dahi npm run build dediğinizde size 2-3 tane (angular da 3-4 ) derlenmiş dosya verecektir. bunları proje dosyanıza eklerseniz direk kullanabilirsiniz ama dediğim gibi vue kullanmakla bitmez. serverside rendering de düşünülmeli. (Seo da önemliyse)




  • https://spring.io/guides/tutorials/react-and-spring-data-rest/

    Şöyle bir döküman buldum. Cevabı react üzerinden çok güzel anlatmış. Eklemek istedim.

    < Bu ileti DH mobil uygulamasından atıldı >
  • quote:

    Orijinalden alıntı: mahoni_38

    konunun hakaten microservis ile ilgilisini çözemedim.

    Alıntıları Göster
    Konunun direkt olarak ilgisi yok. Arkadas microservice ile ilgili kaynak istemisti.
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.