<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://www.dotnetzone.gr:443/cs/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>ADO.NET</title><link>https://www.dotnetzone.gr:443/cs/forums/78/ShowForum.aspx</link><description>Θέματα σχετικά με την προσπέλαση δεδομένων μέσω του ADO.NET και του System.Data namespace</description><dc:language>el</dc:language><generator>CommunityServer 2.1 SP3 (Build: 20423.1)</generator><item><title>Απ: Sync Databases over HTTP με JSON</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/77457.aspx</link><pubDate>Fri, 06 Nov 2015 18:42:23 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:77457</guid><dc:creator>Παναγιώτης Καναβός</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/77457.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=78&amp;PostID=77457</wfw:commentRss><description>&lt;p&gt;Καταστροφική.&amp;nbsp;&lt;span style="font-size:13.3333px;"&gt;*Γιατί* θέλεις να χρησιμοποιήσεις REST και Json? Έχεις κάποιο *πραγματικό* θέμα που θέλεις να λύσεις ή άκουσες ότι το REST είναι καλή ιδέα ? &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-size:13.3333px;"&gt;Αξίζει να διαβάσεις το &lt;a target="_blank" href="https://www.simple-talk.com/dotnet/asp.net/premature-scalability-and-the-root-of-all-evil/"&gt;Premature Scalability and the Root of All Evil&lt;/a&gt; του Dino Esposito για να δεις τους μπελάδες που αντιμετώπισαν κάποιοι που θεώρησαν καλό να βάλουν REST πάνω από τη βάση "γιατί είναι καλή ιδέα".&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Στην ερώτηση τώρα:&amp;nbsp;&lt;/p&gt;&lt;p&gt;Πρώτον, αυτό δεν είναι συγχρονισμός είναι αντιγραφή δεδομένων. Ο συγχρονισμός απαιτεί να ξέρεις τι είναι καινούριο, παλιό, αλλαγμένο ή *διαγραμμένο*. Πως θα καταλάβεις ότι πρέπει να σβήσεις κάτι αν απλά στέλνεις τις αλλαγμένες εγγραφές? Το πως θα μιλήσουν δύο serves μεταξύ τους είναι το 10% της δουλειάς&lt;/p&gt;
&lt;p&gt;Δεύτερον, *ήδη* υπάρχουν μηχανισμοί για συγχρονισμό. Γιατί να εφεύρεις ένα νέο? Replication υπάρχει, sync frameworks υπάρχουν.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Τρίτον, η χρήση REST και JSon για επικοινωνία με τη βάση είναι τραγικά αναποτελεσματική:&lt;/p&gt;
&lt;p&gt;- Τραγικά αργή καθώς μεταφέρεις 10άδες φορές περισσότερα δεδομένα από τα πραγματικά λόγω text serialization. Τα περί Load balancing είναι άκυρα, όπως περιγράφει και ο Esposito, καθώς η παρέμβαση HTTP, text, web servers μεταξύ των βάσεων εξαφανίζει όποιο όφελος θα μπορούσες να έχεις.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;- Τραγικά ανακριβής, καθώς χάνεις κάθε έννοια τύπου δεδομένων. Τί πάει να πει "34.45" ? Είναι κείμενο, float, double, decimal? Μην πω για ημερομηνίες.&amp;nbsp;&lt;/p&gt;&lt;p&gt;- Τραγική καθυστέρηση ακόμα και για λίγα δεδομένα, καθώς το κάθε roundtrip παίρνει σημαντικό χρόνο ενώ η μία και μόνο απαιτούμενη κλήση στη βάση για να σταλούν όλα τα δεδομένα θα μπορούσε να πάρει millisecond.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;- Μηδενικό scalabitliy. Δεν μπορείς να μεταφέρεις ουσιαστικό όγκο δεδομένων με ένα PUT, και λόγω περιορισμών του ίδιου του HTTP αλλά και λόγω του εξωφρενικά μεγάλου χρόνου που θα κρατήσει η διαδικασία. Οι servers είναι φτιαγμένοι για να χειρίζονται μικρομεσαία requests που τελειώνουν γρήγορα, όχι θηρία των δεκάδων ή εκατοντάδων MB που μπλοκάρουν threads και μνήμη για πολλά λεπτά. Αναγκαστικά θα πρέπει να το σπάσεις σε πολλές διαφορετικές κλήσεις, το οποίο μετά δημιουργεί θέματα consistency.&lt;/p&gt;
&lt;p&gt;- Εξαιρετικά εύθραυστο. Από τη στιγμή που θα αναγκαστείς να σπάσεις τα PUT, θα πρέπει να χειριστείς χαμένα PUT, να μαζέψεις όλα τα κομμάτια πριν κάνεις τις αλλαγές, να τα *αποθηκεύσεις* κάπου μέχρι να μαζευτούν όλα.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;span style="font-size:10pt;"&gt;Αν έχεις έτοιμο όλο το μηχανισμό του synchronization, μπορείς να φτιάξεις ένα πακέτο με τις αλλαγές που θα πρέπει να στείλεις στον άλλο server για επεξεργασία, να το συμπιέσεις και να το στείλεις με το *κατάλληλο* πρωτόκολλο, το FTP, ή ακόμα και με HTTP. λαμβάνοντας υπόψη partial uploads, restarts κλπ. Αυτό όμως δεν μπορείς να το πεις REST σε καμία περίπτωση,&amp;nbsp;&lt;/span&gt;&lt;/p&gt;</description></item><item><title>Sync Databases over HTTP με JSON</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/77456.aspx</link><pubDate>Fri, 06 Nov 2015 17:56:52 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:77456</guid><dc:creator>Harkon</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/77456.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=78&amp;PostID=77456</wfw:commentRss><description>&lt;p&gt;Καλημέρα σας,&lt;/p&gt;&lt;p&gt;&amp;nbsp;ποια είναι η γνώμη σας για συγχρονισμό βάσεων δεδομένων (πχ SqlServer &amp;nbsp;&amp;lt;-&amp;gt; SqlServer) μέσω http με τη χρήση JSON?&lt;/p&gt;&lt;p&gt;Δηλαδή να κάνω serialize τα data στην 1η βάση, POST σε ένα url το οποίο να τα κάνει deserialize και insert στην 2η βάση;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Γενικά είναι καλή τακτική ή όχι;&lt;/p&gt;&lt;p&gt;Ευχαριστώ&amp;nbsp;&lt;/p&gt;</description></item></channel></rss>