Konuyu Oyla:
  • Derecelendirme: 5/5 - 1 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Firemonkey - RestFull - Get - Put İşlemleri
#1
Bir kaç gündür Android için RestApi ile Get ve Put işlemi için örnek arıyorum fakat bulamadım. Yardımlarınızı Please Smile
Cevapla
#2
Merhaba,
Aşağıdaki eğitim dizisinde bu konu detaylı (sunucu konfigürasyonları dahil) bir şekilde anlatılmıştır.
Mobil Uygulama + REST Sunucu Eğitimi - Fesih ARSLAN - 2019
Cevapla
#3
Konu gelmişken fikrinizi almak istiyorum...
DataSnap uygulamasından program açılışında SQLConnection sürekli açık kalsa nasıl sorun yaşarız
yoksa verileri çektikçe açık kapatsak daha uygun olur mu
Cevapla
#4
(04-12-2019, Saat: 01:21)emre21 Adlı Kullanıcıdan Alıntı: sql server in bağlantı limiti vardır, açık tutacağı yarım ve tam soket limiti vardır, kaç kişinin kullandığına bağlı,
sürekli bağlan kop olayı örneğin 1 sn içinde çok fazla olursa işletim sisteminde half bağlantı limit vardır sonrası
connection refused e uğrar, ids ler bunu syn flood vs algılar, dediğim gibi bağlanan sayısı ile orantılı 1000 altı ise sorun yok
diğer türlü patlar.

Sanırım bunları MSSQL server için yazıyorsunuz. MSSQL Server'de bağlantıyı kullanmadan önce açıp kullandıktan sonra hemen kapatırsanız sorun olmaz. Neredeyse tüm C# ASP.Net uygulamaları bu mantığa göre yazılıyor. Zaten aksi söz konusu olamaz. Web server'e her client bağlantısı ayrı bir thread içinde yapılır (ya da seçeneklerden birisi budur), web server'de yazılı uygulama client'in her başvurusunda MSSQL sunucuya bağlanır cevabı oluşturup gönderir ve çıkar, bağlantıyı kapatma işini Garbage Collector'e bırakır. Hemen sonra da GAC bu bağlantıyı yok eder. Sistematik budur. 

Biz Windows masaüstü uygulamalarında bu şekilde uygulamıyoruz, bunun yerine bir bağlantıyı açıp programı kapatana kadar o bağlantıyı kullanıyoruz. Bunun sebebi açıp kapatma sürelerinden tasarruf etmek. Ama eğer DB'ye bağlanma süresi gözardı edilebilecek kadar kısa sürüyorsa masaüstü uygulamalarda da bu sistem uygulanabilir.
Cevapla
#5
(04-12-2019, Saat: 01:38)emre21 Adlı Kullanıcıdan Alıntı:
(04-12-2019, Saat: 01:36)mustafaozpinar Adlı Kullanıcıdan Alıntı: Sanırım bunları MSSQL server için yazıyorsunuz. MSSQL Server'de bağlantıyı kullanmadan önce açıp kullandıktan sonra hemen kapatırsanız sorun olmaz. Neredeyse tüm C# ASP.Net uygulamaları bu mantığa göre yazılıyor. Zaten aksi söz konusu olamaz. Web server'e her client bağlantısı ayrı bir thread içinde yapılır (ya da seçeneklerden birisi budur), web server'de yazılı uygulama client'in her başvurusunda MSSQL sunucuya bağlanır cevabı oluşturup gönderir ve çıkar, bağlantıyı kapatma işini Garbage Collector'e bırakır. Hemen sonra da GAC bu bağlantıyı yok eder. Sistematik budur. 

Biz Windows masaüstü uygulamalarında bu şekilde uygulamıyoruz, bunun yerine bir bağlantıyı açıp programı kapatana kadar o bağlantıyı kullanıyoruz. Bunun sebebi açıp kapatma sürelerinden tasarruf etmek. Ama eğer DB'ye bağlanma süresi gözardı edilebilecek kadar kısa sürüyorsa masaüstü uygulamalarda da bu sistem uygulanabilir.

hem windows hem linux için, yarım açık bağlantı limiti vardır, araştırın. 
https://www.google.com.tr/search?client=opera&q=half+open+socket+limit&sourceid=opera&ie=UTF-8&oe=UTF-8

aynı şekilde soket limitide vardır 65535-1024.

Windows Server 2008 için eşzamanlı bağlantı (concurrent connection) sayısı 70,000'in üzerinde. Linux'ta bunun çok daha üzerinde olduğunu düşünüyorum. 
https://stackoverflow.com/questions/1636...erver-2008

Aksi halde dev web alışveriş sitelerinin çalışması imkansız olurdu.
Cevapla
#6
(04-12-2019, Saat: 04:59)emre21 Adlı Kullanıcıdan Alıntı: unuttum söylemeyi kusura bakmayın, biliyorsunuz trendyol üye mahazaları ile ayakda kalır, üye mahazaları satış geldikçe periyodik stok güncelleme gönderirler partner trendyol dan, bu stok dosyaları içinde 1000 lerce ürün ve stok bilgisi vardır, en basiti ile 1000ürün*3(buna birde renk beden kombinasyonları ekleyin)*250firma = 750k record u alacaksın
db endeki 5/10/100 milyondan fazla record la 5 10sn de karşılaştırıp update edeceksin siteye yansıtacaksın, bu esnada siteye trafikde geliyor (yapamazsan olmayan stokdaki ürünü satarsın), biliyorsunuz trendyol amcamızda para kallavi tüm tr ye reklam çakıyor, haliyle trafiğide kallavi, şimdi diyorsunki db ile halledersim, hemde mssql diyorsun Smile)))
bende helal olsun derim.. burada örnek vizyon çiziyorum, niçin bizim eticaret sitelerinin büyemediğini en basit anlamı ile sistemsel anlattım, ha birde dünya çapı var bunun oralara girmeyelim.. birde çapraz siteler için stok güncelleme olayı var.. varda var.. bir işin içine girinde görün.

Merhaba, 
Ben trafiği, şunu bunu, herşeyi DB ile hallederim demedim. Dediğim sadece bir SQL sunucunun 70000'den fazla bağlantıyı kabul edebileceği. Bunun dışında performans ayrı bir sorun. Elbette bu tür durumlar için farklı farklı çözümler var. Ben sadece programcı değilim, geçmişte oldukça büyük bir data center'i de yönettim. Yani donanımlar, konfigürasyonlar vb. konularda da epey bilgim var. Benim kastettiğim sadece MSSQL serverin 70,000 bağlantıdan fazla bağlantıyı kabul edeceğidir. Performansı ne olur ne olmaz o ayrı bir mevzu. Performans konusu için elinizdeki tüm olanakları kullanırsınız. Veritabanlarını bölersiniz, cluster oluşturusunuz, veritabanını sunucuda SSD disk üzerine kurarsınız, belleği Terrabyte seviyelerine getirirsiniz vs. Araya iş yükünü azaltacak cache katmanları oluşturursunuz vs. 

Bir de yarım açık bağlantı konusu var. Bir bağlantının bu tanıma girebilmesi için, bir client bir sunucuya bağlandıktan sonra, bağlantının bir tarafta kırılması ve diğer tarafın bundan haberdar olmadığı için bağlantıyı canlı tutması. Burada arızi bir durum var. Tüm bağlantıların böyle arızi durumla karşılaşacağı düşünülemez. İyi bir donanım ve geniş ağ yapısında bunun oranı %10'u geçmez diye düşünüyorum (bu bir bilgi değil bir varsayım). 
Saygılarımla
Cevapla
#7
(04-12-2019, Saat: 15:41)emre21 Adlı Kullanıcıdan Alıntı: ben yapamayacağınız kanısındayim, deneyin isterseniz, tcpview den screen atarsanız,

https://docs.microsoft.com/en-us/previou...dfrom=MSDN

hesap yanlış değilse;

SQL Server 2008 için,

When using multiple active result sets is enabled, the user connection is approximately (3 + 3 * num_logical_connections) * network_packet_size + 94 KB.

((3+3*16çekirdek)*(4000byte+94000byte)*70000) = 349.860.000.000 byte / memory

Bu rakam 350GB demektir. Eğer 2TB memory koyarsanız kaldırır. Benim 398GB memory koyduğum mikro sunucu vardı (HP 980, buna bağlı iki 3PAR storage, herbirinin disk kapasitesi 40TB.). Tabii ki buna rağmen sistem zorlanacaktır. 

MSSQL olarak düşündüğümüzde benim bildiğim load balance anlamında çok da fazla bir seçenek yok. En çok cluster oluşturma olabilir. Ancak bu da high availability (arızi durumlardaki backup sistemi) vazifesi görecektir. MSSQL'in daha hızlı çalışmasını sağlayacak fazla bir opsiyon yok. 

MSSQL 2012 ile birlikte gelen Load Balancing 2016'da AlwaysOn yapısı getirilmiş. Ancak bu replika sunuculara gereksinim duyuyor. MSSQL Server Replika sunucularını yönetmekse son derece zor. Çünkü birbirleri arasındaki senkronizasyonu sağlayabilmek için her tabloda ayrı bir ID alanı kullanıyorlar bu alandaki rakamların birbiriyle (replikalar arasında) karışmaması gerekiyor vs. Tabii bu sistem hız için değil high availability için getirilmiş bir sistem öncelikle.

Elbette burada öncelikle yazılımlara çok iş düşüyor. Özellikle DB'den veri çekerken, her türlü optimizasyonu yapması gerekiyor. Bunu zaten yadsımıyorum. 

Özellikle Web yazılımcılarının (Soap ve Rest de buna dahil) bu konularda çok hassas olması gerekiyor. İşlem süresi ve aradaki bilgi alışverişinin minimize edilmesi şart. Hatta dediğiniz gibi bağlantı sayılarının bile. Belki araya bir cache katmanı yazıp (cache sunucularını kullanan) bununla da sunucuyu desteklemek gerekebilir.
Cevapla
#8
(03-12-2019, Saat: 22:49)ikurt07 Adlı Kullanıcıdan Alıntı: Konu gelmişken fikrinizi almak istiyorum...
DataSnap uygulamasından program açılışında SQLConnection sürekli açık kalsa nasıl sorun yaşarız
yoksa verileri çektikçe açık kapatsak daha uygun olur mu

Tebrikler @ikurt07; konuyu başlığından fena saptırmışsın  Undecided
There's no place like 127.0.0.1
WWW
Cevapla
#9
(03-12-2019, Saat: 22:49)ikurt07 Adlı Kullanıcıdan Alıntı: Konu gelmişken fikrinizi almak istiyorum...
DataSnap uygulamasından program açılışında SQLConnection sürekli açık kalsa nasıl sorun yaşarız
yoksa verileri çektikçe açık kapatsak daha uygun olur mu

DataSnap'te bir method'u çalıştırdığında & işlem bittiğinde, servermethod kapanır...
yani SQLConnection, variables, vs... hepsi kapanır...

method'u bir sonraki çalıştırdığında, sanki programı baştan açmışsın gibi olur

memory şişmesinin sebebi, TSQLConnection değildir (başıma geldi)

TSQLConnection nesnesi otomatik sıfırlandığı için, hafızayı şişirmez...

ancak, yazılımcının create edip doldurduğu array, stringlist veya dışarıdaki webservis token'ları gibi object'ler hafızada kalır, onları senin destroy etmen lazım.

GAC gibi bir yapıdan bahsetmişsiniz, Garbage collection VS.NET'de var, çalışıyor, ama tam tutarlı değil... GAC olduğu halde memory şişmesine çok şahit oldum.

İyi ki delphide GAC diye birşey yok, yazılımcıyı canlı tutan bir yoksunluk bu

yaptığım şey şu;

try
/// birşeyler yap
finally
// objeleri destroy et
end

bu nezakete uyunca, çok sağlıklı çalışıyor yazılımlar
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  FireMonkey Premium Styles Pack m_ekici 0 486 07-07-2023, Saat: 11:12
Son Yorum: m_ekici
  AdMobExtra FireMonkey savasabd 4 2.219 01-12-2021, Saat: 19:35
Son Yorum: savasabd
  Frame Kullanımlarında Free İşlemleri Hakkında adelphiforumz 6 2.967 22-02-2021, Saat: 20:27
Son Yorum: hayalyilmaz43
  com.embarcadero.firemonkey.medialibrary.MediaImage.getFileName savasabd 10 3.815 16-02-2021, Saat: 12:23
Son Yorum: savasabd
  Winsoft - Obr FireMonkey Barkod Okuma cihankoca 4 1.704 17-12-2020, Saat: 18:44
Son Yorum: cihankoca



Konuyu Okuyanlar: 1 Ziyaretçi