WO2010103247A1 - Methods and devices for updating a client/server application without a client-side application restart - Google Patents

Methods and devices for updating a client/server application without a client-side application restart Download PDF

Info

Publication number
WO2010103247A1
WO2010103247A1 PCT/FR2010/050429 FR2010050429W WO2010103247A1 WO 2010103247 A1 WO2010103247 A1 WO 2010103247A1 FR 2010050429 W FR2010050429 W FR 2010050429W WO 2010103247 A1 WO2010103247 A1 WO 2010103247A1
Authority
WO
WIPO (PCT)
Prior art keywords
binary
class
server
version
client
Prior art date
Application number
PCT/FR2010/050429
Other languages
French (fr)
Inventor
Giovanni Albani
Original Assignee
Giovanni Albani
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Giovanni Albani filed Critical Giovanni Albani
Publication of WO2010103247A1 publication Critical patent/WO2010103247A1/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/656Updates while running
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/542Intercept

Definitions

  • the invention is in the field of client / server applications.
  • the invention is concerned with the particular field of client / server applications in which the client is a "heavy” or “rich” client, as opposed to so-called “light” clients.
  • a "heavy client” is software capable of executing mainly on the client device, as opposed to “thin clients” that run mainly on the server device, the client device serving only for the client device. display and data entry, usually via a web browser.
  • Microsoft's "ClickOnce” product allows different clients to share applications or network files hosted on a Web server.
  • this product allows an automatic update of the application when starting or closing this application, checking whether a new version is available on the network, and if necessary, allowing the download by the device. client parts of the application changed since the last version and the reinstallation of the application by the client device from a new folder.
  • the invention solves the aforementioned problem by providing a solution for updating a client / server application during the execution of the application by the client, this update applying transparently and does not require restarting of the application.
  • the invention relates to a method that can be implemented by a client device comprising:
  • the invention relates to a client device comprising:
  • the invention relates to a method that can be implemented by a server device, this server device comprising: a database of binary objects, each of which is associated with a version number;
  • This process comprises:
  • a step of processing this modified source file enabling a client device executing a first binary object obtained by compiling the source file thus processed, to intercept a call from the first binary object to a second binary object;
  • the invention relates to a server device comprising;
  • - Database access means for identifying for a version of a first binary object, the most recent version of at least a second binary object compatible with the version of this first binary object;
  • means for processing said modified source file enabling a client device, executing a first binary object obtained by compilation said source file processed, intercepting a call from said first bit object to a second bit object;
  • binary object or “binary file” is used interchangeably to mean a computer file containing a set of compiled instructions that can be executed by a computer.
  • the invention makes it possible to update a client / server application during the execution of the application by the clients, this update being applied transparently and without the need to restart the application. .
  • the method implemented by the client device comprises an update step of downloading, from the server, the latest versions of the binary files owned by the client device.
  • This update step allows the client to run the latest version of the application compiled by the server, after verifying that it is compatible with the version of the instances of the classes being executed.
  • the method implemented by the client device comprises a step of obtaining a database for identifying a version of a first class, Ia. the latest version of at least a second class compatible with the first class version.
  • Compatibility test prevents an instance of a class from an older version of the application from calling an instance of a class of a newer version that is no longer compatible with the version of the class appellant.
  • a class B is said to be compatible with class A if all calls from A to B are valid. For example, an incompatibility can occur if an older version of a class calls a method that no longer exists in a new version of another class.
  • the server device is to compile the source data into binary data and able to manage this data to transmit, receive and store from predefined priorities.
  • priorities can be chosen among: blocking changes in progress when a modified version of the application received by the server is verified and validated, the transmission of changes as and when they are compiled to all users, and the transmission of all changes to all users as and when they are made with a merge of compatible changes.
  • the various steps of the methods implemented by the client device and by the server device are determined by instructions of computer programs.
  • the invention also relates to a computer program on an information medium, this program being capable of being implemented in a computer, this program comprising instructions adapted to the implementation of the steps of least one of the methods as mentioned above.
  • This program can use any programming language, and be in the form of source code, object code, or intermediate code between source code and object code, such as in a partially compiled form, or in any other desirable form.
  • the invention also relates to a computer-readable information medium, comprising instructions of a computer program as mentioned above.
  • the information carrier may be any entity or device capable of storing the program.
  • the medium may comprise storage means, such as a ROM, for example a CD ROM or a microelectronic circuit ROM, or a magnetic recording medium, for example a floppy disk or a disk. hard.
  • the information medium may be a transmissible medium such as an electrical or optical signal, which may be conveyed via an electrical or optical cable, by radio or by other means.
  • the program according to the invention can be downloaded in particular on an Internet type network.
  • the information carrier may be an integrated circuit in which the program is incorporated, the circuit being adapted to execute or to be used in the execution of the method in question.
  • FIG. 1a is a startup sequence diagram of a client application and modification by the user
  • FIG. 1b is a linear diagram of the execution and the modification of an application
  • FIGS. 2a and 2b show a graphical interface diagram making it possible, by successive clocking, to access the source code corresponding to a graphic element to be corrected;
  • FIG. 3 is a validation diagram of the modifications made by the user;
  • FIG. 4 is a diagram of progressive downloading of the application adapted to the management of the modifications;
  • FIG. 5 is a diagram for taking into account new versions during the execution of the application;
  • FIG. 6 is a reduction diagram of the dependency chains in the recompilations;
  • FIG. 7 is a diagram for helping to select one of several modified versions of the application.
  • FIG. 8 is a diagram of access to data to be modified in relation to a graphic element of the application.
  • FIG. 9 is an illustration of an implementation selector graphical interface
  • FIG. 10 represents a client device and a server device according to a particular embodiment of the invention
  • FIG. 11 represents, in flowchart form, the main steps of a method for generating binary objects that can be implemented by the server of FIG. 10;
  • FIG. 12 to 14 show, in flowchart form, the main steps of a method that can be implemented by the client device of Figure 10;
  • Appendices 1 to 5 represent the contents of the databases that can be used in an exemplary implementation of the invention.
  • the invention proposes acting directly through the interface of the application through the source code module to be modified provided by the server, the modifications of each user-collaborator then being reflected on the binary code of the others. users after recompiling changes at the server level.
  • each user is potentially a suitable collaborator to provide modifications on which other users can react.
  • the invention enables a collaborative method of modifying digital applications, comprising a network for transmitting data between a server and user terminals, in which a user transmits a request to the server to download the execution code.
  • binary at least a portion of the application to be executed and wherein the following steps succeed;
  • FIGS. 1A and 1B an example of provisioning a client application for modification is illustrated.
  • the client h requests the download of the binary file modules of its application (step D100) and executes the application from all the downloaded binaries (step D102).
  • the client application thus offers the user U of the network R the possibility of modifying the application from modifiable files (step D104) transmitted by a server S.
  • the user connects his computer terminal to a remote server, through a dedicated application.
  • the client application located on the user's terminal, contacts the host server that transmits the main program execution binary files and the dependent modules, including the modules of the part of the application. editable application.
  • the user can therefore freely execute the desired application on his terminal.
  • the user selects the element of the program to be modified by launching the modification action through a dedicated human / machine interface element (step D108).
  • the server transmits the source code downloaded by the client application and corresponding to the element that the user has decided to modify (step DI10).
  • the client program sends a request to the server in order to obtain the source code associated with the binary module to be modified (step D12).
  • the server searches its database for the associated source code and transmits it to the user. Once the file is received, an edit window opens and allows the user to edit the source code (step
  • the source code can be downloaded either in an integrated editor or in an external editor.
  • FIGs 2a and 2b schematically illustrate the access, from a graphical interface, to the source code of a graphic element.
  • a button 12 is provided for modifying the source code of an element 14 displayed on the window or other windows of the application by successive clicks (FIG. 2a).
  • the pointer 16 of the mouse is positioned on the object 18 to be modified (FIG. 2b); a contextual menu 20 automatically appears, provided with a command 22 for modifying the source code associated with the object.
  • the client application may offer the user the possibility of validating the modifications effected on the source code (step D1 16), in order to ensure the proper functioning of the new code.
  • the application transmits to the server the modified file (step Dl 18) in a process of recompiling the binary files corresponding to the modified modules, as illustrated in FIG.
  • the server receiving the modified file will compile the source code, this operation can be performed on the server or be expatriated to another server (step D120).
  • the compilation can be successful or not.
  • the compilation process does not succeed (block D122) and an error message is sent to the client application: the changes are canceled and the user is informed (step D124).
  • the server updates its database of binary files and its source code base (step D126) and the user is informed that his modifications have been taken into account (step D128).
  • the codes and files are not only retransmitted to the client application but to all the client applications connected to the server and having downloaded this module.
  • all users benefit from real-time changes.
  • the users are informed by a message of the arrival of new files modifying the behavior of the application in order to identify it.
  • the client application downloads from the server (step D400) binary files cut for example by class.
  • the server establishes the list of references between the files. This list can in particular be grafted to the files or stored in the server.
  • the files contain the startup class of the application, as well as classes directly referenced by it.
  • the client then creates an instance of the boot class and executes the main algorithm (step D402).
  • step D403 the client evaluates whether the class has already been downloaded (step D404).
  • the client issues a request to the server to download the class and dependencies necessary for its instantiation (D405).
  • the class is then instantiated in memory (D406) by the client, whether the class was present locally or downloaded from the server. The execution then resumes its normal course (iteration 40).
  • the client then requests from the server - at the time of the unstanciation of a class - the binary file corresponding to the most recent version of the class among those that are compatible, unless it already has a compatible version.
  • the diagram in Figure 5 illustrates an example of determining the compatibility of a version.
  • V is the version of class B whose instance is in progress
  • the client is trying to instantiate an X version of the class C (B and C may be identical) in step 500
  • the classes referenced by X and the parent classes of V i.e., of which V inherits
  • L1 and L2 step 502
  • L2 including V.
  • the union I lists is then determined (step 504): if I contains two different versions of the same class, then the X version is not compatible with version V (step 506). Otherwise, the X version is compatible with version V (step 508).
  • the client updates advantageously the binary files that it owns, by downloading from the server the last versions.
  • This variant therefore aims to automatically reduce the length of dependency chains between classes, that is to say finally the number of elements of the chain (corresponding to the maximum of necessary recompilations when an element of the chain is amended).
  • the reduction is done by interposing an abstract class (or an interface) containing all the public members of the dependent class and generated automatically by dynamic instantiation of this class.
  • an abstract class forming an interface 60 is automatically generated from each dependent class C1 referenced by a class C1. Everywhere in the code the classes referencing C2 are changed in order to point to the abstract class 60 instead of pointing to concrete class C2. Only the places where the constructor is called (for example via the keyword "new"), the instance is created by means of an instantiation analysis dynamic objects, which eliminates all hard references to the concrete class.
  • the latest version of the class can be used.
  • the use of the latest compatible version, as determined above, is then particularly effective.
  • the application is able to allow users to select a module version from among the best modules put forward.
  • the selection of a module is made from the list of classes that implement a specified interface or that inherit from a specified base class.
  • An interface is a class definition, which the programmer inherits to implement a class according to established conventions.
  • the elements of the list are ordered according to at least one specified criterion.
  • the client application sends a request (step D701) to the server to obtain all the classes that implement the interface serving as a search filter, according to a criterion specified in the request.
  • the criterion specified in the query can be for example; the popularity of the class, the number of times it appears in the favorites, the number of times it was chosen, the date of the change, etc.
  • the server returns the list of classes corresponding to the criterion, after searching in its source code base (step D703).
  • the list received by the client application is displayed (FIG. 9) in the client application (FIG. 9, 902), and the user can then choose his preferred implementation (step D705).
  • the list is accompanied by eligibility criteria (904) (popularity, rating, date, etc.).
  • step D707 the choice of the user is instantiated by the application, asking the server for the binary module corresponding to the chosen code.
  • the server searches in its binary database, the binary module associated with the selected code and transmits it to the client who is able to instantiate it.
  • An automatic instantiation of the chosen class can be requested by the application.
  • the instance is then passed to the application code as an instance of base interface type or base type.
  • an image editor has filters such as brightness, contrast, and so on.
  • Its source code contains an IFilter interface (the interface simply defines the type of input and the expected output type of the filters).
  • IFilter interface the interface simply defines the type of input and the expected output type of the filters.
  • graphic elements of the client application are associated by the server with other data than with the data of the source code by a unique identifier from any graphic element. the interface of the application. This identifier is then used to access data.
  • data can be for example suggestions, a thread, a list of tasks concerning the graphic element, the list of users who are using or modifying the graphic element, etc.
  • step D801 when the user clicks on a graphic element (or an element which is attached thereto, such as a button or a contextual menu), the following series of actions is triggered; selecting the instance corresponding to the graphic element of the application (step D801); if the user clicks directly on the element, this determination can be made via a keyword such as "this", otherwise it can be done via a link established by the developer, or by searching for parent elements of the clicked item
  • step D803 determination, by means of an internal function described below, of the unique identifier of the class corresponding to said instance (step D803);
  • this identifier can be for example: the complete name of the class, an arbitrary number of identification assigned during the creation of the class, etc. the server retransmits this data to the client application that displays them (807).
  • These data can be multimedia data (sounds, images, hypertext links, textual data) of any type transmissible by network.
  • the client application has an internal function that can be performed in multiple ways, for example:
  • the client device DCL can for example be incorporated into the computer terminal already described.
  • the hardware architecture of the DCL client device is that of a conventional computer. It comprises in particular a dll processor, a RAM type RAM dl2, a ROM ROM dl3 and dl4 communication means with the server SRV.
  • the ROM ROM dl3 of the DCL client device comprises a PC client method according to the invention and the detailed operation of which will be described with reference to FIG. 12.
  • This PC client method is particularly suitable for downloading OB binary objects from the SRV server constituting an AL software application, for example a video game or an office application.
  • This client method implements a compatible version search RVCC function which will be described with reference to FIG.
  • the PC client method and OB bit objects may be executed by the dll processor of the DCL client device.
  • the hardware architecture of the SRV server is that of a conventional computer. It comprises, in particular, a processor s21, a random access memory of the RAM type s22, a read-only memory of the ROM type s23 and means s24 of communication with the client device DCL.
  • the s23 ROM ROM of the SRV server device comprises a GOB computer program for generating the OB binary objects and whose main steps will be described with reference to FIG. 11.
  • the server SRV includes means for accessing a database BDFBCS in which it stores the binary objects OB.
  • BDFBCS database
  • the contents of this BDFBCS database are tabulated in Appendix 1.
  • This database BDFBCS comprises a plurality of records, each including;
  • a binary object for example Toto vl.dll
  • a version number for example 1
  • the OB binary objects are generated by compiling source code FST files, called “processed files”. As will be described later, a processed FST file is;
  • the SRV server includes a s25 compiler.
  • the s25 compiler can for example be the one supplied with the "Framework"
  • each binary file contains the compiled version of one and only one class. Therefore, if an original source file contains several classes, then this source file is in a first cut into as many FS files as it contains classes.
  • Each source file FS is then processed to generate a file FST which generates by compilation a single binary object OB.
  • OB the binary file containing the most recent version of the initial class by which the software application AL begins to run.
  • the SRV server (or the client DCL) includes information that defines the initial class, the version of this most recent class being called OB 0 .
  • FS are stored in a source code database BDCSCS accessible by the SRV server.
  • BDCSCS source code database
  • this BDCSCS database contains the source code of the latest version of each class.
  • the content of this database BDCSCS is given, in one example, as a table in Appendix 2.
  • the server SRV includes means for accessing a database BDDCS called "dependencies", this database comprising, for each binary file (left column), the list of binary files on which it depends (right column) , which is the list of binary files that it references and needs for its execution.
  • the content of this database BDDCS is given in tabular form in Appendix 3.
  • the server SRV comprises means of access to a BDHCS database called "inheritance" containing for each binary file, the list of binary "parent" files.
  • a binary file A is said to be the parent of another binary object B if, in the sense of object-oriented programming, a class of the binary file B inherits from a class of the binary file A or if a class of the binary file B implements an interface defined in binary file A.
  • step E5 the GOB method for generating binary files divides the source file FS into as many files. FS sources it includes classes, the notion of class being, as we have said, to understand in the broad sense. For the sake of simplicity, it will be assumed in this example that the source file FS has only one class and is not cut.
  • step E5 may be preceded by a step E4 in which the GOB method for generating binary files increases the number of inheritance relationships in the source code of the file. AL software application.
  • the GOB method for generating binary files modifies the source file FS by adding, for each concrete class contained in said source file FS, an abstract class (or an interface) taking over all or part of the public members of that concrete class.
  • a concrete class is a class that can be instantiated.
  • the GOB method modifies said concrete classes so as to make them inherit from said corresponding abstract classes, and changes all the references to said concrete classes contained in the source files of the application AL into references to said classes. Corresponding abstracts, except where instances are created for concrete classes.
  • step E5 is followed by an ElO step in which the GOB process for generating binary files analyzes the source code of each FS file thus obtained so as to identify each of the CL classes contained in this file.
  • FS source code and constitutes an LCC list of classes to compile.
  • the GOB method for generating binary files enriches the LCC list of classes to be compiled, by adding, for each class determined in the previous step ElO, the dependent classes of this class, those they are obtained from the BDDCS dependency database.
  • the Toto class ⁇ 3 is added to the LCC list.
  • the GOB method increments the version number of each class of the LCC list of the classes to be compiled.
  • the classes Titi and Toto thus get the respective version numbers v6 and v4.
  • the GOB method for generating binary files treats the source code of each class of the LCC list of the classes to be compiled so as to generate FST-treated source files within the meaning of the invention.
  • This processing consists in inserting, in the code of a class, INS instructions allowing the client device DCL, when it executes this class, on the one hand to determine its version, and on the other hand to intercept the calls to another class.
  • this process replaces each call to an instance creation of a class with an INS statement of the type given in Appendix 5.
  • PC designates the client process according to the invention
  • PINT means an interception process of the client method capable of redirecting the call to the called class ("Tutu”) to the binary file corresponding to this called class and having the most recent compatible version with the calling class ( "Toto v4").
  • the search for the instructions to be substituted in this way may consist in looking for the instructions making use of the "new" operator known to those skilled in the art.
  • only calls to application-specific class instance creations are substituted for such instructions, such classes being those listed in the BDCSCS source code database or those defined in the source files. FS.
  • similar substitutions can be made to allow the DCL client device to intercept calls other than creation of instances, including calls to static methods and more generally any call from a calling class to a called class.
  • step E40 will be omitted.
  • .NET notably VB.NET and C #
  • step E50 of compiling the classes of the LCC list of the classes to be compiled. The compilation is known per se and will not be detailed here.
  • the compilation step E50 is followed by an E60 test during which it is checked whether the compilation failed or succeeded. If the compilation was successful, the result of the E60 test is positive, and the BDCSCS source code, BDFBCS binary file, BDDCS dependency, and BDHCS inheritance databases are updated in a step E70.
  • this PC client method comprises three main processes capable of running in parallel, namely:
  • the PDEM startup and PINT interception processes use a PCH function for loading binary objects which will be described hereinafter with reference to FIG. 13.
  • the boot PDEM process includes a first step FlO of calling the PCH function for loading the OBo binary object containing the most recent version of the initial class by which the software application AL begins to execute.
  • This loading function PCH comprises a step GlO of downloading the received binary object (in this case OBo) and recursively binary objects on which this binary object depends.
  • These binary objects (OBo, ...) are stored in a local binary bit database BDFBCC to the DCL client device during the same step GlO.
  • the loading function PCH thus downloads, during a step G20, from the server SRV, the lines of the dependency databases BDDCS and inheritance BDHCS concerned and copy these lines into similar local databases referenced respectively BDDCC and BDHCC.
  • the databases BDDCC and BDHCC are grouped in a database BDC (respectively BDS).
  • the PDEM boot process of the client device DCL locally initiates the execution of the software function AL, during a step F20, by the execution of the binary object OBo.
  • This Button_dick function calls the PINT interception process.
  • Step F30 call to a function RVCC to determine the version of the class called called ("Tutu”) the most recent and compatible with the version of the calling class ("Toto v4"). This function will be described later with reference to FIG.
  • the interception process PINT then calls, during the same step F30, the load PCH function already described with, as an input parameter, the result of the aforementioned RVCC function.
  • the PINT interception process redirects ⁇ during a step
  • step F40 the intercepted call to the downloaded binary object in step F30.
  • the intercepted call is an instance creation, so step RO creates an instance of the class of the downloaded binary object in step F30.
  • the function is called by the DCL client device.
  • the function RVCC comprises a step H5 of determining the most recent version among the versions of the binary object called OB 2 among all the versions of this binary object present in the BDFBCC database of binary objects of the client device DCL.
  • This step H5 is followed by a general stage TVC consisting of determining whether this version of OB 2 is compatible with the class version of the calling binary object OBi.
  • the binary object OB 2 is returned in this version during a step H60.
  • the RVCC function returns to step H5 to determine, if it exists (test H42) the version of the binary object called OB 2 the most recent of all the remaining versions of this binary object present in the database. BDFBCC data. The general TVC stage is implemented for this new version. If such a version does not exist (result of the negative test H42), the function RVCC requests, during a step H44, the execution of a function RVCS by the server SRV.
  • This function allows the SRV server to determine the version of the binary object called OB 2 the most recent among those present in the BDFBCS binary database of the server and compatible with the version of the OBi calling object.
  • This RVCS function is identical to the RVCC function; it differs only in that it works on the server databases instead of working on the local databases of the DCL client device.
  • the RVCS function returns the binary object called OB 2 , in this version, during a step H46.
  • the general stage TVC makes it possible to determine if a given version of the called binary object OB2 is compatible with the class version of the binary object calling OBi includes:
  • a step H10 constituting a first list L1 comprising all the classes on which the binary object called OB 2 depends by using the database of dependencies BDDCC;
  • H30 test consisting in determining whether the union of the first and second lists L1, L2 comprises two distinct versions of the same class. If this is the case, the result of the test H30 is negative and the versions of the binary objects OBi and OB 2 are not compatible. In the other case, they are.
  • the client PC method has a PMAJ process for updating the BDHCC inheritance databases, BDDCC dependencies, and local BDFBCC binary objects, namely those of the client device DCL.
  • This update can for example be done at the request of the DCL client device user, at regular intervals, or on detection of a call to a specific function.
  • This process consists in interrogating (step F50) the server device SRV in order to know if there are new versions of OB binary objects, corresponding to the binary objects referenced in BDFBCC, and if this is the case for downloading (step F60) these binary objects recursively, as well as the BDDCS dependency and BDHCS inheritance databases, using the PCH function already described.
  • the client device DCL knows on demand the latest versions of the binary objects of the software application AL and the dependencies between these objects.
  • the server device SRV consequently comprises means for indicating to the client device DCL the new versions of OB 1 binary objects.
  • each source file processed FST has only one class, but the invention is also applicable to other embodiments in which at least one source file processed FST has more than one class.
  • the server part can be split into each of the users' terminals in order to allow "peer to peer" operation between users.
  • each client device itself performs the processing on the modified source files and generates the corresponding binaries. The processes are the same as those described in the previous embodiment, except that each client device is in communication with neighboring client devices in order to search for, obtain, and make available the binary files it owns and records from its databases.
  • Tlti (here is Button_click ()

Abstract

The invention relates to a method that can be used to update a client/server application during the execution of the application by the client device, said update being applied in a transparent manner and without the need for the application to be restarted. According to the invention, a client transmits a request to a server to download the binary execution code of at least part of the application to be executed and optionally a subsequent request to obtain the source code associated with a module to be modified. The modified source code is transmitted to the server for compilation and, in the event of a successful compilation, the binary data and the source code are updated. Each client device can obtain said updates by downloading the binary objects modified during the execution of the application.

Description

Procédés et dispositifs pour Ia mise à jour d'une application client/ serveur sans redémarrage de l'application côté client Methods and devices for updating a client / server application without restarting the client-side application
Arrière-plan de l'inventionBackground of the invention
L'invention se situe dans le domaine des applications client/serveur.The invention is in the field of client / server applications.
Plus particulièrement, et de façon non limitative, l'invention s'intéresse au domaine particulier des applications client/serveur dans lesquelles le client est un client dit « lourd » ou « riche », par opposition aux clients dits « légers ».More particularly, and in a nonlimiting manner, the invention is concerned with the particular field of client / server applications in which the client is a "heavy" or "rich" client, as opposed to so-called "light" clients.
On rappelle qu'un « client lourd » est un logiciel apte à s'exécuter principalement sur le dispositif client, par opposition aux « clients légers » qui s'exécutent principalement sur le dispositif serveur, le dispositif client ne servant qu'à l'affichage et à la saisie des données, généralement via un navigateur Web.It is recalled that a "heavy client" is software capable of executing mainly on the client device, as opposed to "thin clients" that run mainly on the server device, the client device serving only for the client device. display and data entry, usually via a web browser.
Dans le contexte des applications client/serveur, il est souhaitable de pouvoir effectuer une mise à jour de l'application de façon transparente pour l'utilisateur.In the context of client / server applications, it is desirable to be able to update the application transparently for the user.
Le produit "ClickOnce" de la société Microsoft (marque déposée) permet le partage, par différents clients, d'applications ou de fichiers réseau hébergés sur un serveur Web. Avantageusement, ce produit permet une mise à jour automatique de l'application au moment du démarrage ou de la fermeture de cette application, en vérifiant si une nouvelle version est disponible sur le réseau, et le cas échéant, en permettant le téléchargement par le dispositif client des parties de l'application modifiées depuis la dernière version et la réinstallation de l'application par le dispositif client à partir d'un nouveau dossier.Microsoft's "ClickOnce" product (registered trademark) allows different clients to share applications or network files hosted on a Web server. Advantageously, this product allows an automatic update of the application when starting or closing this application, checking whether a new version is available on the network, and if necessary, allowing the download by the device. client parts of the application changed since the last version and the reinstallation of the application by the client device from a new folder.
Mais ce produit présente un inconvénient majeur en ce qu'il ne permet pas la mise à jour de l'application en cours d'exécution par le client, dans le sens où le client est contraint de redémarrer l'application afin de pouvoir exécuter les fonctionnalités incluses dans la nouvelle version de l'application. Objet et résumé de l'inventionBut this product has a major disadvantage in that it does not allow the application to be updated by the client, in the sense that the client is forced to restart the application in order to be able to execute the applications. features included in the new version of the application. Object and summary of the invention
L'invention permet de résoudre le problème susmentionné en proposant une solution pour mettre à jour une application client/serveur pendant l'exécution de l'application par le client, cette mise à jour s'appliquant de manière transparente et ne nécessitant pas le redémarrage de l'application.The invention solves the aforementioned problem by providing a solution for updating a client / server application during the execution of the application by the client, this update applying transparently and does not require restarting of the application.
Plus précisément, et selon un premier aspect, l'invention concerne un procédé pouvant être mis en œuvre par un dispositif client comportant :More specifically, and according to a first aspect, the invention relates to a method that can be implemented by a client device comprising:
- une étape de téléchargement de fichiers binaires découpés par classes à partir d'un serveur, de façon progressive au fur et à mesure de l'exécution d'une application ; et lors de l'instanciation d'une classe, si celle-ci n'est pas présente dans ledit client : - une étape de demande au serveur du téléchargement du fichier binaire correspondant à la version la plus récente de la classe parmi celles qui sont compatibles avec une version de la classe dont l'instance est en cours et des dépendances nécessaires à son instanciation ; eta step of downloading binary files divided by classes from a server, in a progressive manner as the execution of an application; and when instantiating a class, if it is not present in said client: - a step of requesting the server of the download of the binary file corresponding to the most recent version of the class among those which are compatible with a version of the class whose instance is in progress and the dependencies necessary for its instantiation; and
- une étape d'instanciation de la classe téléchargée en mémoire du dispositif client.a step of instantiating the class downloaded to the memory of the client device.
Corrélativement, l'invention concerne un dispositif client comportant :Correlatively, the invention relates to a client device comprising:
- des moyens de téléchargement de fichiers binaires découpés par classes à partir d'un serveur, de façon progressive au fur et à mesure de l'exécution d'une application ; et lors de l'instanciation d'une classe, si celle-ci n'est pas présente dans ledit client :means for downloading binary files divided by classes from a server, in a progressive manner as the execution of an application; and when instantiating a class, if it is not present in the client:
- des moyens de téléchargement, à partir dudit serveur, du fichier binaire correspondant à la version la plus récente de la classe parmi celles qui sont compatibles avec une version de la classe dont l'instance est en cours et des dépendances nécessaires à son instanciation ; etmeans for downloading, from said server, the binary file corresponding to the most recent version of the class among those that are compatible with a version of the class whose instance is in progress and the dependencies necessary for its instantiation; and
- des moyens distanciation de ladite classe téléchargée en mémoire dudit dispositif client.means for distancing said downloaded class from memory of said client device.
Selon un deuxième aspect, l'invention concerne un procédé pouvant être mis en œuvre par un dispositif serveur, ce dispositif serveur comportant : - une base de données d'objets binaires, chacun d'entre eux étant associé à un numéro de version ;According to a second aspect, the invention relates to a method that can be implemented by a server device, this server device comprising: a database of binary objects, each of which is associated with a version number;
- une base de données de fichiers sources, chacun d'entre eux étant associé à un numéro de version ; - un compilateur apte à générer les objets binaires à partir des fichiers sources ;a database of source files, each of which is associated with a version number; a compiler able to generate the binary objects from the source files;
- une base de données permettant d'identifier pour une version d'un premier objet binaire, la version la plus récente d'au moins un deuxième objet binaire compatible avec la version du premier objet binaire ; Ce procédé comporte :- a database for identifying for a version of a first binary object, the most recent version of at least a second binary object compatible with the version of the first binary object; This process comprises:
- une étape de réception d'un fichier source modifié ;a step of receiving a modified source file;
- une étape de traitement de ce fichier source modifié permettant à un dispositif client exécutant un premier objet binaire obtenu par compilation du fichier source ainsi traité, d'intercepter un appel du premier objet binaire vers un deuxième objet binaire ;a step of processing this modified source file enabling a client device executing a first binary object obtained by compiling the source file thus processed, to intercept a call from the first binary object to a second binary object;
- une étape de compilation du fichier source traité et en cas de succès de cette étape de compilation :a compilation step of the processed source file and if this compilation step is successful:
- une étape de mise à jour desdites bases de données ; eta step of updating said databases; and
- une étape de mise à disposition du premier objet binaire au dispositif client.a step of making the first bit object available to the client device.
Corrélativement, l'invention concerne un dispositif serveur comportant ;Correlatively, the invention relates to a server device comprising;
- des moyens d'accès à une base de données d'objets binaires, chacun d'entre eux étant associé à un numéro de version ; - des moyens d'accès à une base de données de fichiers sources, chacun d'entre eux étant associé à un numéro de version ;means for accessing a database of binary objects, each of them being associated with a version number; means for accessing a database of source files, each of them being associated with a version number;
- un compilateur apte à générer les objets binaires à partir des fichiers sources ;a compiler able to generate the binary objects from the source files;
- des moyens d'accès à une base de données permettant d'identifier pour une version d'un premier objet binaire, la version la plus récente d'au moins un deuxième objet binaire compatible avec la version de ce premier objet binaire ;- Database access means for identifying for a version of a first binary object, the most recent version of at least a second binary object compatible with the version of this first binary object;
- des moyens de réception d'un fichier source modifié ;means for receiving a modified source file;
- des moyens de traitement dudit fichier source modifié permettant à un dispositif client, exécutant un premier objet binaire obtenu par compilation dudit fichier source traité, d'intercepter un appel dudit premier objet binaire vers un deuxième objet binaire ;means for processing said modified source file enabling a client device, executing a first binary object obtained by compilation said source file processed, intercepting a call from said first bit object to a second bit object;
- des moyens de compilation du fichier source traité ; et en cas de succès de ladite étape de compilation ; - des moyens de mise à jour desdites bases de données ; etmeans for compiling the processed source file; and if successful of said compiling step; means for updating said databases; and
- des moyens de mise à disposition du premier objet binaire au dispositif client.means for making the first binary object available to the client device.
Dans Ia présente demande, on appelle indifféremment « objet binaire » ou « fichier binaire », un fichier informatique contenant un ensemble d'instructions compilées pouvant être exécutées par un ordinateur.In the present application, the term "binary object" or "binary file" is used interchangeably to mean a computer file containing a set of compiled instructions that can be executed by a computer.
D'une façon générale, l'invention permet la mise à jour d'une application client/serveur pendant l'exécution de l'application par les clients, cette mise à jour étant appliquée de façon transparente et sans besoin de redémarrer l'application.In general, the invention makes it possible to update a client / server application during the execution of the application by the clients, this update being applied transparently and without the need to restart the application. .
Dans un mode particulier de réalisation, le procédé mis en œuvre par le dispositif client comporte une étape de mise à jour consistant à télécharger, à partir du serveur, les dernières versions des fichiers binaires possédés par le dispositif client. Cette étape de mise à jour permet au client d'exécuter la dernière version de l'application compilée par le serveur, après vérification que celle-ci soit compatible avec la version des instances des classes en cours d'exécution. Ce mode de réalisation de l'invention trouve un intérêt particulier lorsque l'invention s'applique dans le contexte d'un procédé de développement collaboratif d'applications numériques et de mise à jour ou corrections par modifications de ces applications accessibles en réseau.In a particular embodiment, the method implemented by the client device comprises an update step of downloading, from the server, the latest versions of the binary files owned by the client device. This update step allows the client to run the latest version of the application compiled by the server, after verifying that it is compatible with the version of the instances of the classes being executed. This embodiment of the invention is of particular interest when the invention applies in the context of a collaborative development process of digital applications and update or corrections by modifications of these applications accessible network.
Elle permet de simplifier et d'accélérer le développement collaboratif d'applications informatiques, en tenant compte directement de manière constructive et dynamique des apports des utilisateurs, tant sur le développement d'une application que sur ses corrections ou mises à jour. Les apports en développement, correction ou mise à jour d'une application étant regroupés sous le terme «modifications ».It makes it possible to simplify and accelerate the collaborative development of computer applications, by directly and constructively taking into account the contributions of users, both on the development of an application and on its corrections or updates. The contributions in development, correction or update of an application being grouped under the term "modifications".
Dans un mode particulier de réalisation, le procédé mis en œuvre par Ie dispositif client comporte une étape d'obtention d'une base de données permettant d'identifier pour une version d'une première classe, Ia version la plus récente d'au moins une deuxième classe compatible avec Ia version de Ia première classe.In a particular embodiment, the method implemented by the client device comprises a step of obtaining a database for identifying a version of a first class, Ia. the latest version of at least a second class compatible with the first class version.
Le test de compatibilité permet d'éviter qu'une instance d'une classe datant d'une ancienne version de l'application appelle une instance d'une classe d'une version plus récente qui ne soit plus compatible avec la version de la classe appelante. Une classe B est dite compatible avec une classe A si tous les appels de A vers B sont valides. Par exemple, une incompatibilité peut avoir lieu si une ancienne version d'une classe appelle une méthode qui n'existe plus dans une nouvelle version d'une autre classe.Compatibility test prevents an instance of a class from an older version of the application from calling an instance of a class of a newer version that is no longer compatible with the version of the class appellant. A class B is said to be compatible with class A if all calls from A to B are valid. For example, an incompatibility can occur if an older version of a class calls a method that no longer exists in a new version of another class.
Le fait de rechercher non seulement sur le serveur mais aussi sur le client une version à la fois récente et compatible d'une classe permet avantageusement d'éviter que le dispositif client n'interroge le serveur à chaque instanciation d'une classe. Dans un mode particulier de réalisation, le dispositif serveur selon l'invention est à compiler les données source en données binaires et apte à gérer ces données pour les transmettre, les recevoir et les stocker à partir de priorités prédéfinies.Searching not only the server but also the client for a new and compatible version of a class advantageously prevents the client device from querying the server at each instantiation of a class. In a particular embodiment, the server device according to the invention is to compile the source data into binary data and able to manage this data to transmit, receive and store from predefined priorities.
Ces priorités peuvent notamment être choisies parmi : le blocage de modifications en cours lorsqu'une version modifiée de l'application reçue par le serveur est vérifiée et validée, la transmission des modifications au fur et à mesure de leur compilation à tous les utilisateurs, et la transmission de toutes les modifications à tous les utilisateurs au fur et à mesure de leur réalisation avec une fusion des modifications compatibles.These priorities can be chosen among: blocking changes in progress when a modified version of the application received by the server is verified and validated, the transmission of changes as and when they are compiled to all users, and the transmission of all changes to all users as and when they are made with a merge of compatible changes.
Dans un mode particulier de réalisation, les différentes étapes des procédés mis en œuvre par le dispositif client et par le dispositif serveur sont déterminées par des instructions de programmes d'ordinateurs.In a particular embodiment, the various steps of the methods implemented by the client device and by the server device are determined by instructions of computer programs.
En conséquence, l'invention vise aussi un programme d'ordinateur sur un support d'informations, ce programme étant susceptible d'être mis en œuvre dans un ordinateur, ce programme comportant des instructions adaptées à la mise en œuvre des étapes d'au moins un des procédés tel que mentionné ci-dessus.Consequently, the invention also relates to a computer program on an information medium, this program being capable of being implemented in a computer, this program comprising instructions adapted to the implementation of the steps of least one of the methods as mentioned above.
Ce programme peut utiliser n'importe quel langage de programmation, et être sous la forme de code source, code objet, ou de code intermédiaire entre code source et code objet, tel que dans une forme partiellement compilée, ou dans n'importe quelle autre forme souhaitable.This program can use any programming language, and be in the form of source code, object code, or intermediate code between source code and object code, such as in a partially compiled form, or in any other desirable form.
L'invention vise aussi un support d'informations lisible par un ordinateur, et comportant des instructions d'un programme d'ordinateur tel que mentionné ci-dessus.The invention also relates to a computer-readable information medium, comprising instructions of a computer program as mentioned above.
Le support d'informations peut être n'importe quelle entité ou dispositif capable de stocker le programme. Par exemple, le support peut comporter un moyen de stockage, tel qu'une ROM, par exemple un CD ROM ou une ROM de circuit microélectronique, ou encore un moyen d'enregistrement magnétique, par exemple une disquette (floppy dise) ou un disque dur.The information carrier may be any entity or device capable of storing the program. For example, the medium may comprise storage means, such as a ROM, for example a CD ROM or a microelectronic circuit ROM, or a magnetic recording medium, for example a floppy disk or a disk. hard.
D'autre part, le support d'informations peut être un support transmissible tel qu'un signal électrique ou optique, qui peut être acheminé via un câble électrique ou optique, par radio ou par d'autres moyens. Le programme selon l'invention peut être en particulier téléchargé sur un réseau de type Internet.On the other hand, the information medium may be a transmissible medium such as an electrical or optical signal, which may be conveyed via an electrical or optical cable, by radio or by other means. The program according to the invention can be downloaded in particular on an Internet type network.
Alternativement, le support d'informations peut être un circuit intégré dans lequel le programme est incorporé, le circuit étant adapté pour exécuter ou pour être utilisé dans l'exécution du procédé en question.Alternatively, the information carrier may be an integrated circuit in which the program is incorporated, the circuit being adapted to execute or to be used in the execution of the method in question.
Brève description des dessinsBrief description of the drawings
D'autres caractéristiques et avantages de la présente invention ressortiront de la description faite ci-dessous, en référence aux dessins et annexes qui en illustrent un exemple de réalisation dépourvu de tout caractère limitatif. Sur les figures et annexes :Other features and advantages of the present invention will emerge from the description given below, with reference to the drawings and appendices which illustrate an embodiment having no limiting character. In the figures and annexes:
- la figure la est un diagramme de séquence de démarrage d'une application cliente et de modification par l'utilisateur ;FIG. 1a is a startup sequence diagram of a client application and modification by the user;
- la figure Ib est un diagramme linéaire de l'exécution et de la modification d'une application ;FIG. 1b is a linear diagram of the execution and the modification of an application;
- les figures 2a et 2b représentent un schéma d'interface graphique permettant, par pointages successifs, d'accéder au code source correspondant à un élément graphique à corriger ;FIGS. 2a and 2b show a graphical interface diagram making it possible, by successive clocking, to access the source code corresponding to a graphic element to be corrected;
- la figure 3 est un diagramme de validation des modifications opérées par l'utilisateur ; - la figure 4 est un diagramme de téléchargement progressif de l'application adapté à la gestion des modifications ;FIG. 3 is a validation diagram of the modifications made by the user; FIG. 4 is a diagram of progressive downloading of the application adapted to the management of the modifications;
- la figure 5 est un diagramme de prise en compte de nouvelles versions pendant l'exécution de l'application ; - la figure 6 est un diagramme de réduction des chaînes de dépendance dans les recompilations ;- Figure 5 is a diagram for taking into account new versions during the execution of the application; FIG. 6 is a reduction diagram of the dependency chains in the recompilations;
- la figure 7 est un diagramme d'aide à la sélection d'une version parmi plusieurs versions modifiées de l'application;FIG. 7 is a diagram for helping to select one of several modified versions of the application;
- la figure 8 est un diagramme d'accès à des données à modifier en rapport avec un élément graphique de l'application ;FIG. 8 is a diagram of access to data to be modified in relation to a graphic element of the application;
- la figure 9 est une illustration d'une interface graphique de sélecteur d'implémentation ;FIG. 9 is an illustration of an implementation selector graphical interface;
- la figure 10 représente un dispositif client et un dispositif serveur conformes à un mode particulier de réalisation de l'invention ; - la figure 11 représente, sous forme d'organigramme, les principales étapes d'un procédé de génération d'objets binaires pouvant être mise en œuvre par le serveur de la figure 10 ;FIG. 10 represents a client device and a server device according to a particular embodiment of the invention; FIG. 11 represents, in flowchart form, the main steps of a method for generating binary objects that can be implemented by the server of FIG. 10;
- les figures 12 à 14 représentent, sous forme d'organigramme, les principales étapes d'un procédé pouvant être mis en œuvre par le dispositif client de la figure 10 ;- Figures 12 to 14 show, in flowchart form, the main steps of a method that can be implemented by the client device of Figure 10;
- les annexes 1 à 5 représentent le contenu des bases de données pouvant être utilisées dans un exemple de mise en œuvre de l'invention.- Appendices 1 to 5 represent the contents of the databases that can be used in an exemplary implementation of the invention.
Description détaillée d'un mode de réalisation de l'inventionDetailed description of an embodiment of the invention
Dans l'exemple de réalisation de l'invention qui sera détaillé ci-après, on se place dans le contexte du développement collaboratif d'application selon un modèle client-serveur. Dans cet exemple, l'invention propose d'agir directement par l'interface de l'application à travers le module de code source à modifier fournie par le serveur, les modifications de chaque utilisateur-collaborateur étant ensuite répercutées sur le code binaire des autres utilisateurs après recompilation des modifications au niveau du serveur. Ainsi chaque utilisateur est potentiellement un collaborateur apte à fournir des modifications sur lesquelles pourront réagir les autres utilisateurs.In the exemplary embodiment of the invention, which will be detailed below, one places oneself in the context of collaborative application development according to a client-server model. In this example, the invention proposes acting directly through the interface of the application through the source code module to be modified provided by the server, the modifications of each user-collaborator then being reflected on the binary code of the others. users after recompiling changes at the server level. Thus each user is potentially a suitable collaborator to provide modifications on which other users can react.
Dans cet exemple, l'invention permet un procédé collaboratif de modifications d'applications numériques, comportant un réseau de transmission de données entre un serveur et des terminaux utilisateurs, dans lequel un utilisateur transmet une requête auprès du serveur pour télécharger le code d'exécution binaire d'au moins une partie de l'application à exécuter et dans lequel les étapes suivantes se succèdent ;In this example, the invention enables a collaborative method of modifying digital applications, comprising a network for transmitting data between a server and user terminals, in which a user transmits a request to the server to download the execution code. binary at least a portion of the application to be executed and wherein the following steps succeed;
- transmission d'une requête de l'utilisateur auprès du serveur pour la transmission du code source associé à un module à modifier ;transmitting a request from the user to the server for the transmission of the source code associated with a module to be modified;
- identification par le serveur du code source associé à ce module et transmission de ce code source à l'utilisateur aux fins de modification ;- identification by the server of the source code associated with this module and transmission of this source code to the user for modification;
- modification du code source exécutable par l'utilisateur et transmission par l'utilisateur du code source modifié au serveur ; - recompilation par le serveur des modifications du code source et, si la recompilation aboutit, mise à jour des données binaires et du code source ; etmodification of the executable source code by the user and transmission by the user of the modified source code to the server; - recompilation by the server of the modifications of the source code and, if the recompilation succeeds, update of the binary data and the source code; and
- substitution du module recompilé au module transmis initialement puis transmission, à partir du serveur, du module de code binaire ainsi recompilé aux utilisateurs du réseau ayant téléchargé l'application.replacing the recompiled module with the module initially transmitted and then transmitting, from the server, the binary code module thus recompiled to the users of the network having downloaded the application.
En référence aux diagrammes des figures IA et IB, un exemple de mise à disposition d'une application cliente en vue de sa modification est illustré.Referring to the diagrams of FIGS. 1A and 1B, an example of provisioning a client application for modification is illustrated.
Dans une étape préalable de démarrage de l'application, le client h demande le téléchargement des modules de fichiers binaires de son application (étape DlOO) et exécute l'application à partir de l'ensemble des fichiers binaires téléchargés (étapeD102). L'application cliente offre ainsi à l'utilisateur U du réseau R la possibilité de modifier l'application à partir de fichiers modifiables (étape D104) transmis par un serveur S. L'utilisateur connecte son terminal informatique à un serveur distant, à travers une application dédiée. Au lancement de l'application, l'application cliente, située sur le terminal de l'utilisateur, contacte le serveur hôte qui transmet les fichiers binaires principaux d'exécution du programme et les modules dépendants, comportant les modules de la partie de l'application modifiable.In a preliminary step of starting the application, the client h requests the download of the binary file modules of its application (step D100) and executes the application from all the downloaded binaries (step D102). The client application thus offers the user U of the network R the possibility of modifying the application from modifiable files (step D104) transmitted by a server S. The user connects his computer terminal to a remote server, through a dedicated application. When the application is launched, the client application, located on the user's terminal, contacts the host server that transmits the main program execution binary files and the dependent modules, including the modules of the part of the application. editable application.
L'utilisateur peut donc librement exécuter l'application souhaitée sur son terminal.The user can therefore freely execute the desired application on his terminal.
Dans le cas où une modification lui apparaît opportune, l'utilisateur sélectionne l'élément du programme à modifier en lançant l'action de modification à travers un élément d'interface Homme/Machine dédié (étape D108). Le serveur transmet alors le code source téléchargé par l'application cliente et correspondant à l'élément que l'utilisateur a décidé de modifier (étape DIlO). Lors de l'exécution de l'instruction de modification, le programme client envoie une requête au serveur afin d'obtenir le code source associé au module binaire à modifier (étape Dl 12).In the event that a modification appears to be appropriate, the user selects the element of the program to be modified by launching the modification action through a dedicated human / machine interface element (step D108). The server then transmits the source code downloaded by the client application and corresponding to the element that the user has decided to modify (step DI10). During the execution of the modification instruction, the client program sends a request to the server in order to obtain the source code associated with the binary module to be modified (step D12).
Le serveur recherche dans sa base de données le code source associé et le transmet à l'utilisateur. Une fois le fichier reçu, une fenêtre d'édition s'ouvre et permet à l'utilisateur de modifier le code source (étapeThe server searches its database for the associated source code and transmits it to the user. Once the file is received, an edit window opens and allows the user to edit the source code (step
Dl 14). Le code source peut être téléchargé soit dans un éditeur intégré soit dans un éditeur externe.Dl 14). The source code can be downloaded either in an integrated editor or in an external editor.
Les figures 2a et 2b illustrent schématiquement l'accès, à partir d'une interface graphique, au code source d'un élément graphique. Dans la fenêtre 10 de l'interface graphique de l'application, un bouton 12 est prévu pour modifier le code source d'un élément 14 visualisé sur la fenêtre ou d'autres fenêtres de l'application par cliquages successifs (figure 2a).Figures 2a and 2b schematically illustrate the access, from a graphical interface, to the source code of a graphic element. In the window 10 of the graphical interface of the application, a button 12 is provided for modifying the source code of an element 14 displayed on the window or other windows of the application by successive clicks (FIG. 2a).
Dans une réalisation alternative, Ie pointeur 16 de la souris est positionné sur l'objet 18 à modifier (figure 2b) ; un menu contextuel 20 apparaît automatiquement, muni d'une commande 22 de modification du code source associé à l'objet.In an alternative embodiment, the pointer 16 of the mouse is positioned on the object 18 to be modified (FIG. 2b); a contextual menu 20 automatically appears, provided with a command 22 for modifying the source code associated with the object.
Après modification du fichier, en référence de nouveau à la figure 1, l'application cliente peut offrir à l'utilisateur la possibilité de valider les modifications opérées sur le code source (étape Dl 16), afin de s'assurer du bon fonctionnement du nouveau code.After modification of the file, with reference again to FIG. 1, the client application may offer the user the possibility of validating the modifications effected on the source code (step D1 16), in order to ensure the proper functioning of the new code.
Après validation ou directement sans validation, l'application transmet au serveur le fichier modifié (étape Dl 18) dans un processus de recompilation des fichiers binaires correspondant aux modules modifiés, tel qu'illustré à la figure 3.After validation or directly without validation, the application transmits to the server the modified file (step Dl 18) in a process of recompiling the binary files corresponding to the modified modules, as illustrated in FIG.
Le serveur recevant le fichier modifié va procéder à la compilation du code source, cette opération pouvant être effectuée sur le serveur ou être expatriée sur un autre serveur (étape D120).The server receiving the modified file will compile the source code, this operation can be performed on the server or be expatriated to another server (step D120).
La compilation peut aboutir ou pas. Dans le cas où le code ajouté n'est pas correct (erreur de syntaxe, etc.), le processus de compilation n'aboutit pas (pavé D122) et un message d'erreur est envoyé à l'application cliente : les modifications sont annulées et l'utilisateur en est informé (étape D124).The compilation can be successful or not. In the case where the added code is not correct (syntax error, etc.), the compilation process does not succeed (block D122) and an error message is sent to the client application: the changes are canceled and the user is informed (step D124).
Si la compilation aboutit, le serveur met à jour sa base de fichiers binaires et sa base de code source (étape D126) et l'utilisateur est informé que ses modifications ont été prises en compte (étape D128).If the compilation succeeds, the server updates its database of binary files and its source code base (step D126) and the user is informed that his modifications have been taken into account (step D128).
Avantageusement, les codes et fichiers ne sont pas uniquement retransmis à l'application cliente mais à l'ensemble des applications clientes connectées au serveur et ayant téléchargé ce module. Ainsi tous les utilisateurs bénéficient des modifications en temps réel. Éventuellement, les utilisateurs sont informés par un message de l'arrivé de nouveaux fichiers modifiant le comportement de l'application afin de bien l'identifier.Advantageously, the codes and files are not only retransmitted to the client application but to all the client applications connected to the server and having downloaded this module. Thus all users benefit from real-time changes. Eventually, the users are informed by a message of the arrival of new files modifying the behavior of the application in order to identify it.
Dans un souci d'optimisation des échanges en réseau, un exemple de réalisation avantageux met en place, en référence à la figure 4, un téléchargement progressif des modules exécutables de l'application au fur et à mesure de son exécution.In the interest of optimizing network exchanges, an advantageous example of implementation sets up, with reference to FIG. progressive download of the executable modules of the application as it is executed.
Dans ce cas, l'application cliente télécharge du serveur (étape D400) des fichiers binaires découpés par exemple par classe. Le serveur établit la liste des références entre les fichiers. Cette liste peut notamment être greffée aux fichiers ou stockée dans le serveur. Les fichiers contiennent la classe de démarrage de l'application, ainsi que les classes directement référencées par celle-ci.In this case, the client application downloads from the server (step D400) binary files cut for example by class. The server establishes the list of references between the files. This list can in particular be grafted to the files or stored in the server. The files contain the startup class of the application, as well as classes directly referenced by it.
Le client crée ensuite une instance de la classe de démarrage et exécute l'algorithme principal (étape D402).The client then creates an instance of the boot class and executes the main algorithm (step D402).
Chaque fois qu'une nouvelle instance de classe doit être créée (étape D403), le client évalue si la classe a déjà été téléchargée (étape D404).Whenever a new class instance is to be created (step D403), the client evaluates whether the class has already been downloaded (step D404).
Si la classe n'est pas présente en local, le client émet une demande au serveur afin de télécharger la classe et les dépendances nécessaires à son instanciation (D405).If the class is not present locally, the client issues a request to the server to download the class and dependencies necessary for its instantiation (D405).
La classe est ensuite instanciée en mémoire (D406) par le client, que la classe ait été présente en local ou téléchargée à partir du serveur. L'exécution reprend ensuite son cours normal (itération 40).The class is then instantiated in memory (D406) by the client, whether the class was present locally or downloaded from the server. The execution then resumes its normal course (iteration 40).
Pendant l'exécution progressive de l'application, il est également avantageux de pouvoir bénéficier des nouvelles versions des classes réalisées par les autres utilisateurs, sans avoir à redémarrer l'application.During the progressive execution of the application, it is also advantageous to be able to benefit from the new versions of the classes made by the other users, without having to restart the application.
Pour ce faire, les dernières versions sont prises en compte lors de la création des nouvelles instances après vérification de leur compatibilité.To do this, the latest versions are taken into account when creating new instances after checking their compatibility.
Le client demande alors au serveur - lors de l'înstanciation d'une classe - Ie fichier binaire correspondant à la version la plus récente de la classe parmi celles qui sont compatibles, à moins qu'il ne possède déjà une version compatible. Le diagramme de la figure 5 illustre un exemple de détermination de la compatibilité d'une version.The client then requests from the server - at the time of the unstanciation of a class - the binary file corresponding to the most recent version of the class among those that are compatible, unless it already has a compatible version. The diagram in Figure 5 illustrates an example of determining the compatibility of a version.
Dans cet exemple, si V est Ia version de Ia classe B dont l'instance est en cours, alors que Ie client cherche à instander une version X de la classe C (B et C pouvant être identiques) dans l'étape 500, les classes référencées par X et les classes parentes de V (c'est-à-dire dont V hérite) sont listées pour former respectivement Ll et L2 (étape 502), L2 incluant V. L'union I des listes est alors déterminée (étape 504): si I contient deux versions différentes d'une même classe, alors la version X n'est pas compatible avec la version V (étape 506). Sinon, la version X est compatible avec la version V (étape 508).In this example, if V is the version of class B whose instance is in progress, then the client is trying to instantiate an X version of the class C (B and C may be identical) in step 500, the classes referenced by X and the parent classes of V (i.e., of which V inherits) are listed to form respectively L1 and L2 (step 502). ), L2 including V. The union I lists is then determined (step 504): if I contains two different versions of the same class, then the X version is not compatible with version V (step 506). Otherwise, the X version is compatible with version V (step 508).
Régulièrement, le client met à jour avantageusement les fichiers binaires qu'il possède, en téléchargeant à partir du serveur les dernières versions.Regularly, the client updates advantageously the binary files that it owns, by downloading from the server the last versions.
Afin de permettre une prise en compte efficace des modifications effectuées à l'application en cours d'exécution, il est utile de réduire le nombre de recompilations induit par ces modifications sur l'ensemble des fichiers dépendants des fichiers modifiés. Cette variante vise donc à réduire de façon automatique la longueur de chaînes de dépendances entre les classes, c'est-à-dire finalement le nombre d'éléments de la chaîne (correspondant au maximal de recompilations nécessaires lorsqu'un élément de la chaîne est modifié).In order to allow effective consideration of the changes made to the running application, it is useful to reduce the number of recompilations induced by these modifications on all the files dependent on the modified files. This variant therefore aims to automatically reduce the length of dependency chains between classes, that is to say finally the number of elements of the chain (corresponding to the maximum of necessary recompilations when an element of the chain is amended).
La réduction est réalisée par interposition d'une classe abstraite (ou d'une interface) reprenant tous les membres publics de la classe dépendante et générée automatiquement par instancîation dynamique de cette classe.The reduction is done by interposing an abstract class (or an interface) containing all the public members of the dependent class and generated automatically by dynamic instantiation of this class.
Dans un exemple de réalisation illustré en figure 6, une classe abstraite formant une interface 60 est générée automatiquement à partir de chaque classe dépendante Cl référencée par une classe Cl. Partout dans le code les classes référençant C2 sont changées afin de pointer vers la classe abstraite 60 au lieu de pointer vers la classe concrète C2. Seuls les endroits où le constructeur est appelé (par exempte via le mot clé « new »), l'instance est créée au moyen d'une analyse de linstanciation dynamiques des objets, ce qui permet d'éliminer toutes références en dur vers la classe concrète.In an exemplary embodiment illustrated in FIG. 6, an abstract class forming an interface 60 is automatically generated from each dependent class C1 referenced by a class C1. Everywhere in the code the classes referencing C2 are changed in order to point to the abstract class 60 instead of pointing to concrete class C2. Only the places where the constructor is called (for example via the keyword "new"), the instance is created by means of an instantiation analysis dynamic objects, which eliminates all hard references to the concrete class.
Si les membres publics d'une classe n'ont pas été modifiés, la dernière version de la classe peut alors être utilisée. L'utilisation de la dernière version compatible, telle que déterminée ci-dessus, est alors particulièrement efficace.If the public members of a class have not been modified, then the latest version of the class can be used. The use of the latest compatible version, as determined above, is then particularly effective.
Selon une variante avantageuse, en référence à la figure 7, l'application est apte à permettre aux utilisateurs de sélectionner une version de module parmi les meilleurs modules mis en avant. A cette fin, la sélection d'un module est opérée à partir de la liste des classes qui implémentent une interface spécifiée ou qui héritent d'une classe de base spécifiée. Une interface est une définition de classe, dont le programmeur hérite pour implémenter une classe selon des conventions établies. Pour aider au choix, les éléments de la liste sont ordonnés selon au moins un critère spécifié.According to an advantageous variant, with reference to FIG. 7, the application is able to allow users to select a module version from among the best modules put forward. For this purpose, the selection of a module is made from the list of classes that implement a specified interface or that inherit from a specified base class. An interface is a class definition, which the programmer inherits to implement a class according to established conventions. To aid in the selection, the elements of the list are ordered according to at least one specified criterion.
Dans l'exemple illustré en figure 7, l'application cliente envoie une requête (étape D701) au serveur pour obtenir l'ensemble des classes qui implémentent l'interface servant de filtre de recherche, en fonction d'un critère spécifié dans la requête. Le critère spécifié dans la requête peut être par exemple ; la popularité de la classe, le nombre de fois où elle figure dans les favoris, le nombre de fois où elle a été choisie, la date de la modification, etc.In the example illustrated in FIG. 7, the client application sends a request (step D701) to the server to obtain all the classes that implement the interface serving as a search filter, according to a criterion specified in the request. . The criterion specified in the query can be for example; the popularity of the class, the number of times it appears in the favorites, the number of times it was chosen, the date of the change, etc.
Le serveur retourne la liste des classes correspondantes au critère, après avoir recherché dans sa base de code source (étape D703). La liste reçue par l'application cliente est affichée (figure 9) dans l'application cliente (figure 9, 902), et l'utilisateur peut alors choisir son implémentation préférée (étape D705). La liste est accompagnée de critères d'aide au choix (904) (popularité, note attribuée, date, etc.).The server returns the list of classes corresponding to the criterion, after searching in its source code base (step D703). The list received by the client application is displayed (FIG. 9) in the client application (FIG. 9, 902), and the user can then choose his preferred implementation (step D705). The list is accompanied by eligibility criteria (904) (popularity, rating, date, etc.).
Ensuite Ie choix de l'utilisateur est instancié par l'application, en demandant au serveur le module binaire correspondant au code choisi (étape D707). Le serveur recherche alors dans sa base de données binaires, le module binaire associé au code sélectionné et le transmet au client qui est apte à l'instancier.Then the choice of the user is instantiated by the application, asking the server for the binary module corresponding to the chosen code (step D707). The server then searches in its binary database, the binary module associated with the selected code and transmits it to the client who is able to instantiate it.
Une instanciation automatique de la classe choisie peut être demandée par l'application. L'instance est alors passée au code de l'application sous forme d'une instance de type interface de base ou type de base.An automatic instantiation of the chosen class can be requested by the application. The instance is then passed to the application code as an instance of base interface type or base type.
Selon un exemple concret, un éditeur d'images dispose de filtres comme la luminosité, le contraste, etc. Son code source contient une interface de type IFiltre (l'interface définit simplement le type d'entrée et le type de sortie attendu des filtres). Avec le sélectionneur d'implémentations décrit ci-dessus, tout utilisateur peut ajouter de nouveaux filtres en ajoutant à l'application des classes qui implémentent IFiltre. Le sélectionneur d'implémentations permet ainsi d'obtenir automatiquement la liste de tous les filtres. Lorsqu'un utilisateur en choisit un, ce dernier est automatiquement instancié et passé à l'application en tant qu'instance de type IFiltre, ce qui permet à l'application de l'utiliser.According to a concrete example, an image editor has filters such as brightness, contrast, and so on. Its source code contains an IFilter interface (the interface simply defines the type of input and the expected output type of the filters). With the implementation selector described above, any user can add new filters by adding classes to the application that implement IFilter. The implementation selector thus provides a list of all the filters automatically. When a user chooses one, the user is automatically instantiated and passed to the application as an IFiltre instance, which allows the application to use it.
Dans une variante de réalisation, en référence à la figure 8, des éléments graphiques de l'application cliente sont associés par le serveur à d'autres données qu'aux données du code source par un identifiant unique à partir d'un élément graphique quelconque de l'interface de l'application. Cet identifiant est alors utilisé pour accéder à des données. Ces « données » peuvent être par exemple des suggestions, un fil de discussion, une liste de tâches concernant l'élément graphique, la liste des utilisateurs qui sont en train d'utiliser ou de modifier l'élément graphique, etc.In an alternative embodiment, with reference to FIG. 8, graphic elements of the client application are associated by the server with other data than with the data of the source code by a unique identifier from any graphic element. the interface of the application. This identifier is then used to access data. These "data" can be for example suggestions, a thread, a list of tasks concerning the graphic element, the list of users who are using or modifying the graphic element, etc.
Conformément au diagramme illustré en figure 8, lorsque l'utilisateur clique sur un élément graphique (ou un élément qui lui est rattaché, comme un bouton ou un menu contextuel), la série d'actions suivante est déclenchée ; - sélection de l'instance correspondant à l'élément graphique de l'application (étape D801) ; si l'utilisateur clique directement sur l'élément, cette détermination peut se faire via un mot clé tel que « this » (« ceci » en anglais), sinon elle peut se faire via un lien établi par le développeur, ou en recherchant les éléments parents de l'élément cliqué ;According to the diagram illustrated in FIG. 8, when the user clicks on a graphic element (or an element which is attached thereto, such as a button or a contextual menu), the following series of actions is triggered; selecting the instance corresponding to the graphic element of the application (step D801); if the user clicks directly on the element, this determination can be made via a keyword such as "this", otherwise it can be done via a link established by the developer, or by searching for parent elements of the clicked item
- détermination, grâce à une fonction interne décrite ci-dessous, de l'identifiant unique de la classe qui correspond à ladite instance (étape D803) ;determination, by means of an internal function described below, of the unique identifier of the class corresponding to said instance (step D803);
- utilisation de cet identifiant pour accéder aux données relatives à l'élément cliqué (étape D805) : suggestions, discussions, tâches, etc., par transmission d'une requête au serveur contenant un identifiant unique possédé par la classe instanciée. Cet identifiant peut être par exemple: le nom complet de la classe, un numéro arbitraire d'identification attribué lors de la création de la classe, etc. - le serveur retransmet ces données à l'application cliente qui les affiche (807). Ces données peuvent êtres des données multimédia (sons, images, lien hypertextes, données textuelles) de tout type transmissible par réseau.use of this identifier to access the data relating to the item clicked (step D805): suggestions, discussions, tasks, etc., by transmitting a request to the server containing a unique identifier owned by the instantiated class. This identifier can be for example: the complete name of the class, an arbitrary number of identification assigned during the creation of the class, etc. the server retransmits this data to the client application that displays them (807). These data can be multimedia data (sounds, images, hypertext links, textual data) of any type transmissible by network.
Afin d'obtenir l'identifiant à partir de l'instance d'une classe, l'application cliente possède une fonction interne pouvant être réalisée de multiples façons, par exemple :In order to obtain the identifier from the instance of a class, the client application has an internal function that can be performed in multiple ways, for example:
- en obtenant via analyse dynamique des objets dite « reflection » le nom complet de la classe ;- by using dynamic analysis of objects called "reflection" the full name of the class;
- en obtenant via « reflection » le nom du fichier binaire à partir duquel la classe s'exécute (en supposant que chaque fichier binaire contient une seule classe et que le nom du fichier binaire permet de déterminer l'identifiant de la classe) ;- by using "reflection" the name of the binary file from which the class runs (assuming that each binary file contains a single class and that the name of the binary file is used to determine the class identifier);
- en ayant préalablement ajouté à la classe (lors de sa compilation) un champ permettant d'obtenir son identifiant. En référence à la figure 10, nous allons maintenant décrire en détails un dispositif client DCL et un dispositif serveur SRV conformes à l'invention, connectés par un réseau R.- having previously added to the class (during its compilation) a field to obtain its identifier. Referring to Figure 10, we will now describe in detail a DCL client device and an SRV server device according to the invention, connected by a network R.
Le dispositif client DCL peut par exemple être incorporé dans le terminal informatique déjà décrit.The client device DCL can for example be incorporated into the computer terminal already described.
L'architecture matérielle du dispositif client DCL est celle d'un ordinateur conventionnel. Il comporte notamment un processeur dll, une mémoire vive de type RAM dl2, une mémoire morte de type ROM dl3 et des moyens dl4 de communication avec le serveur SRV. La mémoire morte de type ROM dl3 du dispositif client DCL comporte un procédé client PC conforme à l'invention et dont le fonctionnement détaillé sera décrit en référence à la figure 12.The hardware architecture of the DCL client device is that of a conventional computer. It comprises in particular a dll processor, a RAM type RAM dl2, a ROM ROM dl3 and dl4 communication means with the server SRV. The ROM ROM dl3 of the DCL client device comprises a PC client method according to the invention and the detailed operation of which will be described with reference to FIG. 12.
Ce procédé client PC est apte notamment à télécharger des objets binaires OB à partir du serveur SRV constitutifs d'une application logicielle AL, par exemple un jeu vidéo ou une application bureautique. Ce procédé client met en œuvre une fonction RVCC de recherche de versions compatibles qui sera décrite en référence à la figure 14.This PC client method is particularly suitable for downloading OB binary objects from the SRV server constituting an AL software application, for example a video game or an office application. This client method implements a compatible version search RVCC function which will be described with reference to FIG.
Le procédé client PC et les objets binaires OB peuvent être exécutés par le processeur dll du dispositif client DCL. L'architecture matérielle du serveur SRV est celle d'un ordinateur conventionnel. Il comporte notamment un processeur s21, une mémoire vive de type RAM s22, une mémoire morte de type ROM s23 et des moyens s24 de communication avec le dispositif client DCL.The PC client method and OB bit objects may be executed by the dll processor of the DCL client device. The hardware architecture of the SRV server is that of a conventional computer. It comprises, in particular, a processor s21, a random access memory of the RAM type s22, a read-only memory of the ROM type s23 and means s24 of communication with the client device DCL.
La mémoire morte s23 de type ROM du dispositif serveur SRV comporte un programme d'ordinateur GOB de génération des objets binaires OB et dont les principales étapes seront décrites en référence à la figure 11.The s23 ROM ROM of the SRV server device comprises a GOB computer program for generating the OB binary objects and whose main steps will be described with reference to FIG. 11.
Le serveur SRV comporte des moyens d'accès à une base de données BDFBCS dans laquelle il mémorise les objets binaires OB. Le contenu de cette base de données BDFBCS est donné sous forme de tableau à l'Annexe 1.The server SRV includes means for accessing a database BDFBCS in which it stores the binary objects OB. The contents of this BDFBCS database are tabulated in Appendix 1.
Cette base de données BDFBCS comporte une pluralité d'enregistrements, chacun comportant ;This database BDFBCS comprises a plurality of records, each including;
- un objet binaire (par exemple Toto vl.dll) ; - un numéro de version (par exemple 1) ; eta binary object (for example Toto vl.dll); a version number (for example 1); and
- un identifiant de cet objet binaire (par exemple Toto vl). Les objets binaires OB sont générés par compilation de fichiers FST de code source, dits « fichiers traités ». Comme il sera décrit ultérieurement, un fichier FST traité est ;an identifier of this binary object (for example Toto vl). The OB binary objects are generated by compiling source code FST files, called "processed files". As will be described later, a processed FST file is;
- soit un fichier source FS édité par l'utilisateur ; - soit un fichier source FS édité par l'utilisateur dans lequel le programme d'ordinateur GOB de génération d'objet binaire insère une instruction INS.- either an FS source file edited by the user; or a user-edited FS source file in which the GOB program for generating a binary object inserts an INS instruction.
A cet effet le serveur SRV comporte un compilateur s25. Lorsque les fichiers sources traités FST sont en langage VB.NET et C#, le compilateur s25 peut par exemple être celui fourni avec le « FrameworkFor this purpose the SRV server includes a s25 compiler. When the source files treated with FST are in VB.NET and C # language, the s25 compiler can for example be the one supplied with the "Framework"
.NET » de la société Microsoft (marque déposée) au sein des classes.NET "from Microsoft (registered trademark) within classes
« System. CodeDom »."System. CodeDom ».
Dans l'exemple de réalisation décrit ici, chaque fichier binaire contient la version compilée d'une et une seule classe. Par conséquent, si un fichier source d'origine contient plusieurs classes, alors ce fichier source est dans un premier découpé en autant de fichiers FS qu'il comporte de classes.In the exemplary embodiment described here, each binary file contains the compiled version of one and only one class. Therefore, if an original source file contains several classes, then this source file is in a first cut into as many FS files as it contains classes.
Chaque fichier source FS est alors traité pour engendrer un fichier FST qui génère par compilation un seul objet binaire OB. Dans la suite de la description, on notera OB0 le fichier binaire contenant la version la plus récente de la classe initiale par laquelle l'application logicielle AL commence à s'exécuter.Each source file FS is then processed to generate a file FST which generates by compilation a single binary object OB. In the following description, we note OB 0 the binary file containing the most recent version of the initial class by which the software application AL begins to run.
A cet effet le serveur SRV (ou le client DCL) comporte une information qui définit la classe initiale, la version de cette classe la plus récente étant dénommée OB0.For this purpose the SRV server (or the client DCL) includes information that defines the initial class, the version of this most recent class being called OB 0 .
Dans ce document, la notion de « classe » est à comprendre au sens large. Elle vise notamment les « interfaces », les « structures », les « classes concrètes », les « classes abstraites » et plus généralement tout objet au sens de la programmation objet. Dans l'exemple de réalisation décrit ici, les fichiers de codes sourcesIn this document, the notion of "class" is to be understood in a broad sense. It aims in particular at "interfaces", "structures", "concrete classes", "abstract classes" and more generally any object within the meaning of object programming. In the exemplary embodiment described here, the source code files
FS sont stockés dans une base de données BDCSCS de codes sources accessible par le serveur SRV. L'homme du métier comprendra que chaque classe est stockée dans un enregistrement séparé.FS are stored in a source code database BDCSCS accessible by the SRV server. Those skilled in the art will understand that each class is stored in a separate record.
Plus précisément, cette base de données BDCSCS comporte Ie code source de la dernière version de chaque classe. Le contenu de cette base de données BDCSCS est donné, dans un exemple, sous forme de tableau à l'Annexe 2.Specifically, this BDCSCS database contains the source code of the latest version of each class. The content of this database BDCSCS is given, in one example, as a table in Appendix 2.
Le serveur SRV comporte des moyens d'accès à une base de données BDDCS dite « de dépendances », cette base de données comportant, pour chaque fichier binaire (colonne de gauche), Ia liste des fichiers binaires dont il dépend (colonne de droite), à savoir la liste des fichiers binaires qu'il référence et dont il a besoin pour son exécution. Le contenu de cette base de données BDDCS est donné sous forme de tableau à l'Annexe 3. Le serveur SRV comporte des moyens d'accès à une base de données BDHCS dite « d'héritage » contenant pour chaque fichier binaire, la liste des fichiers binaires « parents ». Un fichier binaire A est dit parent d'un autre objet binaire B si, au sens de la programmation orientée objets, une classe du fichier binaire B hérite d'une classe du fichier binaire A ou si une classe du fichier binaire B implémente une interface définie dans le fichier binaire A.The server SRV includes means for accessing a database BDDCS called "dependencies", this database comprising, for each binary file (left column), the list of binary files on which it depends (right column) , which is the list of binary files that it references and needs for its execution. The content of this database BDDCS is given in tabular form in Appendix 3. The server SRV comprises means of access to a BDHCS database called "inheritance" containing for each binary file, the list of binary "parent" files. A binary file A is said to be the parent of another binary object B if, in the sense of object-oriented programming, a class of the binary file B inherits from a class of the binary file A or if a class of the binary file B implements an interface defined in binary file A.
Dans ce document, la notion d'« héritage » est à comprendre au sens large. Elle vise notamment la situation où une classe hérite d'une autre classe, la situation où une classe implémente une interface, la situation où une interface implémente une autre interface, et plus généralement toute situation où, au sens de la programmation objets, un objet a un lien de parenté avec un autre objet.In this document, the notion of "inheritance" is to be understood in a broad sense. It refers in particular to the situation where a class inherits from another class, the situation where a class implements an interface, the situation where an interface implements another interface, and more generally any situation where, in the object programming sense, an object is related to another object.
Le contenu de cette base de données BDHCS est donné sous forme de tableau à l'annexe 4. En référence à la figure 11, nous allons maintenant décrire les principales étapes du procédé GOB mis en œuvre par le serveur SRV pour générer des objets binaires OB à partir d'un (ou plusieurs) fichîer(s) de code source FS reçu(s) au cours d'une étape E3, en provenance d'un dispositif client, pas nécessairement du dispositif client DCL. Pour simplifier la description, on s'intéressera, dans cet exemple, à la génération d'un ou plusieurs objet(s) bînaîre(s) à partir d'un seul fichier source FS.The content of this BDHCS database is given in tabular form in Appendix 4. Referring to FIG. 11, we will now describe the main steps of the GOB method implemented by the SRV server for generating OB binary objects. from one (or more) source code files FS received during a step E3, from a client device, not necessarily from the client device DCL. To simplify the description, we will focus in this example on the generation of one or more object (s) born (s) from a single source file FS.
A titre d'exemple, nous considérons la génération de fichiers binaires à partir du code source Tîti ¥5. Au cours d'une première étape E5, le procédé GOB de génération de fichiers binaires découpe Ie fichier source FS en autant de fichiers sources FS qu'il comporte de classes, la notion de classe étant, comme nous l'avons dit, à comprendre au sens large. Par souci de simplification, on supposera, dans cet exemple, que le fichier source FS ne comporte qu'une seule classe et qu'il n'est pas découpé. De façon optionnelle, pour améliorer le processus de mise à jour, l'étape E5 peut être précédée par une étape E4 au cours de laquelle le procédé GOB de génération de fichiers binaires augmente le nombre de relations d'héritage dans le code source de l'application logicielle AL.As an example, we consider the generation of binary files from the source code Tîti ¥ 5. During a first step E5, the GOB method for generating binary files divides the source file FS into as many files. FS sources it includes classes, the notion of class being, as we have said, to understand in the broad sense. For the sake of simplicity, it will be assumed in this example that the source file FS has only one class and is not cut. Optionally, to improve the update process, step E5 may be preceded by a step E4 in which the GOB method for generating binary files increases the number of inheritance relationships in the source code of the file. AL software application.
Pour ce faire, le procédé GOB de génération de fichiers binaires, au cours de l'étape optionnelle E4, modifie le fichier source FS en lui ajoutant, pour chaque classe concrète contenue dans ledit fichier source FS, une classe abstraite (ou une interface) reprenant l'ensemble ou une partie des membres publics de ladite classe concrète.To do this, the GOB method for generating binary files, during the optional step E4, modifies the source file FS by adding, for each concrete class contained in said source file FS, an abstract class (or an interface) taking over all or part of the public members of that concrete class.
On rappelle qu'une classe concrète est une classe qui peut être instanciée.Remember that a concrete class is a class that can be instantiated.
Au cours de cette même étape optionnelle E4, le procédé GOB modifie lesdites classes concrètes de façon à les faire hériter desdites classes abstraites correspondantes, et change toutes les références auxdites classes concrètes contenues dans les fichiers source de l'application AL en des références auxdites classes abstraites correspondantes, à l'exception des endroits où ont lieu des créations d'instances pour les classes concrètes.During this same optional step E4, the GOB method modifies said concrete classes so as to make them inherit from said corresponding abstract classes, and changes all the references to said concrete classes contained in the source files of the application AL into references to said classes. Corresponding abstracts, except where instances are created for concrete classes.
Quoi qu'il en soit, l'étape E5 est suivie par une étape ElO au cours de laquelle le procédé GOB de génération de fichiers binaires analyse le code source de chaque fichier FS ainsi obtenu de façon à identifier chacune des classes CL contenues dans ce code source FS et constitue une liste LCC de classes à compiler.In any event, the step E5 is followed by an ElO step in which the GOB process for generating binary files analyzes the source code of each FS file thus obtained so as to identify each of the CL classes contained in this file. FS source code and constitutes an LCC list of classes to compile.
En l'espèce, seule la classe Titi v5 est ajoutée à cette liste.In this case, only the class Titi v5 is added to this list.
Puis, au cours d'une étape E20, le procédé GOB de génération de fichiers binaires enrichît la liste LCC de classes à compiler, en y ajoutant, pour chaque classe déterminée à l'étape précédente ElO, les classes dépendantes de cette classe, celles-ci étant obtenues à partir de la base de données de dépendances BDDCS.Then, during a step E20, the GOB method for generating binary files enriches the LCC list of classes to be compiled, by adding, for each class determined in the previous step ElO, the dependent classes of this class, those they are obtained from the BDDCS dependency database.
Dans cet exemple, Ia classe Toto ¥3 est ajoutée à la liste LCC. Au cours d'une étape E30, le procédé GOB incrémente le numéro de version de chaque classe de Ia liste LCC des classes à compiler. Les classes Titi et Toto obtiennent ainsi les numéros de versions respectifs v6 et v4.In this example, the Toto class ¥ 3 is added to the LCC list. During a step E30, the GOB method increments the version number of each class of the LCC list of the classes to be compiled. The classes Titi and Toto thus get the respective version numbers v6 and v4.
Au cours d'une étape E40, le procédé GOB de génération de fichiers binaires traite Ie code source de chaque classe de la liste LCC des classes à compiler de façon à engendrer des fichiers sources traités FST au sens de l'invention.During a step E40, the GOB method for generating binary files treats the source code of each class of the LCC list of the classes to be compiled so as to generate FST-treated source files within the meaning of the invention.
Ce traitement consiste à insérer, dans le code d'une classe, des instructions INS permettant au dispositif client DCL, lorsqu'il exécute cette classe, d'une part de déterminer sa version, et d'autre part d'intercepter les appels à une autre classe.This processing consists in inserting, in the code of a class, INS instructions allowing the client device DCL, when it executes this class, on the one hand to determine its version, and on the other hand to intercept the calls to another class.
Par exemple, ce traitement remplace chaque appel à une création d'instance d'une classe par une instruction INS du type de celle donnée à l'annexe 5.For example, this process replaces each call to an instance creation of a class with an INS statement of the type given in Appendix 5.
Dans cet exemple : - « Tutu » désigne le nom de la classe appelée ;In this example: - "Tutu" is the name of the called class;
- « Toto » désigne le nom de la classe appelante ;- "Toto" means the name of the calling class;
- « 4 » est la version de la classe appelante ; et- "4" is the version of the calling class; and
- « param » désigne des paramètres du constructeur.- "param" means parameters of the constructor.
- « PC» désigne le procédé client conforme à l'invention ; - « PINT » désigne un processus d'interception du procédé client apte à rediriger l'appel à la classe appelée (« Tutu») vers le fichier binaire correspondant à cette classe appelée et possédant la version compatible la plus récente avec la classe appelante (« Toto v4 »)."PC" designates the client process according to the invention; - "PINT" means an interception process of the client method capable of redirecting the call to the called class ("Tutu") to the binary file corresponding to this called class and having the most recent compatible version with the calling class ( "Toto v4").
Dans ce document, on dira qu'un fichier binaire comportant une classe B est compatible avec un fichier binaire comportant une classe A si tous les appels du fichier A vers le fichier B sont valides.In this document, it will be said that a binary file comprising a class B is compatible with a binary file comprising a class A if all the calls from file A to file B are valid.
La recherche des instructions à substituer de la sorte peut consister à rechercher les instructions faisant usage de l'opérateur « new » connu de l'homme du métier. Dans un mode particulier de réalisation, seuls les appels à des créations dinstance de classes propres à l'application sont substitués par de telles instructions, de telles classes étant celles listées dans la base de données de code source BDCSCS ou celles définies dans les fichiers sources FS. L'homme du métier comprendra que des substitutions similaires peuvent être réalisées pour permettre au dispositif client DCL d'intercepter des appels autres que des créations d'instances, notamment des appels à des méthodes statiques et plus généralement tout appel d'une classe appelante vers une classe appelée.The search for the instructions to be substituted in this way may consist in looking for the instructions making use of the "new" operator known to those skilled in the art. In a particular embodiment, only calls to application-specific class instance creations are substituted for such instructions, such classes being those listed in the BDCSCS source code database or those defined in the source files. FS. Those skilled in the art will understand that similar substitutions can be made to allow the DCL client device to intercept calls other than creation of instances, including calls to static methods and more generally any call from a calling class to a called class.
L'homme du métier comprendra que si le langage de programmation offre nativement la possibilité d'intercepter des appels de fonction ou des créations d'instance, l'étape E40 sera omise. Par exemple, il est possible en .NET (notamment VB.NET et C#) de s'abonner à l'événement « ÂppDomain.AssemblyResolve », cet événement étant appelé à chaque fois qu'un fichier binaire cherche un autre fichier binaire. Quoi qu'il en soit, l'étape E40 est suivie par une étape E50 de compilation des classes de la liste LCC des classes à compiler. La compilation est connue en soi et ne sera pas détaillée ici.Those skilled in the art will understand that if the programming language natively offers the possibility of intercepting function calls or instance creations, step E40 will be omitted. For example, it is possible in .NET (notably VB.NET and C #) to subscribe to the event "ÂppDomain.AssemblyResolve", this event being called whenever a binary file looks for another binary file. Be that as it may, step E40 is followed by a step E50 of compiling the classes of the LCC list of the classes to be compiled. The compilation is known per se and will not be detailed here.
L'étape E50 de compilation est suivie par un test E60 au cours duquel on vérifie si la compilation à échoué ou réussi. Si la compilation a réussi, le résultat du test E60 est positif et les bases de données de code source BDCSCS, de fichiers binaires BDFBCS, de dépendance BDDCS et d'héritage BDHCS sont mises à jour au cours d'une étape E70.The compilation step E50 is followed by an E60 test during which it is checked whether the compilation failed or succeeded. If the compilation was successful, the result of the E60 test is positive, and the BDCSCS source code, BDFBCS binary file, BDDCS dependency, and BDHCS inheritance databases are updated in a step E70.
Au contraire, si la compilation a échoué, le résultat du test E60 est négatif et les modifications (fichiers FS, incrémentation des numéros de version, ...) ne sont pas sauvegardées.On the other hand, if the compilation failed, the result of the E60 test is negative and the modifications (FS files, incrementation of the version numbers, ...) are not saved.
En aucun cas les fichiers traités FST ne sont sauvegardés dans la base de données BDCSCS, ceux-ci n'étant utilisés que pour générer les objets binaires. En référence à la figure 12, nous allons maintenant décrire les principales étapes du procédé client PC mis en œuvre par le dispositif client DCL.In no case are the FST processed files saved in the BDCSCS database, which are only used to generate the binary objects. With reference to FIG. 12, we will now describe the main steps of the PC client method implemented by the client device DCL.
Dans le mode de réalisation décrit ici, ce procédé client PC comporte trois processus principaux aptes à s'exécuter en parallèle, à savoir :In the embodiment described here, this PC client method comprises three main processes capable of running in parallel, namely:
- un processus de démarrage PDEM ;- a PDEM startup process;
- un processus PINT d'interception ; et- a PINT interception process; and
- un processus PMAJ de mise à jour.- an update PMAJ process.
Les processus de démarrage PDEM et d'interception PINT utilisent une fonction PCH de chargement d'objets binaires qui sera décrite ci-après en référence à la figure 13. Le processus PDEM de démarrage comporte une première étape FlO d'appel à la fonction PCH de chargement de l'objet binaire OBo contenant la version la plus récente de la classe initiale par laquelle l'application logicielle AL commence à s'exécuter. Cette fonction de chargement PCH comporte une étape GlO de téléchargement de l'objet binaire reçu en entrée (en l'espèce OBo) et récursivement des objets binaires dont dépend cet objet binaire. Ces objets binaires (OBo, ...) sont stockés dans une base de données BDFBCC d'objets binaires locale au dispositif client DCL au cours de la même étape GlO.The PDEM startup and PINT interception processes use a PCH function for loading binary objects which will be described hereinafter with reference to FIG. 13. The boot PDEM process includes a first step FlO of calling the PCH function for loading the OBo binary object containing the most recent version of the initial class by which the software application AL begins to execute. This loading function PCH comprises a step GlO of downloading the received binary object (in this case OBo) and recursively binary objects on which this binary object depends. These binary objects (OBo, ...) are stored in a local binary bit database BDFBCC to the DCL client device during the same step GlO.
Pour l'ensemble de ces objets binaires, et de façon récursive, la fonction de chargement PCH télécharge ainsi, au cours d'une étape G20, à partir du serveur SRV, les lignes des bases de données de dépendance BDDCS et d'héritage BDHCS concernées et copie ces lignes dans des bases de données locales similaires référencées respectivement BDDCC et BDHCC.For all these binary objects, and recursively, the loading function PCH thus downloads, during a step G20, from the server SRV, the lines of the dependency databases BDDCS and inheritance BDHCS concerned and copy these lines into similar local databases referenced respectively BDDCC and BDHCC.
Dans le mode de réalisation décrit ici, les bases de données BDDCC et BDHCC (respectivement BDDCS et BDHCS) sont regroupées dans une base de données BDC (respectivement BDS). Le processus de démarrage PDEM du dispositif client DCL lance localement l'exécution de la fonction logicielle AL, au cours d'une étape F20, par l'exécution de l'objet binaire OBo.In the embodiment described here, the databases BDDCC and BDHCC (respectively BDDCS and BDHCS) are grouped in a database BDC (respectively BDS). The PDEM boot process of the client device DCL locally initiates the execution of the software function AL, during a step F20, by the execution of the binary object OBo.
Dans cet exemple, on suppose que l'utilisateur du dispositif client DCL a cliqué sur le bouton d'une souris de ce dispositif, ce qui déclenche l'exécution de la fonction Button_click traitée à l'étape E40 par le serveur et dont le code est donné à l'annexe 5.In this example, it is assumed that the user of the client device DCL has clicked on the button of a mouse of this device, which triggers the execution of the function Button_click processed in step E40 by the server and whose code is given in Appendix 5.
Cette fonction Button_dick appelle le processus d'interception PINT.This Button_dick function calls the PINT interception process.
Celui-ci comporte une étape F30 d'appel à une fonction RVCC permettant de déterminer la version de la classe appelée (« Tutu ») la plus récente et compatible avec la version de la classe appelante (« Toto v4 »). Cette fonction sera décrite ultérieurement en référence à la figure 14.It includes a step F30 call to a function RVCC to determine the version of the class called called ("Tutu") the most recent and compatible with the version of the calling class ("Toto v4"). This function will be described later with reference to FIG.
Le processus d'interception PINT appelle ensuite, au cours de la même étape F30, la fonction PCH de chargement déjà décrite avec, pour paramètre d'entrée, le résultat de la fonction RVCC précitée. Le processus d'interception PINT redirige^ au cours d'une étapeThe interception process PINT then calls, during the same step F30, the load PCH function already described with, as an input parameter, the result of the aforementioned RVCC function. The PINT interception process redirects ^ during a step
F40, l'appel intercepté vers l'objet binaire téléchargé à l'étape F30. Dans cet exemple, l'appel intercepté est une création d'instance, donc l'étape RO crée une instance de Ia classe de l'objet binaire téléchargé à l'étape F30.F40, the intercepted call to the downloaded binary object in step F30. In in this example, the intercepted call is an instance creation, so step RO creates an instance of the class of the downloaded binary object in step F30.
La fonction RVCC de détermination de la version la plus récente d'une classe d'un objet binaire appelé OB2 compatible avec la version d'une classe d'un objet binaire appelant OBi va maintenant être décrite en référence à la figure 14.The function RVCC for determining the most recent version of a class of a binary object called OB 2 compatible with the version of a class of a binary object OBi will now be described with reference to FIG.
Dans cette description, la fonction est appelée par le dispositif client DCL. La fonction RVCC comporte une étape H5 de détermination de la version la plus récente parmi les versions de l'objet binaire appelé OB2 parmi toutes les versions de cet objet binaire présentes dans la base de données BDFBCC d'objets binaires du dispositif client DCL.In this description, the function is called by the DCL client device. The function RVCC comprises a step H5 of determining the most recent version among the versions of the binary object called OB 2 among all the versions of this binary object present in the BDFBCC database of binary objects of the client device DCL.
Cette étape H5 est suivie par une étape générale TVC consistant à déterminer si cette version d'OB2 est compatible avec la version de la classe de l'objet binaire appelant OBi.This step H5 is followed by a general stage TVC consisting of determining whether this version of OB 2 is compatible with the class version of the calling binary object OBi.
Si tel est le cas, l'objet binaire OB2 est retourné dans cette version au cours d'une étape H60.If this is the case, the binary object OB 2 is returned in this version during a step H60.
Dans la négative, la fonction RVCC retourne à l'étape H5 pour déterminer, si elle existe (test H42) la version de l'objet binaire appelé OB2 la plus récente parmi toutes les versions restantes de cet objet binaire présentes dans la base de données BDFBCC. L'étape générale TVC est mise en œuvre pour cette nouvelle version. Si une telle version n'existe pas (résultat du test H42 négatif), la fonction RVCC demande, au cours d'une étape H44, l'exécution d'une fonction RVCS par le serveur SRV.If not, the RVCC function returns to step H5 to determine, if it exists (test H42) the version of the binary object called OB 2 the most recent of all the remaining versions of this binary object present in the database. BDFBCC data. The general TVC stage is implemented for this new version. If such a version does not exist (result of the negative test H42), the function RVCC requests, during a step H44, the execution of a function RVCS by the server SRV.
Cette fonction permet au serveur SRV de déterminer la version de l'objet binaire appelé OB2 la plus récente parmi celles présente dans la base de données d'objets binaires BDFBCS du serveur et compatible avec la version de l'objet appelant OBi. Cette fonction RVCS est identique à la fonction RVCC ; elle en diffère uniquement en ce qu'elle travaille sur les bases de données du serveur au lieu de travailler sur les bases de données locales du dispositif client DCL. La fonction RVCS retourne l'objet binaire appelé OB2, dans cette version, au cours d'une étape H46.This function allows the SRV server to determine the version of the binary object called OB 2 the most recent among those present in the BDFBCS binary database of the server and compatible with the version of the OBi calling object. This RVCS function is identical to the RVCC function; it differs only in that it works on the server databases instead of working on the local databases of the DCL client device. The RVCS function returns the binary object called OB 2 , in this version, during a step H46.
Dans l'exemple de réalisation décrit ici, l'étape générale TVC permettant de déterminer si une version donnée de l'objet binaire appelé OB2 est compatible avec la version de la classe de l'objet binaire appelant OBi comporte :In the embodiment described here, the general stage TVC makes it possible to determine if a given version of the called binary object OB2 is compatible with the class version of the binary object calling OBi includes:
- une étape HlO de constitution d'une première liste Ll comportant toutes les classes dont dépend l'objet binaire appelé OB2 en utilisant Ia base de données de dépendances BDDCC ; eta step H10 constituting a first list L1 comprising all the classes on which the binary object called OB 2 depends by using the database of dependencies BDDCC; and
- une étape H20 de constitution d'une deuxième liste L2 comportant l'objet binaire appelant OBi et toutes les classes parentes de cet objet binaire OBi, en utilisant la base de données d'héritage BDHCC ; eta step H20 for constituting a second list L2 comprising the calling binary object OBi and all the parent classes of this binary object OBi, using the inheritance database BDHCC; and
- un test H30 consistant à déterminer si l'union des première et deuxième listes Ll, L2 comporte deux versions distinctes d'une même classe. Si tel est le cas, le résultat du test H30 est négatif et les versions des objets binaires OBi et OB2 ne sont pas compatibles. Dans l'autre cas, elles le sont.an H30 test consisting in determining whether the union of the first and second lists L1, L2 comprises two distinct versions of the same class. If this is the case, the result of the test H30 is negative and the versions of the binary objects OBi and OB 2 are not compatible. In the other case, they are.
Dans le mode de réalisation décrit ici, le procédé client PC possède un processus PMAJ pour mettre à jour les bases de données d'héritage BDHCC, de dépendances BDDCC et d'objets binaires BDFBCC locales, à savoir celles du dispositif client DCL. Cette mise à jour peut par exemple se faire à la demande de l'utilisateur du dispositif client DCL, à intervalles réguliers, ou sur détection d'un appel à une fonction déterminée. Ce processus consiste à interroger (étape F50) le dispositif serveur SRV pour savoir s'il existe des nouvelles versions d'objets binaires OB, correspondant aux objets binaires référencés dans BDFBCC, et si c'est le cas pour télécharger (étape F60) ces objets binaires de façon récursive, ainsi que les bases de données de dépendance BDDCS et d'héritage BDHCS, en utilisant la fonction PCH déjà décrite. Grâce à cette mise à jour, le dispositif client DCL connaît à la demande les dernières versions des objets binaires de l'application logicielle AL et les dépendances entre ces objets.In the embodiment described here, the client PC method has a PMAJ process for updating the BDHCC inheritance databases, BDDCC dependencies, and local BDFBCC binary objects, namely those of the client device DCL. This update can for example be done at the request of the DCL client device user, at regular intervals, or on detection of a call to a specific function. This process consists in interrogating (step F50) the server device SRV in order to know if there are new versions of OB binary objects, corresponding to the binary objects referenced in BDFBCC, and if this is the case for downloading (step F60) these binary objects recursively, as well as the BDDCS dependency and BDHCS inheritance databases, using the PCH function already described. With this update, the client device DCL knows on demand the latest versions of the binary objects of the software application AL and the dependencies between these objects.
Conformément à l'invention, le dispositif serveur SRV comporte par conséquent des moyens pour indiquer au dispositif client DCL les nouvelles versions d'objets binaires OB1.According to the invention, the server device SRV consequently comprises means for indicating to the client device DCL the new versions of OB 1 binary objects.
D'une façon générale, les moyens du dispositif serveur SRV permettant le téléchargement d'objets binaires OBi, à partir de ce serveur, peuvent être qualifiés de moyens de mise à disposition de ces objets binaires. Dans la description faite précédemment, chaque fichier source traité FST ne comporte qu'une seule classe, mais l'invention s'applique également à d'autres modes de réalisation dans lesquels au moins un fichier source traité FST comporte plus d'une classe. Dans un mode de réalisation particulier, la partie serveur peut être éclatée dans chacun des terminaux des utilisateurs afin de permettre un fonctionnement de type « peer to peer » entre utilisateurs. Dans ce mode de réalisation, chaque dispositif client effectue lui-même les traitements sur les fichiers sources modifiés et génère les fichiers binaires correspondants. Les processus sont les mêmes que ceux décrits dans le mode de réalisation précédent, à l'exception près que chaque dispositif client est en communication avec les dispositifs clients voisins afin de rechercher, d'obtenir et de mettre à disposition les fichiers binaires qu'il possède et les enregistrements de ses bases de données. In general, the means of the SRV server device for downloading binary objects OBi, from this server, can be qualified as means for making these binary objects available. In the description above, each source file processed FST has only one class, but the invention is also applicable to other embodiments in which at least one source file processed FST has more than one class. In a particular embodiment, the server part can be split into each of the users' terminals in order to allow "peer to peer" operation between users. In this embodiment, each client device itself performs the processing on the modified source files and generates the corresponding binaries. The processes are the same as those described in the previous embodiment, except that each client device is in communication with neighboring client devices in order to search for, obtain, and make available the binary files it owns and records from its databases.
ANNEXE 1ANNEX 1
Figure imgf000028_0001
Figure imgf000028_0001
ANNEXE 2ANNEX 2
Figure imgf000029_0001
Figure imgf000029_0001
ANNEXE 3ANNEX 3
Figure imgf000030_0001
Figure imgf000030_0001
ANNEXE 4ANNEX 4
Figure imgf000031_0001
Figure imgf000031_0001
ANNEXE 5ANNEX 5
class Toto : Tlti{ voici Button_click () { INS : Tutu t = PC.PINT(« Tutu», « Toto », « v4 », param);class Toto: Tlti {here is Button_click () {INS: Tutu t = PC.PINT ("Tutu", "Toto", "v4", param);
} }}}
class Titi {class Titi {
// contenu } // content}

Claims

REVENDICAπONS REVENDICAπONS
1. Procédé pouvant être mis en œuvre par un dispositif client (DCL) comportant : - une étape (D400, FlO, F30, F60) de téléchargement de fichiers binaires découpés (E5) par classes (Ck) à partir d'un serveur (SRV), de façon progressive au fur et à mesure de l'exécution (D102, F20) d'une application ; et lors de l'instanciation d'une classe (D403), si celle-ci n'est pas présente dans ledit client (D404) ; - une étape (D405, F30) de demande au serveur du téléchargement du fichier binaire correspondant à la version la plus récente de la classe parmi celles qui sont compatibles avec une version de la classe dont l'instance est en cours et des dépendances nécessaires à son instanciation ; et -une étape (D406) d'instanciation de ladite classe téléchargée en mémoire dudit dispositif client.1. A method that can be implemented by a client device (DCL) comprising: a step (D400, FlO, F30, F60) of downloading binary files cut (E5) by classes (Ck) from a server ( SRV), progressively as and when executing (D102, F20) an application; and when instantiating a class (D403), if it is not present in said client (D404); a step (D405, F30) of request to the server of the download of the binary file corresponding to the most recent version of the class among those which are compatible with a version of the class whose instance is in progress and dependencies necessary to his instantiation; and a step (D406) of instantiating said downloaded class in memory of said client device.
2. Procédé selon la revendication 1, caractérisé en ce qu'il comporte une étape de mise à jour consistant à télécharger (F60), à partir dudit serveur, les dernières versions des fichiers binaires possédés par ledit dispositif client.2. Method according to claim 1, characterized in that it comprises an updating step of downloading (F60), from said server, the latest versions of the binary files owned by said client device.
3. Procédé selon la revendication 1 ou 2, caractérisé en ce qu'il comporte une étape (G20) d'obtention d'une base de données (BDC) permettant d'identifier, pour une version d'une première classe, la version la plus récente d'au moins une deuxième classe compatible avec la version de ladite première classe.3. Method according to claim 1 or 2, characterized in that it comprises a step (G20) for obtaining a database (BDC) for identifying, for a version of a first class, the version the most recent of at least a second class compatible with the version of said first class.
4. Procédé pouvant être mis en œuvre par un dispositif serveur, ce dispositif serveur comportant : - une base de données (BDFBCS) d'objets binaires (OB), chacun d'entre eux étant associé à un numéro de version ;4. A method that can be implemented by a server device, the server device comprising: a database (BDFBCS) of binary objects (OB), each of them being associated with a version number;
- une base de données (BDCSCS) de fichiers sources (FS), chacun d'entre eux étant associé à un numéro de version ;- a database (BDCSCS) of source files (FS), each of which is associated with a version number;
- un compilateur (s25) apte à générer lesdits objets binaires (OB) à partir desdits fichiers sources (FS) ; - une base de données (BDS) permettant d'identifier, pour une version d'un premier objet binaire, Ia version la plus récente d'au moins un deuxième objet binaire compatible avec Ia version dudit premier objet binaire ; ce procédé étant caractérisé en ce qu'il comporte :a compiler (s25) capable of generating said binary objects (OB) from said source files (FS); a database (BDS) for identifying, for a version of a first binary object, the most recent version of at least a second binary object compatible with the version of said first binary object; this method being characterized in that it comprises:
- une étape (D108, E3) de réception d'un fichier source modifié (FS) ;a step (D108, E3) of receiving a modified source file (FS);
- une étape (E40) de traitement dudit fichier source modifié (FS) permettant à un dispositif client (DCL) exécutant un premier objet binaire obtenu par compilation dudit fichier source traité (FST), d'intercepter un appel dudit premier objet binaire vers un deuxième objet binaire ;a step (E40) of processing said modified source file (FS) enabling a client device (DCL) executing a first binary object obtained by compiling said processed source file (FST), to intercept a call from said first binary object to a second binary object;
- une étape (D120, E50) de compilation dudit fichier source traité (FST) ; et en cas de succès de ladite étape de compilation (D122) :a step (D120, E50) of compiling said processed source file (FST); and if successful of said compiling step (D122):
- une étape (E70) de mise à jour desdites bases de données ; eta step (E70) of updating said databases; and
- une étape (D126) de mise à disposition dudit premier objet binaire audit dispositif client.a step (D126) of making said first bit object available to said client device.
5. Dispositif client comportant :5. Client device comprising:
- des moyens (dl4) de téléchargement de fichiers binaires découpés par classes à partir d'un serveur, de façon progressive au fur et à mesure de l'exécution d'une application ; et lors de l'instanciation d'une classe, si celle-ci n'est pas présente dans ledit client :means (dl4) for downloading binary files divided by classes from a server, in a progressive manner as and when the execution of an application; and when instantiating a class, if it is not present in the client:
- des moyens (dl4) de téléchargement, à partir dudit serveur, du fichier binaire correspondant à la version la plus récente de la classe parmi celles qui sont compatibles avec une version de la classe dont l'instance est en cours et des dépendances nécessaires à son instanciation ; etmeans (dl4) for downloading, from said server, the binary file corresponding to the most recent version of the class among those that are compatible with a version of the class whose instance is in progress and dependencies necessary to his instantiation; and
-des moyens (dll) d'instanciatïon de ladite classe téléchargée en mémoire dudit dispositif client.means (d11) for instantiating said downloaded class in memory of said client device.
6. Dispositif client selon la revendication 5, caractérisé en ce qu'il comporte des moyens pour identifier, obtenir et modifier du code source associé à au moins un fichier binaire, et des moyens d'envoi du fichier source modifié audit serveur.6. Client device according to claim 5, characterized in that it comprises means for identifying, obtaining and modifying source code associated with at least one binary file, and means for sending the modified source file to said server.
7. Dispositif serveur comportant : - des moyens (s24) d'accès à une base de données (BDFBCS) d'objets binaires (OB), chacun d'entre eux étant associé à un numéro de version ; - des moyens (s24) d'accès à une base de données (BDCSCS) de fichiers sources (FS), chacun d'entre eux étant associé à un numéro de version ;7. Server device comprising: means (s24) for accessing a database (BDFBCS) of binary objects (OB), each of them being associated with a version number; source database access means (S24) (S24), each of which is associated with a version number;
- un compilateur (s25) apte à générer lesdits objets binaires (OB) à partir desdits fichiers sources (FS) ; - des moyens (s24) d'accès à une base de données (BDS) permettant d'identifier pour une version d'un premier objet binaire, la version la plus récente d'au moins un deuxième objet binaire compatible avec la version dudit premier objet binaire ; ledit dispositif serveur étant caractérisé en ce qu'il comporte ; - des moyens (s24) de réception d'un fichier source modifié (FS) ;a compiler (s25) capable of generating said binary objects (OB) from said source files (FS); database access means (S24) for identifying, for a version of a first binary object, the most recent version of at least a second binary object compatible with the version of said first object; binary object; said server device being characterized in that it comprises; means (s24) for receiving a modified source file (FS);
- des moyens (s21) de traitement dudit fichier source modifié (FS) permettant à un dispositif client (DCL) exécutant un premier objet binaire obtenu par compilation dudit fichier source traité (FST), d'intercepter un appel dudit premier objet binaire vers un deuxième objet binaire ; - des moyens (s25) de compilation dudit fichier source traité (FST) ; et en cas de succès de ladite étape de compilation :means (s21) for processing said modified source file (FS) enabling a client device (DCL) executing a first binary object obtained by compiling said processed source file (FST), to intercept a call from said first binary object to a second binary object; means (s25) for compiling said processed source file (FST); and if successful of said compiling step:
- des moyens (s21) de mise à jour desdites bases de données ; etmeans (s21) for updating said databases; and
- des moyens (s24) de mise à disposition dudit premier objet binaire audit dispositif client.means (s24) for making said first bit object available to said client device.
8. Dispositif serveur selon la revendication 7, caractérisé en ce qu'il est apte à compiler les données source en données binaires et apte à gérer ces données pour les transmettre, les recevoir et les stocker à partir de priorités prédéfinies.8. Server device according to claim 7, characterized in that it is able to compile the source data into binary data and able to manage this data to transmit, receive and store from predefined priorities.
9. Dispositif serveur selon la revendication 8, dans lequel les priorités prédéfinies sont choisies parmi; le blocage de modifications en cours lorsqu'une version modifiée de l'application reçue par le serveur est vérifiée et validée, la transmission des modifications au fur et à mesure de leur compilation à tous les utilisateurs, et la transmission de toutes les modifications à tous les utilisateurs au fur et à mesure de leur réalisation avec une fusion des modifications compatibles.The server device of claim 8, wherein the predefined priorities are selected from; the blocking of modifications in progress when a modified version of the application received by the server is checked and validated, the transmission of modifications as and when they are compiled to all users, and the transmission of all modifications to all users as they are made with a fusion of compatible changes.
10. Dispositif serveur selon l'une quelconque des revendications 7 à 9, dans lequel uo éclatement de la partie serveur dans chacun des terminaux des utilisateurs est effectué afin de permettre un fonctionnement de type « peer to peer » entre utilisateurs.10. Server device according to any one of claims 7 to 9, wherein uo bursting of the server part in each of the user terminals is made to allow peer-to-peer operation between users.
11. Programme d'ordinateur comportant des instructions pour l'exécution des étapes du procédé selon l'une quelconque des revendications 1 à 3 lorsque ledit programme est exécuté par un ordinateur.A computer program comprising instructions for executing the steps of the method of any one of claims 1 to 3 when said program is executed by a computer.
12. Programme d'ordinateur comportant des instructions pour l'exécution des étapes du procédé selon la revendication 4 lorsque ledit programme est exécuté par un ordinateur.A computer program comprising instructions for performing the steps of the method of claim 4 when said program is executed by a computer.
13. Support d'enregistrement lisible par un ordinateur sur lequel est enregistré un programme d'ordinateur comprenant des instructions pour l'exécution des étapes du procédé de selon l'une quelconque des revendications 1 à 3.13. A computer-readable recording medium on which is recorded a computer program comprising instructions for performing the steps of the method of any one of claims 1 to 3.
14. Support d'enregistrement lisible par un ordinateur sur lequel est enregistré un programme d'ordinateur comprenant des instructions pour l'exécution des étapes du procédé de selon la revendication 4. A computer-readable recording medium on which a computer program is recorded including instructions for performing the steps of the method of claim 4.
PCT/FR2010/050429 2009-03-12 2010-03-12 Methods and devices for updating a client/server application without a client-side application restart WO2010103247A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR0901141 2009-03-12
FR0901141A FR2943155B1 (en) 2009-03-12 2009-03-12 METHOD AND COLLABORATIVE SYSTEM FOR MODIFICATIONS OF DIGITAL NETWORK APPLICATIONS

Publications (1)

Publication Number Publication Date
WO2010103247A1 true WO2010103247A1 (en) 2010-09-16

Family

ID=41129445

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/FR2010/050429 WO2010103247A1 (en) 2009-03-12 2010-03-12 Methods and devices for updating a client/server application without a client-side application restart

Country Status (2)

Country Link
FR (1) FR2943155B1 (en)
WO (1) WO2010103247A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8806469B2 (en) 2011-02-22 2014-08-12 International Business Machines Corporation Runtime code replacement

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0849666A2 (en) * 1996-12-20 1998-06-24 Siemens Aktiengesellschaft Method for instantiating class versions
EP1011043A2 (en) * 1998-12-14 2000-06-21 Nortel Networks Corporation Method and apparatus for loading a java application program
US20030074634A1 (en) * 1998-11-25 2003-04-17 Helmut Emmelmann Interactive server side components
US6826750B1 (en) * 2000-03-23 2004-11-30 International Business Machines Corporation Method of automatically selecting program and data updates based upon versions
WO2006017388A1 (en) * 2004-08-03 2006-02-16 Softricity, Inc. System and method for controlling inter-application association through contextual policy control
US20060248140A1 (en) * 2005-04-29 2006-11-02 Sap Aktiengesellschaft Compatibility framework using versioning class loaders
US20070261044A1 (en) * 2006-05-04 2007-11-08 Jonathan Clark Chained Hook Function Serving Multiple Versions Of Identically Named Dynamically Loaded Libraries
US20080243852A1 (en) * 2007-03-26 2008-10-02 International Business Machines Corporation System and Methods for Enabling Collaboration in Online Enterprise Applications
US20090030918A1 (en) * 2007-07-26 2009-01-29 Ryma Technology Solutions Collaborative development method and system

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0849666A2 (en) * 1996-12-20 1998-06-24 Siemens Aktiengesellschaft Method for instantiating class versions
US20030074634A1 (en) * 1998-11-25 2003-04-17 Helmut Emmelmann Interactive server side components
EP1011043A2 (en) * 1998-12-14 2000-06-21 Nortel Networks Corporation Method and apparatus for loading a java application program
US6826750B1 (en) * 2000-03-23 2004-11-30 International Business Machines Corporation Method of automatically selecting program and data updates based upon versions
WO2006017388A1 (en) * 2004-08-03 2006-02-16 Softricity, Inc. System and method for controlling inter-application association through contextual policy control
US20060248140A1 (en) * 2005-04-29 2006-11-02 Sap Aktiengesellschaft Compatibility framework using versioning class loaders
US20070261044A1 (en) * 2006-05-04 2007-11-08 Jonathan Clark Chained Hook Function Serving Multiple Versions Of Identically Named Dynamically Loaded Libraries
US20080243852A1 (en) * 2007-03-26 2008-10-02 International Business Machines Corporation System and Methods for Enabling Collaboration in Online Enterprise Applications
US20090030918A1 (en) * 2007-07-26 2009-01-29 Ryma Technology Solutions Collaborative development method and system

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8806469B2 (en) 2011-02-22 2014-08-12 International Business Machines Corporation Runtime code replacement

Also Published As

Publication number Publication date
FR2943155B1 (en) 2014-07-18
FR2943155A1 (en) 2010-09-17

Similar Documents

Publication Publication Date Title
EP1649363B1 (en) Method of managing software components that are integrated into an embedded system
FR2892883A1 (en) Multimedia scene describing method for e.g. mobile telephone, involves implementing optimization information in radiocommunication terminal, where information permits selection of scene rendering algorithm
EP2169569B1 (en) Method and system for communication between distinct web applications
WO2010103247A1 (en) Methods and devices for updating a client/server application without a client-side application restart
EP2674860B1 (en) Method for data processing by a navigation module
EP2633683A1 (en) Remotely sited execution of a software application within a network
EP2633440B1 (en) Indexing and execution of software applications in a network
FR3051268A1 (en) SYSTEM FOR CREATING AND DEPLOYING MULTIPLATFORM APPLICATIONS
FR2990667B1 (en) METHOD FOR MANAGING AN ELECTRONIC INSTALLATION OF A MOTOR VEHICLE AND ELECTRONIC INSTALLATION SO IMPLEMENTED
FR2906382A1 (en) METHODS AND DEVICES FOR OPTIMIZING XML PROCESSING
FR3043813A1 (en) METHOD FOR UPDATING A RECORDING IN A DATABASE BY A DATA PROCESSING DEVICE
WO2015087019A1 (en) Method of synchronization of data between a set of terminals
FR3079328A1 (en) METHOD AND SYSTEM FOR CREATING AN IMAGE OF AN APPLICATION
EP2284751B1 (en) Method for traceability and accountability of dynamic exchange in an internet environment
FR3041450A1 (en) CUSTOMER / SERVER ARCHITECTURE FOR THE ADMINISTRATION OF A SUPERCALCULATOR
EP2271051B1 (en) Method for executing an application service in an web environment
FR3029657A1 (en) METHOD FOR PROVIDING A COMPUTER SERVICE AND COMPUTER SYSTEM FOR IMPLEMENTING THE METHOD.
FR3080935A1 (en) METHOD AND SYSTEM FOR GENERATING THE CONTENT OF REALITY CONTENT INCREASED ON A USER APPARATUS.
PIVATO Design and development of a continuous integration and continuous delivery system for a cloud based web application
WO2022112687A1 (en) Method for managing access to a plurality of bots with use of an independent search channel, and corresponding computer program product, storage medium, terminal and servers
FR2924297A1 (en) METHOD FOR MANAGING THE USER INTERFACE OF A MOBILE TERMNINAL ASSOCIATED WITH A SECURITY MODULE AND ASSOCIATED MOBILE TERMINAL
FR3118815A1 (en) Estimating the progress of a software task execution
EP2860630A1 (en) Data transfer method in a dynamic environment
WO2020089076A1 (en) Method for executing code portions on execution resources
WO2012149977A1 (en) Method and corresponding system for generating a software application manipulating structured data

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 10715922

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 10715922

Country of ref document: EP

Kind code of ref document: A1