SlideShare una empresa de Scribd logo
1 de 29
Αρχιτεκτονικό και Σεχνολογύεσ .NET

Παναγιώτησ Καναβόσ

ΠΙΘΟΣ
 Object storage αντύςτοιχο του Amazon
  S3/Azure Blob storage
 Τπηρεςύα του Synnefo
 Γραμμϋνο ςε Python
 Clients για
  Web, Windows, iOS, Android, Linux
Synnefo
Client API

 REST βαςιςμϋνο ςτο OpenStack Object
  Storage API
 Accounts, Containers χωρύσ Folders
 GET για data, object info
 PUT, POST για upload και update data
Δομή
Extensions ςτο API

  Block Storage
  Partial Upload/Download
  Permissions, Versions
  Metadata Queries
  UUIDs για Object IDs
  Object updates (copy, move)
Χαρακτηριςτικά API

 Δεν υπϊρχουν folders
 Placeholder directory object για metadata
 Block updates ΜΟΝΟ
 Merkle hashing για εντοπιςμό αλλαγμϋνων
  block
 Χρόςη SHA256
Merkle Hashing


                       Top Hash



       Hash of #1-                  Hash of #2-
        2 Hashes                     3 Hashes



 Block #1       Block #2      Block #3       Block #4
   Hash           Hash          Hash           Hash
Διαδικαςία Download


Get Hashmap    Calculate local    Find different
 from server     hashmap             blocks




 Download      Patch local file
  blocks        with blocks
Διαδικαςία Upload


                                   Server responds
Calculate local
                  PUT to server     with missing
  hashmap
                                    block hashes



 PUT missing
                                   Server responds
  blocks at       Repeat from #2
                                         201
container level
Pithos Client

 Πολλαπλϊ accounts ανϊ μηχϊνημα
 ΢υγχρονιςμόσ τοπικού folder με account
  ςτον Πύθο
 Εντοπιςμόσ τοπικών αλλαγών και upload
 Εντοπιςμόσ αλλαγών ςτο server και
  download
 Τπολογιςμόσ Merkle Hash για κϊθε αρχεύο
Η αρχιτεκτονική


   UI         Core         Networking    Storage


  WPF        File Agent
                            CloudFiles    SQLite
             Poll Agent
 MVVM
             Network
              Agent
                                         SQL Server
 Caliburn                   HttpClient
                                          Compact
  Micro     Status Agent
Τεχνολογίεσ

 .ΝΕΣ 4, εξαιτύασ των Windows XP
 Visual Studio 2012 + Async Targeting Pack
 UI - Caliburn.Micro
 Concurrency - TPL, Parallel, Dataflow
 Network – HttpClient
 Hashing - OpenSSL - Σαχύτερο του native
  provider για hashing
 Storage - NHibernate, SQLite/SQL Server
  Compact
 Logging - log4net
Οι προκλήςεισ

 Χειριςμόσ πιθανόσ εκατοντϊδων file events
 Hashing πολλών/μεγϊλων αρχεύων
 Πολλαπλϋσ αργϋσ κλόςεισ ςτο server
 Αςταθϋσ δύκτυο
 Παρόλαυτα να μην κολλϊει
 Minimal UI με επαρκεύσ πληροφορύεσ
Χειριςμόσ Events



                              Poll Agent                              Uploader/Downloader
• Listen                                   • Queue requests
• Wait for Idle       • Get Server         • Process each file    • Network ops for
                        hashes                                      files
                      • Compare hashes
                      • Identify changes
         File Agent                               Network Agent
Χειριςμόσ Events (2)

 Χρόςη producer/consumer
 Αποθόκευςη των events ςε
  ConcurrentQueue
 Επεξεργαςύα ΜΟΝΟ μετϊ από timeout
Merkle Hashing

 Γιατύ μιςώ το Game of Thrones
 Αςύγχρονη ανϊγνωςη blocks
 Παρϊλληλο Hashing κϊθε block
 Χρόςη OpenSSL επειδό ϋχει SSE
 Περιοριςμόσ ςτο concurrency
 Προςοχό ςτη μνόμη!
Memory Leaks ςε Managed
Environment!
  4ΜΒ Blocks? Large Memory αλλϊ …
  Γρόγορο διϊβαςμα 2GB ανϊ 64ΚΒ
  Κατϋβαςμα 600ΜΒ ανϊ x KBs
  Σρελόσ αριθμόσ αντικειμϋνων που περιμϋνει
   collection κατϊ τη διϊρκεια CPU/IO intensive
   processing
  Που να προλϊβει ο Garbage Collector!
Hashing  100% CPU?

 Καλό το multicore αλλϊ
   Μπλοκϊρει το ςύςτημα για μεγϊλα αρχεύα!
 Επιλογό για περιοριςμό των παρϊλληλων
  block hash ops
 Βελτιώςεισ:
   Περιοριςμόσ για «μεγϊλα» αρχεύα
   «Throttling» του File Read
Πολλαπλέσ αργέσ κλήςεισ

 Κϊθε κλόςη ϋνα Task
 Σαυτόχρονα REST calls ανϊ account και
  shares
 Task.WhenAll για να επεξεργαςτούμε όλα τα
  αποτελϋςματα
Αςταθέσ Δίκτυο

 Χρόςη System.Net.Http.HttpClient
 Αποθόκευςη των blocks ςε cache
 Έλεγχοσ για orphans
 Αςύγχρονο Retry των κλόςεων
Αντοχή ςε ςκαςίματα

 Χρόςη Transactional NTFS αν εύναι
  διαθϋςιμο
 Thanks MS for killing it!
 Σροποπούηςη αντιγρϊφων και File.Replace
  διαφορετικϊ
Να μην κολλάει

 Χρόςη ανεξϊρτητων agents
 Asynchronous operations όπου εύναι δυνατόν
 Χρόςη async/await για πιο κατανοητό
  κώδικα
 Απαραύτητο το .ConfigureAwait(false)!
 ΠΡΟ΢ΟΧΗ ςτο async void
Minimal UI

 Χρόςη WPF, MVVM
 Χρόςη Progress για την ενημϋρωςη του UI
   Ενςωματωμϋνο ςτο .NET 4.5, αντιγραφό ςτο 4
 To Shell εύναι το Icon!
 Έλλειψη WPF Notification Icon
 Προβληματικό Data Binding ςε menu
SQLite ή Compact CE?

  Αρχικϊ SQLite -> Προβλόματα ςυγχρονιςμού
  (DUH !)
    Write Ahead logging, ςημαύνει ότι φαύνονται
     παλιότερα δεδομϋνα
  Αλλαγό ςε SQL Compact λόγω προβλημϊτων
  ςυγχρονιςμού (duh ?)
    Μόπωσ ϋπρεπε να ϋχουμε κϊποιο καλύτερο
     caching?
    Akavache?
  Μύα Document DB θα όταν προτιμότερη
Επόμενα Βήματα

 Δημιουργύα File Manager
 Γενικό Καθϊριςμα (DUH!)
 Επαναφορϊ των Unit Tests (Duh ?)
 Mock Server
   WebAPI? scriptcs? Yumm!
 Δημιουργύα ανεξϊρτητου Pithos library
 Windows RT, Windows Phone clients
   ΜΕΣΑ το καθϊριςμα
Links για Πίθο

 Pithos trial
  http://pithos.okeanos.io
 Synnefo Documentation
  http://www.synnefo.org/docs/synnefo/latest/ind
  ex.html
 Pithos API Documentation
  http://www.synnefo.org/docs/pithos/latest/index
  .html
 Pithos Windows Client
  https://code.grnet.gr/projects/pithos-ms-client
Χρήςιμα Links

 Parallel FX Team blog
  http://blogs.msdn.com/b/pfxteam
 Caliburn.Micro
  http://caliburnmicro.codeplex.com/
 Ayende’s BufferPool
  http://ayende.com/blog/4827/answer-
  stopping-the-leaks
Χρήςιμα Βιβλία

 C# 5 in a Nutshell, O’Riley
 Parallel Programming with .NET, Microsoft
• Pro Parallel Programming with C#, Wiley
• Concurrent Programming on
  Windows, Pearson
• The Art of Concurrency, O’Reilly

Más contenido relacionado

Similar a Πίθος - Αρχιτεκτονική και τεχνολογίες .NET

Το Azure δεν είναι χορτοφάγο! - 59ο DotNetZone Event
Το Azure δεν είναι χορτοφάγο! - 59ο DotNetZone EventΤο Azure δεν είναι χορτοφάγο! - 59ο DotNetZone Event
Το Azure δεν είναι χορτοφάγο! - 59ο DotNetZone EventPanagiotis Kanavos
 
Ellak Document Management Introduction
Ellak Document Management IntroductionEllak Document Management Introduction
Ellak Document Management Introductionmichael_mountrakis
 
1η διάλεξη Τεχνολογίες Παγκόσμιου Ιστού
1η διάλεξη Τεχνολογίες Παγκόσμιου Ιστού1η διάλεξη Τεχνολογίες Παγκόσμιου Ιστού
1η διάλεξη Τεχνολογίες Παγκόσμιου ΙστούManolis Vavalis
 
Περατζάδα στο Azure Event Hub
Περατζάδα στο Azure Event HubΠερατζάδα στο Azure Event Hub
Περατζάδα στο Azure Event HubPanagiotis Kanavos
 
Pantelidou Eirini: Design and development of a system for incremental static ...
Pantelidou Eirini: Design and development of a system for incremental static ...Pantelidou Eirini: Design and development of a system for incremental static ...
Pantelidou Eirini: Design and development of a system for incremental static ...Manos Tsardoulias
 
Eudoxus technical architecture (Greek)
Eudoxus technical architecture (Greek)Eudoxus technical architecture (Greek)
Eudoxus technical architecture (Greek)Fotis Stamatelopoulos
 
The Server-SIde Story: Παράλληλος και ασύγχρονος προγραμματισμός στο .NET - I...
The Server-SIde Story: Παράλληλος και ασύγχρονος προγραμματισμός στο .NET - I...The Server-SIde Story: Παράλληλος και ασύγχρονος προγραμματισμός στο .NET - I...
The Server-SIde Story: Παράλληλος και ασύγχρονος προγραμματισμός στο .NET - I...Panagiotis Kanavos
 
1st StudentGuru Live Meeting | Imagine Cup 2011 | IT Challenge Support
1st StudentGuru Live Meeting | Imagine Cup 2011 | IT Challenge Support1st StudentGuru Live Meeting | Imagine Cup 2011 | IT Challenge Support
1st StudentGuru Live Meeting | Imagine Cup 2011 | IT Challenge SupportAlexandros Sigaras
 
Συλλογικοί Κατάλογοι & Διαδίκτυο
Συλλογικοί Κατάλογοι & ΔιαδίκτυοΣυλλογικοί Κατάλογοι & Διαδίκτυο
Συλλογικοί Κατάλογοι & ΔιαδίκτυοLevadia Library
 
Διαχείριση Ψηφιακού Περιεχομένου με το DSpace: Λειτουργία και τεχνικά ζητήματα
Διαχείριση Ψηφιακού Περιεχομένου με το DSpace: Λειτουργία και τεχνικά ζητήματαΔιαχείριση Ψηφιακού Περιεχομένου με το DSpace: Λειτουργία και τεχνικά ζητήματα
Διαχείριση Ψηφιακού Περιεχομένου με το DSpace: Λειτουργία και τεχνικά ζητήματαNikolaos Konstantinou
 
Εισήγηση Ημερίδα ΚΕΠΛΗΝΕΤ 13/3/2013 Χρήστος Θεοδώρου
Εισήγηση Ημερίδα ΚΕΠΛΗΝΕΤ 13/3/2013 Χρήστος ΘεοδώρουΕισήγηση Ημερίδα ΚΕΠΛΗΝΕΤ 13/3/2013 Χρήστος Θεοδώρου
Εισήγηση Ημερίδα ΚΕΠΛΗΝΕΤ 13/3/2013 Χρήστος Θεοδώρουfthplinet
 
Drupal CMS, μια σύντομη παρουσίαση
Drupal CMS, μια σύντομη παρουσίασηDrupal CMS, μια σύντομη παρουσίαση
Drupal CMS, μια σύντομη παρουσίασηJonny Arvanitakis
 
2η διάλεξη Τεχνολογίες Παγκόσμιου Ιστού
2η διάλεξη Τεχνολογίες Παγκόσμιου Ιστού2η διάλεξη Τεχνολογίες Παγκόσμιου Ιστού
2η διάλεξη Τεχνολογίες Παγκόσμιου ΙστούManolis Vavalis
 
Ανάπτυξη Εφαρµογής Προφίλ Μηχανικών Λογισµικού από ∆εδοµένα Αποθετηρίων Λογισ...
Ανάπτυξη Εφαρµογής Προφίλ Μηχανικών Λογισµικού από ∆εδοµένα Αποθετηρίων Λογισ...Ανάπτυξη Εφαρµογής Προφίλ Μηχανικών Λογισµικού από ∆εδοµένα Αποθετηρίων Λογισ...
Ανάπτυξη Εφαρµογής Προφίλ Μηχανικών Λογισµικού από ∆εδοµένα Αποθετηρίων Λογισ...ISSEL
 
Παρουσίαση Hadoop, MapReduce και Mahout στο 1o Hadoop UserGroup meetup
Παρουσίαση Hadoop, MapReduce και Mahout στο 1o Hadoop UserGroup meetupΠαρουσίαση Hadoop, MapReduce και Mahout στο 1o Hadoop UserGroup meetup
Παρουσίαση Hadoop, MapReduce και Mahout στο 1o Hadoop UserGroup meetupIoannis Konstantinou
 
Μοντέλο Client/Server, Διαδικτυακές υπηρεσίες και Cloud computing
Μοντέλο Client/Server, Διαδικτυακές υπηρεσίες και Cloud computingΜοντέλο Client/Server, Διαδικτυακές υπηρεσίες και Cloud computing
Μοντέλο Client/Server, Διαδικτυακές υπηρεσίες και Cloud computingKostas Diamantaras
 
Εμπλουτισμένη εισήγηση ημερίδας ΚΕΠΛΗΝΕΤ 13/3/2013 Χρήστος Θεοδώρου (χωρίς vi...
Εμπλουτισμένη εισήγηση ημερίδας ΚΕΠΛΗΝΕΤ 13/3/2013 Χρήστος Θεοδώρου (χωρίς vi...Εμπλουτισμένη εισήγηση ημερίδας ΚΕΠΛΗΝΕΤ 13/3/2013 Χρήστος Θεοδώρου (χωρίς vi...
Εμπλουτισμένη εισήγηση ημερίδας ΚΕΠΛΗΝΕΤ 13/3/2013 Χρήστος Θεοδώρου (χωρίς vi...fthplinet
 
Thesis.Net Framework Training
Thesis.Net Framework TrainingThesis.Net Framework Training
Thesis.Net Framework Trainingpdalianis
 
Nashiproject
NashiprojectNashiproject
Nashiprojectzoifis
 

Similar a Πίθος - Αρχιτεκτονική και τεχνολογίες .NET (20)

Το Azure δεν είναι χορτοφάγο! - 59ο DotNetZone Event
Το Azure δεν είναι χορτοφάγο! - 59ο DotNetZone EventΤο Azure δεν είναι χορτοφάγο! - 59ο DotNetZone Event
Το Azure δεν είναι χορτοφάγο! - 59ο DotNetZone Event
 
Ellak Document Management Introduction
Ellak Document Management IntroductionEllak Document Management Introduction
Ellak Document Management Introduction
 
1η διάλεξη Τεχνολογίες Παγκόσμιου Ιστού
1η διάλεξη Τεχνολογίες Παγκόσμιου Ιστού1η διάλεξη Τεχνολογίες Παγκόσμιου Ιστού
1η διάλεξη Τεχνολογίες Παγκόσμιου Ιστού
 
Περατζάδα στο Azure Event Hub
Περατζάδα στο Azure Event HubΠερατζάδα στο Azure Event Hub
Περατζάδα στο Azure Event Hub
 
Pantelidou Eirini: Design and development of a system for incremental static ...
Pantelidou Eirini: Design and development of a system for incremental static ...Pantelidou Eirini: Design and development of a system for incremental static ...
Pantelidou Eirini: Design and development of a system for incremental static ...
 
Eudoxus technical architecture (Greek)
Eudoxus technical architecture (Greek)Eudoxus technical architecture (Greek)
Eudoxus technical architecture (Greek)
 
The Server-SIde Story: Παράλληλος και ασύγχρονος προγραμματισμός στο .NET - I...
The Server-SIde Story: Παράλληλος και ασύγχρονος προγραμματισμός στο .NET - I...The Server-SIde Story: Παράλληλος και ασύγχρονος προγραμματισμός στο .NET - I...
The Server-SIde Story: Παράλληλος και ασύγχρονος προγραμματισμός στο .NET - I...
 
1st StudentGuru Live Meeting | Imagine Cup 2011 | IT Challenge Support
1st StudentGuru Live Meeting | Imagine Cup 2011 | IT Challenge Support1st StudentGuru Live Meeting | Imagine Cup 2011 | IT Challenge Support
1st StudentGuru Live Meeting | Imagine Cup 2011 | IT Challenge Support
 
Συλλογικοί Κατάλογοι & Διαδίκτυο
Συλλογικοί Κατάλογοι & ΔιαδίκτυοΣυλλογικοί Κατάλογοι & Διαδίκτυο
Συλλογικοί Κατάλογοι & Διαδίκτυο
 
Διαχείριση Ψηφιακού Περιεχομένου με το DSpace: Λειτουργία και τεχνικά ζητήματα
Διαχείριση Ψηφιακού Περιεχομένου με το DSpace: Λειτουργία και τεχνικά ζητήματαΔιαχείριση Ψηφιακού Περιεχομένου με το DSpace: Λειτουργία και τεχνικά ζητήματα
Διαχείριση Ψηφιακού Περιεχομένου με το DSpace: Λειτουργία και τεχνικά ζητήματα
 
Asfask1
Asfask1Asfask1
Asfask1
 
Εισήγηση Ημερίδα ΚΕΠΛΗΝΕΤ 13/3/2013 Χρήστος Θεοδώρου
Εισήγηση Ημερίδα ΚΕΠΛΗΝΕΤ 13/3/2013 Χρήστος ΘεοδώρουΕισήγηση Ημερίδα ΚΕΠΛΗΝΕΤ 13/3/2013 Χρήστος Θεοδώρου
Εισήγηση Ημερίδα ΚΕΠΛΗΝΕΤ 13/3/2013 Χρήστος Θεοδώρου
 
Drupal CMS, μια σύντομη παρουσίαση
Drupal CMS, μια σύντομη παρουσίασηDrupal CMS, μια σύντομη παρουσίαση
Drupal CMS, μια σύντομη παρουσίαση
 
2η διάλεξη Τεχνολογίες Παγκόσμιου Ιστού
2η διάλεξη Τεχνολογίες Παγκόσμιου Ιστού2η διάλεξη Τεχνολογίες Παγκόσμιου Ιστού
2η διάλεξη Τεχνολογίες Παγκόσμιου Ιστού
 
Ανάπτυξη Εφαρµογής Προφίλ Μηχανικών Λογισµικού από ∆εδοµένα Αποθετηρίων Λογισ...
Ανάπτυξη Εφαρµογής Προφίλ Μηχανικών Λογισµικού από ∆εδοµένα Αποθετηρίων Λογισ...Ανάπτυξη Εφαρµογής Προφίλ Μηχανικών Λογισµικού από ∆εδοµένα Αποθετηρίων Λογισ...
Ανάπτυξη Εφαρµογής Προφίλ Μηχανικών Λογισµικού από ∆εδοµένα Αποθετηρίων Λογισ...
 
Παρουσίαση Hadoop, MapReduce και Mahout στο 1o Hadoop UserGroup meetup
Παρουσίαση Hadoop, MapReduce και Mahout στο 1o Hadoop UserGroup meetupΠαρουσίαση Hadoop, MapReduce και Mahout στο 1o Hadoop UserGroup meetup
Παρουσίαση Hadoop, MapReduce και Mahout στο 1o Hadoop UserGroup meetup
 
Μοντέλο Client/Server, Διαδικτυακές υπηρεσίες και Cloud computing
Μοντέλο Client/Server, Διαδικτυακές υπηρεσίες και Cloud computingΜοντέλο Client/Server, Διαδικτυακές υπηρεσίες και Cloud computing
Μοντέλο Client/Server, Διαδικτυακές υπηρεσίες και Cloud computing
 
Εμπλουτισμένη εισήγηση ημερίδας ΚΕΠΛΗΝΕΤ 13/3/2013 Χρήστος Θεοδώρου (χωρίς vi...
Εμπλουτισμένη εισήγηση ημερίδας ΚΕΠΛΗΝΕΤ 13/3/2013 Χρήστος Θεοδώρου (χωρίς vi...Εμπλουτισμένη εισήγηση ημερίδας ΚΕΠΛΗΝΕΤ 13/3/2013 Χρήστος Θεοδώρου (χωρίς vi...
Εμπλουτισμένη εισήγηση ημερίδας ΚΕΠΛΗΝΕΤ 13/3/2013 Χρήστος Θεοδώρου (χωρίς vi...
 
Thesis.Net Framework Training
Thesis.Net Framework TrainingThesis.Net Framework Training
Thesis.Net Framework Training
 
Nashiproject
NashiprojectNashiproject
Nashiproject
 

Πίθος - Αρχιτεκτονική και τεχνολογίες .NET

  • 1. Αρχιτεκτονικό και Σεχνολογύεσ .NET Παναγιώτησ Καναβόσ ΠΙΘΟΣ
  • 2.  Object storage αντύςτοιχο του Amazon S3/Azure Blob storage  Τπηρεςύα του Synnefo  Γραμμϋνο ςε Python  Clients για Web, Windows, iOS, Android, Linux
  • 4. Client API  REST βαςιςμϋνο ςτο OpenStack Object Storage API  Accounts, Containers χωρύσ Folders  GET για data, object info  PUT, POST για upload και update data
  • 6. Extensions ςτο API  Block Storage  Partial Upload/Download  Permissions, Versions  Metadata Queries  UUIDs για Object IDs  Object updates (copy, move)
  • 7. Χαρακτηριςτικά API  Δεν υπϊρχουν folders  Placeholder directory object για metadata  Block updates ΜΟΝΟ  Merkle hashing για εντοπιςμό αλλαγμϋνων block  Χρόςη SHA256
  • 8. Merkle Hashing Top Hash Hash of #1- Hash of #2- 2 Hashes 3 Hashes Block #1 Block #2 Block #3 Block #4 Hash Hash Hash Hash
  • 9. Διαδικαςία Download Get Hashmap Calculate local Find different from server hashmap blocks Download Patch local file blocks with blocks
  • 10. Διαδικαςία Upload Server responds Calculate local PUT to server with missing hashmap block hashes PUT missing Server responds blocks at Repeat from #2 201 container level
  • 11. Pithos Client  Πολλαπλϊ accounts ανϊ μηχϊνημα  ΢υγχρονιςμόσ τοπικού folder με account ςτον Πύθο  Εντοπιςμόσ τοπικών αλλαγών και upload  Εντοπιςμόσ αλλαγών ςτο server και download  Τπολογιςμόσ Merkle Hash για κϊθε αρχεύο
  • 12. Η αρχιτεκτονική UI Core Networking Storage WPF File Agent CloudFiles SQLite Poll Agent MVVM Network Agent SQL Server Caliburn HttpClient Compact Micro Status Agent
  • 13. Τεχνολογίεσ  .ΝΕΣ 4, εξαιτύασ των Windows XP  Visual Studio 2012 + Async Targeting Pack  UI - Caliburn.Micro  Concurrency - TPL, Parallel, Dataflow  Network – HttpClient  Hashing - OpenSSL - Σαχύτερο του native provider για hashing  Storage - NHibernate, SQLite/SQL Server Compact  Logging - log4net
  • 14. Οι προκλήςεισ  Χειριςμόσ πιθανόσ εκατοντϊδων file events  Hashing πολλών/μεγϊλων αρχεύων  Πολλαπλϋσ αργϋσ κλόςεισ ςτο server  Αςταθϋσ δύκτυο  Παρόλαυτα να μην κολλϊει  Minimal UI με επαρκεύσ πληροφορύεσ
  • 15. Χειριςμόσ Events Poll Agent Uploader/Downloader • Listen • Queue requests • Wait for Idle • Get Server • Process each file • Network ops for hashes files • Compare hashes • Identify changes File Agent Network Agent
  • 16. Χειριςμόσ Events (2)  Χρόςη producer/consumer  Αποθόκευςη των events ςε ConcurrentQueue  Επεξεργαςύα ΜΟΝΟ μετϊ από timeout
  • 17. Merkle Hashing  Γιατύ μιςώ το Game of Thrones  Αςύγχρονη ανϊγνωςη blocks  Παρϊλληλο Hashing κϊθε block  Χρόςη OpenSSL επειδό ϋχει SSE  Περιοριςμόσ ςτο concurrency  Προςοχό ςτη μνόμη!
  • 18. Memory Leaks ςε Managed Environment!  4ΜΒ Blocks? Large Memory αλλϊ …  Γρόγορο διϊβαςμα 2GB ανϊ 64ΚΒ  Κατϋβαςμα 600ΜΒ ανϊ x KBs  Σρελόσ αριθμόσ αντικειμϋνων που περιμϋνει collection κατϊ τη διϊρκεια CPU/IO intensive processing  Που να προλϊβει ο Garbage Collector!
  • 19. Hashing  100% CPU?  Καλό το multicore αλλϊ  Μπλοκϊρει το ςύςτημα για μεγϊλα αρχεύα!  Επιλογό για περιοριςμό των παρϊλληλων block hash ops  Βελτιώςεισ:  Περιοριςμόσ για «μεγϊλα» αρχεύα  «Throttling» του File Read
  • 20. Πολλαπλέσ αργέσ κλήςεισ  Κϊθε κλόςη ϋνα Task  Σαυτόχρονα REST calls ανϊ account και shares  Task.WhenAll για να επεξεργαςτούμε όλα τα αποτελϋςματα
  • 21. Αςταθέσ Δίκτυο  Χρόςη System.Net.Http.HttpClient  Αποθόκευςη των blocks ςε cache  Έλεγχοσ για orphans  Αςύγχρονο Retry των κλόςεων
  • 22. Αντοχή ςε ςκαςίματα  Χρόςη Transactional NTFS αν εύναι διαθϋςιμο  Thanks MS for killing it!  Σροποπούηςη αντιγρϊφων και File.Replace διαφορετικϊ
  • 23. Να μην κολλάει  Χρόςη ανεξϊρτητων agents  Asynchronous operations όπου εύναι δυνατόν  Χρόςη async/await για πιο κατανοητό κώδικα  Απαραύτητο το .ConfigureAwait(false)!  ΠΡΟ΢ΟΧΗ ςτο async void
  • 24. Minimal UI  Χρόςη WPF, MVVM  Χρόςη Progress για την ενημϋρωςη του UI  Ενςωματωμϋνο ςτο .NET 4.5, αντιγραφό ςτο 4  To Shell εύναι το Icon!  Έλλειψη WPF Notification Icon  Προβληματικό Data Binding ςε menu
  • 25. SQLite ή Compact CE?  Αρχικϊ SQLite -> Προβλόματα ςυγχρονιςμού (DUH !)  Write Ahead logging, ςημαύνει ότι φαύνονται παλιότερα δεδομϋνα  Αλλαγό ςε SQL Compact λόγω προβλημϊτων ςυγχρονιςμού (duh ?)  Μόπωσ ϋπρεπε να ϋχουμε κϊποιο καλύτερο caching?  Akavache?  Μύα Document DB θα όταν προτιμότερη
  • 26. Επόμενα Βήματα  Δημιουργύα File Manager  Γενικό Καθϊριςμα (DUH!)  Επαναφορϊ των Unit Tests (Duh ?)  Mock Server  WebAPI? scriptcs? Yumm!  Δημιουργύα ανεξϊρτητου Pithos library  Windows RT, Windows Phone clients  ΜΕΣΑ το καθϊριςμα
  • 27. Links για Πίθο  Pithos trial http://pithos.okeanos.io  Synnefo Documentation http://www.synnefo.org/docs/synnefo/latest/ind ex.html  Pithos API Documentation http://www.synnefo.org/docs/pithos/latest/index .html  Pithos Windows Client https://code.grnet.gr/projects/pithos-ms-client
  • 28. Χρήςιμα Links  Parallel FX Team blog http://blogs.msdn.com/b/pfxteam  Caliburn.Micro http://caliburnmicro.codeplex.com/  Ayende’s BufferPool http://ayende.com/blog/4827/answer- stopping-the-leaks
  • 29. Χρήςιμα Βιβλία  C# 5 in a Nutshell, O’Riley  Parallel Programming with .NET, Microsoft • Pro Parallel Programming with C#, Wiley • Concurrent Programming on Windows, Pearson • The Art of Concurrency, O’Reilly