Σχετικά με το πρόγραμμα-πελάτη ιστού 1C

Ένα από τα ωραία χαρακτηριστικά της τεχνολογίας 1C:Enterprise είναι ότι η λύση εφαρμογής, που αναπτύχθηκε χρησιμοποιώντας τεχνολογία διαχειριζόμενων φορμών, μπορεί να εκκινηθεί τόσο σε ένα λεπτό (εκτελέσιμο) πρόγραμμα-πελάτη για Windows, Linux, MacOS X και ως πρόγραμμα-πελάτης web για 5 προγράμματα περιήγησης - Chrome, Internet Explorer, Firefox, Safari, Edge και όλα αυτά χωρίς να αλλάξετε τον πηγαίο κώδικα της εφαρμογής. Επιπλέον, εξωτερικά η εφαρμογή στο thin client και στον browser λειτουργεί και μοιάζει σχεδόν πανομοιότυπη.
Βρείτε 10 διαφορές (2 εικόνες κάτω από την περικοπή):

Λεπτό παράθυρο πελάτη σε Linux:

Σχετικά με το πρόγραμμα-πελάτη ιστού 1C

Το ίδιο παράθυρο στο πρόγραμμα-πελάτη ιστού (στο πρόγραμμα περιήγησης Chrome):

Σχετικά με το πρόγραμμα-πελάτη ιστού 1C

Γιατί δημιουργήσαμε έναν πελάτη ιστού; Για να το πούμε κάπως αξιολύπητα, ο χρόνος μας έχει θέσει ένα τέτοιο καθήκον. Η εργασία μέσω Διαδικτύου αποτελεί εδώ και καιρό απαραίτητη προϋπόθεση για επιχειρηματικές εφαρμογές. Πρώτα, προσθέσαμε τη δυνατότητα εργασίας μέσω Διαδικτύου για τον thin client μας (μερικοί από τους ανταγωνιστές μας, παρεμπιπτόντως, σταμάτησαν σε αυτό· άλλοι, αντίθετα, εγκατέλειψαν τον thin client και περιορίστηκαν στην εφαρμογή ενός web client). Αποφασίσαμε να δώσουμε στους χρήστες μας τη δυνατότητα να επιλέξουν την επιλογή πελάτη που τους ταιριάζει καλύτερα.

Σχετικά με το πρόγραμμα-πελάτη ιστού 1C

Η προσθήκη δυνατοτήτων που βασίζονται στο web στον thin client ήταν ένα μεγάλο έργο με μια πλήρη αλλαγή στην αρχιτεκτονική πελάτη-διακομιστή. Η δημιουργία ενός πελάτη web είναι ένα εντελώς νέο έργο, ξεκινώντας από την αρχή.

Δήλωση προβλήματος

Έτσι, οι απαιτήσεις του έργου: ο πελάτης Ιστού πρέπει να κάνει το ίδιο με τον thin client, δηλαδή:

  1. Εμφάνιση διεπαφής χρήστη
  2. Εκτελέστε τον κώδικα πελάτη γραμμένο σε γλώσσα 1C

Η διεπαφή χρήστη στο 1C περιγράφεται σε ένα οπτικό πρόγραμμα επεξεργασίας, αλλά δηλωτικά, χωρίς διάταξη στοιχείων pixel-pixel. Χρησιμοποιούνται περίπου τρεις δωδεκάδες είδη στοιχείων διεπαφής - κουμπιά, πεδία εισαγωγής (κείμενο, αριθμητικός, ημερομηνία/ώρα), λίστες, πίνακες, γραφήματα κ.λπ.

Ο κώδικας πελάτη στη γλώσσα 1C μπορεί να περιέχει κλήσεις διακομιστή, εργασία με τοπικούς πόρους (αρχεία κ.λπ.), εκτύπωση και πολλά άλλα.

Τόσο ο thin client (όταν εργάζεστε μέσω web) όσο και ο web client χρησιμοποιούν το ίδιο σύνολο υπηρεσιών web για να επικοινωνούν με τον διακομιστή εφαρμογών 1C. Οι υλοποιήσεις πελάτη, φυσικά, είναι διαφορετικές - ο thin client είναι γραμμένος σε C++, ο web client είναι γραμμένος σε JavaScript.

Μια μικρή ιστορία

Το έργο web client ξεκίνησε το 2006, με μια ομάδα (κατά μέσο όρο) 5 ατόμων. Σε ορισμένα στάδια του έργου, οι προγραμματιστές συμμετείχαν για την υλοποίηση συγκεκριμένων λειτουργιών (έγγραφο υπολογιστικών φύλλων, διαγράμματα κ.λπ.). Κατά κανόνα, αυτοί ήταν οι ίδιοι προγραμματιστές που έκαναν αυτή τη λειτουργία στον thin client. Εκείνοι. Οι προγραμματιστές έγραψαν ξανά στοιχεία σε JavaScript που είχαν δημιουργήσει προηγουμένως στη C++.

Από την αρχή, απορρίψαμε την ιδέα οποιασδήποτε αυτόματης (ακόμη και μερικής) μετατροπής κώδικα λεπτού πελάτη C++ σε πρόγραμμα-πελάτη web JavaScript λόγω των έντονων εννοιολογικών διαφορών μεταξύ των δύο γλωσσών. ο web-πελάτης γράφτηκε σε JavaScript από την αρχή.

Στις πρώτες επαναλήψεις του έργου, ο πελάτης Ιστού μετέτρεψε τον κώδικα πελάτη στην ενσωματωμένη γλώσσα 1C απευθείας σε JavaScript. Ο thin client δρα διαφορετικά - ο κώδικας στην ενσωματωμένη γλώσσα 1C μεταγλωττίζεται σε bytecode και, στη συνέχεια, αυτός ο bytecode ερμηνεύεται στον πελάτη. Στη συνέχεια, το πρόγραμμα-πελάτης Ιστού άρχισε να κάνει το ίδιο - πρώτον, έδωσε κέρδος απόδοσης και, δεύτερον, κατέστησε δυνατή την ενοποίηση της αρχιτεκτονικής του thin και του web client.

Η πρώτη έκδοση της πλατφόρμας 1C:Enterprise με υποστήριξη web client κυκλοφόρησε το 2009. Το πρόγραμμα-πελάτης Ιστού εκείνη την εποχή υποστήριζε 2 προγράμματα περιήγησης - τον Internet Explorer και τον Firefox. Τα αρχικά σχέδια περιελάμβαναν υποστήριξη για Opera, αλλά λόγω ανυπέρβλητων προβλημάτων εκείνη την εποχή με τους χειριστές κλεισίματος εφαρμογών στην Opera (δεν ήταν δυνατό να εντοπιστεί με 100% βεβαιότητα ότι η εφαρμογή έκλεινε και εκείνη τη στιγμή να πραγματοποιηθεί η διαδικασία αποσύνδεσης από το Διακομιστής εφαρμογών 1C) από αυτά τα σχέδια έπρεπε να εγκαταλειφθεί.

Δομή έργου

Συνολικά, η πλατφόρμα 1C:Enterprise έχει 4 έργα γραμμένα σε JavaScript:

  1. WebTools – κοινόχρηστες βιβλιοθήκες που χρησιμοποιούνται από άλλα έργα (περιλαμβάνουμε επίσης Βιβλιοθήκη κλεισίματος Google).
  2. Στοιχείο ελέγχου ΜορφοποιημένοΈγγραφο (εφαρμόζεται σε JavaScript τόσο στον thin client όσο και στον web client)
  3. Στοιχείο ελέγχου Προγραμματιστής (εφαρμόζεται σε JavaScript τόσο στον thin client όσο και στον web client)
  4. Web client

Η δομή κάθε έργου μοιάζει με τη δομή των έργων Java (ή έργων .NET - όποιο είναι πιο κοντά). Έχουμε χώρους ονομάτων και κάθε χώρος ονομάτων βρίσκεται σε ξεχωριστό φάκελο. Μέσα στο φάκελο υπάρχουν αρχεία και κλάσεις χώρου ονομάτων. Υπάρχουν περίπου 1000 αρχεία στο έργο πελάτη web.

Δομικά, ο πελάτης Ιστού χωρίζεται σε μεγάλο βαθμό στα ακόλουθα υποσυστήματα:

  • Διαχειριζόμενη διεπαφή εφαρμογής πελάτη
    • Γενική διεπαφή εφαρμογών (μενού συστήματος, πίνακες)
    • Διεπαφή διαχειριζόμενων φορμών, συμπεριλαμβανομένων, μεταξύ άλλων, περίπου 30 στοιχείων ελέγχου (κουμπιά, διάφοροι τύποι πεδίων εισαγωγής - κείμενο, αριθμοί, ημερομηνία/ώρα κ.λπ., πίνακες, λίστες, γραφήματα κ.λπ.)

  • Μοντέλο αντικειμένου διαθέσιμο στους προγραμματιστές στον πελάτη (πάνω από 400 τύποι συνολικά: μοντέλο αντικειμένου διαχειριζόμενης διεπαφής, ρυθμίσεις διάταξης δεδομένων, στυλ υπό όρους κ.λπ.)
  • Διερμηνέας της ενσωματωμένης γλώσσας 1C
  • Επεκτάσεις προγράμματος περιήγησης (χρησιμοποιούνται για λειτουργίες που δεν υποστηρίζονται σε JavaScript)
    • Εργασία με κρυπτογραφία
    • Εργασία με αρχεία
    • Τεχνολογία εξωτερικών εξαρτημάτων, που τους επιτρέπει να χρησιμοποιούνται τόσο σε thin όσο και σε διαδικτυακούς πελάτες

Χαρακτηριστικά Ανάπτυξης

Η εφαρμογή όλων των παραπάνω σε JavaScript δεν είναι εύκολη. Ίσως το πρόγραμμα-πελάτης web 1C να είναι μια από τις μεγαλύτερες εφαρμογές από την πλευρά του πελάτη γραμμένες σε JavaScript - περίπου 450.000 γραμμές. Χρησιμοποιούμε ενεργά μια αντικειμενοστραφή προσέγγιση στον κώδικα του προγράμματος-πελάτη Ιστού, η οποία απλοποιεί την εργασία με ένα τόσο μεγάλο έργο.

Για να ελαχιστοποιήσουμε το μέγεθος του κωδικού πελάτη, χρησιμοποιήσαμε πρώτα τον δικό μας επισκιωτή και ξεκινώντας με την έκδοση πλατφόρμας 8.3.6 (Οκτώβριος 2014) αρχίσαμε να χρησιμοποιούμε Google Closure Compiler. Η επίδραση της χρήσης σε αριθμούς – το μέγεθος του πλαισίου του προγράμματος-πελάτη ιστού μετά τη συσκότιση:

  • Ίδιος συσκοτιστής – 1556 kb
  • Google Closure Compiler – 1073 kb

Η χρήση του Google Closure Compiler μάς βοήθησε να βελτιώσουμε την απόδοση του προγράμματος-πελάτη ιστού κατά 30% σε σύγκριση με τον δικό μας συσκοτιστή. Επιπλέον, η ποσότητα της μνήμης που καταναλώνει η εφαρμογή έχει μειωθεί κατά 15-25% (ανάλογα με το πρόγραμμα περιήγησης).

Ο μεταγλωττιστής κλεισίματος Google λειτουργεί πολύ καλά με αντικειμενοστραφή κώδικα, επομένως η αποτελεσματικότητά του για τον πελάτη Ιστού είναι όσο το δυνατόν υψηλότερη. Το Closure Compiler κάνει μερικά καλά πράγματα για εμάς:

  • Έλεγχος στατικού τύπου στο στάδιο κατασκευής του έργου (εξασφαλίζει ότι καλύπτουμε τον κώδικα με σχολιασμούς JSDoc). Το αποτέλεσμα είναι στατική πληκτρολόγηση, πολύ κοντά σε επίπεδο με την πληκτρολόγηση σε C++. Αυτό βοηθά να συλλάβουμε ένα αρκετά μεγάλο ποσοστό σφαλμάτων στο στάδιο της κατάρτισης του έργου.
  • Μείωση του μεγέθους του κώδικα μέσω συσκότισης
  • Ένας αριθμός βελτιστοποιήσεων του εκτελούμενου κώδικα, για παράδειγμα, όπως:
    • ενσωματωμένες αντικαταστάσεις συναρτήσεων. Η κλήση μιας συνάρτησης σε JavaScript είναι μια αρκετά δαπανηρή λειτουργία και οι ενσωματωμένες αντικαταστάσεις μικρών μεθόδων που χρησιμοποιούνται συχνά επιταχύνουν σημαντικά τον κώδικα.
    • Μέτρηση σταθερών κατά το χρόνο μεταγλώττισης. Εάν μια παράσταση εξαρτάται από μια σταθερά, η πραγματική τιμή της σταθεράς θα αντικατασταθεί σε αυτήν

Χρησιμοποιούμε το WebStorm ως περιβάλλον ανάπτυξης πελάτη ιστού.

Για ανάλυση κώδικα χρησιμοποιούμε soundQube, όπου ενσωματώνουμε αναλυτές στατικού κώδικα. Χρησιμοποιώντας αναλυτές, παρακολουθούμε την υποβάθμιση της ποιότητας του πηγαίου κώδικα JavaScript και προσπαθούμε να την αποτρέψουμε.

Σχετικά με το πρόγραμμα-πελάτη ιστού 1C

Τι προβλήματα λύναμε/επιλύσαμε;

Κατά την υλοποίηση του έργου, αντιμετωπίσαμε μια σειρά από ενδιαφέροντα προβλήματα που έπρεπε να λύσουμε.

Ανταλλαγή δεδομένων με τον διακομιστή και μεταξύ των παραθύρων

Υπάρχουν περιπτώσεις όπου η συσκότιση του πηγαίου κώδικα μπορεί να επηρεάσει τη λειτουργία του συστήματος. Ο κώδικας εκτός του εκτελέσιμου κώδικα του προγράμματος-πελάτη Ιστού, λόγω συσκότισης, μπορεί να έχει ονόματα συναρτήσεων και παραμέτρων που διαφέρουν από αυτά που αναμένει ο εκτελέσιμος κώδικας μας. Ο εξωτερικός κωδικός για εμάς είναι:

  • Κώδικας που προέρχεται από τον διακομιστή με τη μορφή δομών δεδομένων
  • Κωδικός για άλλο παράθυρο εφαρμογής

Για να αποφύγουμε τη συσκότιση κατά την αλληλεπίδραση με τον διακομιστή, χρησιμοποιούμε την ετικέτα @expose:

/**
 * @constructor
 * @extends {Base.SrvObject}
 */
Srv.Core.GenericException = function ()
{
    /**
     * @type {string}
     * @expose
     */
    this.descr;

    /**
     * @type {Srv.Core.GenericException}
     * @expose
     */
    this.inner;

    /**
     * @type {string}
     * @expose
     */
    this.clsid;

    /**
     * @type {boolean}
     * @expose
     */
    this.encoded;
}

Και για να αποφευχθεί η συσκότιση κατά την αλληλεπίδραση με άλλα παράθυρα, χρησιμοποιούμε τις λεγόμενες διεπαφές εξαγωγής (διεπαφές στις οποίες εξάγονται όλες οι μέθοδοι).

/**
 * Экспортируемый интерфейс контрола DropDownWindow
 *
 * @interface
 * @struct
 */
WebUI.IDropDownWindowExp = function(){}

/**
 * Перемещает выделение на 1 вперед или назад
 *
 * @param {boolean} isForward
 * @param {boolean} checkOnly
 * @return {boolean}
 * @expose
 */
WebUI.IDropDownWindowExp.prototype.moveMarker = function (isForward, checkOnly){}

/**
 * Перемещает выделение в начало или конец
 *
 * @param {boolean} isFirst
 * @param {boolean} checkOnly
 * @return {boolean}
 * @expose
 */
WebUI.IDropDownWindowExp.prototype.moveMarkerTo = function (isFirst, checkOnly){}

/**
 * @return {boolean}
 * @expose
 */
WebUI.IDropDownWindowExp.prototype.selectValue = function (){}

Χρησιμοποιήσαμε το Virtual DOM πριν γίνει mainstream)

Όπως όλοι οι προγραμματιστές που ασχολούνται με πολύπλοκες διεπαφές Web, συνειδητοποιήσαμε γρήγορα ότι το DOM δεν είναι κατάλληλο για εργασία με δυναμικές διεπαφές χρήστη. Σχεδόν αμέσως, εφαρμόστηκε ένα ανάλογο του Virtual DOM για τη βελτιστοποίηση της εργασίας με τη διεπαφή χρήστη. Κατά την επεξεργασία συμβάντων, όλες οι αλλαγές DOM αποθηκεύονται στη μνήμη και, μόνο όταν ολοκληρωθούν όλες οι λειτουργίες, οι συσσωρευμένες αλλαγές εφαρμόζονται στο δέντρο DOM.

Βελτιστοποίηση του προγράμματος-πελάτη Ιστού

Για να κάνουμε το web-πελάτη μας να λειτουργεί πιο γρήγορα, προσπαθούμε να χρησιμοποιήσουμε στο μέγιστο τις τυπικές δυνατότητες του προγράμματος περιήγησης (CSS, κ.λπ.). Έτσι, ο πίνακας εντολών φόρμας (που βρίσκεται σχεδόν σε κάθε μορφή της εφαρμογής) αποδίδεται αποκλειστικά με χρήση εργαλείων προγράμματος περιήγησης, χρησιμοποιώντας δυναμική διάταξη βασισμένη σε CSS.

Σχετικά με το πρόγραμμα-πελάτη ιστού 1C

Δοκιμές

Για δοκιμές λειτουργικότητας και απόδοσης, χρησιμοποιούμε ένα αποκλειστικό εργαλείο (γραμμένο σε Java και C++), καθώς και μια σουίτα δοκιμών που είναι κατασκευασμένα πάνω από Σελήνιο.

Το εργαλείο μας είναι καθολικό - σας επιτρέπει να δοκιμάσετε σχεδόν οποιοδήποτε πρόγραμμα με παράθυρο και επομένως είναι κατάλληλο για δοκιμή τόσο ενός thin client όσο και ενός web-πελάτη. Το εργαλείο καταγράφει τις ενέργειες του χρήστη που ξεκίνησε τη λύση εφαρμογής 1C σε ένα αρχείο σεναρίου. Ταυτόχρονα, καταγράφονται εικόνες της περιοχής εργασίας της οθόνης - πρότυπα -. Κατά την παρακολούθηση νέων εκδόσεων του προγράμματος-πελάτη Ιστού, τα σενάρια αναπαράγονται χωρίς τη συμμετοχή του χρήστη. Σε περιπτώσεις όπου το στιγμιότυπο οθόνης δεν ταιριάζει με το σημείο αναφοράς σε κανένα βήμα, η δοκιμή θεωρείται αποτυχημένη, μετά την οποία ένας ειδικός ποιότητας διενεργεί έρευνα για να προσδιορίσει εάν πρόκειται για σφάλμα ή για προγραμματισμένη αλλαγή στη συμπεριφορά του συστήματος. Σε περίπτωση προγραμματισμένης συμπεριφοράς, τα πρότυπα αντικαθίστανται αυτόματα με νέα.

Το εργαλείο μετρά επίσης την απόδοση της εφαρμογής με ακρίβεια έως και 25 χιλιοστά του δευτερολέπτου. Σε ορισμένες περιπτώσεις, κάνουμε βρόχο τμήματα του σεναρίου (για παράδειγμα, επαναλαμβάνοντας την καταχώριση παραγγελίας πολλές φορές) για να αναλύσουμε την υποβάθμιση του χρόνου εκτέλεσης με την πάροδο του χρόνου. Τα αποτελέσματα όλων των μετρήσεων καταγράφονται σε ένα ημερολόγιο για ανάλυση.

Σχετικά με το πρόγραμμα-πελάτη ιστού 1C
Το εργαλείο δοκιμών και η εφαρμογή μας υπό δοκιμή

Το εργαλείο μας και το σελήνιο αλληλοσυμπληρώνονται. για παράδειγμα, εάν κάποιο κουμπί σε μία από τις οθόνες έχει αλλάξει τη θέση του, το Selenium ενδέχεται να μην το παρακολουθεί, αλλά το εργαλείο μας θα το παρατηρήσει, επειδή κάνει μια σύγκριση pixel προς pixel του στιγμιότυπου οθόνης με το τυπικό. Το εργαλείο μπορεί επίσης να παρακολουθεί προβλήματα με την επεξεργασία εισόδου από το πληκτρολόγιο ή το ποντίκι, καθώς αυτό ακριβώς αναπαράγει.

Οι δοκιμές και στα δύο εργαλεία (το δικό μας και του Selenium) εκτελούν τυπικά σενάρια εργασίας από τις λύσεις εφαρμογών μας. Οι δοκιμές ξεκινούν αυτόματα μετά την καθημερινή κατασκευή της πλατφόρμας 1C:Enterprise. Εάν τα σενάρια είναι πιο αργά (σε σύγκριση με την προηγούμενη έκδοση), διερευνούμε και επιλύουμε την αιτία της επιβράδυνσης. Το κριτήριό μας είναι απλό - η νέα κατασκευή δεν πρέπει να λειτουργεί πιο αργά από την προηγούμενη.

Οι προγραμματιστές χρησιμοποιούν διαφορετικά εργαλεία για τη διερεύνηση περιστατικών επιβράδυνσης. χρησιμοποιείται κυρίως Έκδοση Dynatrace AJAX εταιρεία παραγωγής DynaTrace. Καταγράφονται τα αρχεία καταγραφής της εκτέλεσης της προβληματικής λειτουργίας στην προηγούμενη και νέα έκδοση και στη συνέχεια αναλύονται τα αρχεία καταγραφής. Ταυτόχρονα, ο χρόνος εκτέλεσης μεμονωμένων λειτουργιών (σε χιλιοστά του δευτερολέπτου) μπορεί να μην είναι αποφασιστικός παράγοντας - διαδικασίες υπηρεσιών όπως η συλλογή σκουπιδιών εκκινούνται περιοδικά στο πρόγραμμα περιήγησης, μπορούν να επικαλύπτονται με το χρόνο εκτέλεσης των λειτουργιών και να παραμορφώνουν την εικόνα. Πιο σχετικές παράμετροι σε αυτήν την περίπτωση θα ήταν ο αριθμός των εντολών JavaScript που εκτελέστηκαν, ο αριθμός των ατομικών λειτουργιών στο DOM κ.λπ. Εάν ο αριθμός των εντολών/λειτουργιών στο ίδιο σενάριο έχει αυξηθεί σε μια νέα έκδοση, αυτό σχεδόν πάντα σημαίνει πτώση της απόδοσης που πρέπει να διορθωθεί.

Επίσης, ένας από τους λόγους για την πτώση της απόδοσης μπορεί να είναι ότι το Google Closure Compiler για κάποιο λόγο δεν μπόρεσε να πραγματοποιήσει ενσωματωμένη αντικατάσταση της συνάρτησης (για παράδειγμα, επειδή η συνάρτηση είναι αναδρομική ή εικονική). Σε αυτήν την περίπτωση, προσπαθούμε να διορθώσουμε την κατάσταση ξαναγράφοντας τον πηγαίο κώδικα.

Επεκτάσεις προγράμματος περιήγησης

Όταν μια λύση εφαρμογής χρειάζεται λειτουργικότητα που δεν είναι διαθέσιμη στο JavaScript, χρησιμοποιούμε επεκτάσεις προγράμματος περιήγησης:

Οι επεκτάσεις μας αποτελούνται από δύο μέρη. Το πρώτο μέρος είναι αυτό που ονομάζεται επέκταση προγράμματος περιήγησης (συνήθως επεκτάσεις για Chrome και Firefox γραμμένες σε JavaScript), οι οποίες αλληλεπιδρούν με το δεύτερο μέρος - μια δυαδική επέκταση που υλοποιεί τη λειτουργικότητα που χρειαζόμαστε. Θα πρέπει να αναφέρουμε ότι γράφουμε 3 εκδόσεις δυαδικών επεκτάσεων - για Windows, Linux και MacOS. Η δυαδική επέκταση παρέχεται ως μέρος της πλατφόρμας 1C:Enterprise και βρίσκεται στον διακομιστή εφαρμογών 1C. Όταν καλείται για πρώτη φορά από ένα πρόγραμμα-πελάτη Ιστού, γίνεται λήψη στον υπολογιστή-πελάτη και εγκαθίσταται στο πρόγραμμα περιήγησης.

Όταν εκτελούνται στο Safari, οι επεκτάσεις μας χρησιμοποιούν NPAPI, ενώ όταν εκτελούνται στον Internet Explorer, χρησιμοποιούν τεχνολογία ActiveX. Η Microsoft Edge δεν υποστηρίζει ακόμη επεκτάσεις, επομένως το πρόγραμμα-πελάτης ιστού σε αυτό λειτουργεί με περιορισμούς.

Περαιτέρω ανάπτυξη

Ένα από τα καθήκοντα για την ομάδα ανάπτυξης πελάτη web είναι η περαιτέρω ανάπτυξη της λειτουργικότητας. Η λειτουργικότητα του προγράμματος-πελάτη Ιστού θα πρέπει να είναι πανομοιότυπη με τη λειτουργικότητα του thin client· όλες οι νέες λειτουργίες υλοποιούνται ταυτόχρονα και στον thin και στον web-πελάτη.

Άλλες εργασίες περιλαμβάνουν την ανάπτυξη της αρχιτεκτονικής, την ανακατασκευή, τη βελτίωση της απόδοσης και της αξιοπιστίας. Για παράδειγμα, μία από τις κατευθύνσεις είναι η περαιτέρω κίνηση προς ένα ασύγχρονο μοντέλο εργασίας. Ορισμένες από τις λειτουργίες του προγράμματος-πελάτη Ιστού βασίζεται επί του παρόντος σε ένα σύγχρονο μοντέλο αλληλεπίδρασης με τον διακομιστή. Το ασύγχρονο μοντέλο γίνεται πλέον πιο σχετικό στα προγράμματα περιήγησης (και όχι μόνο στα προγράμματα περιήγησης) και αυτό μας αναγκάζει να τροποποιήσουμε το πρόγραμμα-πελάτη Ιστού αντικαθιστώντας τις σύγχρονες κλήσεις με ασύγχρονες (και αναμορφώνοντας τον κώδικα ανάλογα). Η σταδιακή μετάβαση σε ένα ασύγχρονο μοντέλο εξηγείται από την ανάγκη υποστήριξης λύσεων που κυκλοφορούν και τη σταδιακή προσαρμογή τους.

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο