WO2015045108A1 - クライアントサーバープログラム生成装置およびクライアントサーバープログラム生成プログラム - Google Patents

クライアントサーバープログラム生成装置およびクライアントサーバープログラム生成プログラム Download PDF

Info

Publication number
WO2015045108A1
WO2015045108A1 PCT/JP2013/076308 JP2013076308W WO2015045108A1 WO 2015045108 A1 WO2015045108 A1 WO 2015045108A1 JP 2013076308 W JP2013076308 W JP 2013076308W WO 2015045108 A1 WO2015045108 A1 WO 2015045108A1
Authority
WO
WIPO (PCT)
Prior art keywords
program
client
server
user interface
code
Prior art date
Application number
PCT/JP2013/076308
Other languages
English (en)
French (fr)
Inventor
隆史 坂倉
Original Assignee
三菱電機株式会社
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 三菱電機株式会社 filed Critical 三菱電機株式会社
Priority to PCT/JP2013/076308 priority Critical patent/WO2015045108A1/ja
Priority to TW102139486A priority patent/TW201512984A/zh
Publication of WO2015045108A1 publication Critical patent/WO2015045108A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code

Definitions

  • the present invention relates to a technique for generating a client server program using a stand-alone application program.
  • the cloud computing service includes a computer resource lending service or an application use service.
  • the computer resource lending service is a service in which a service provider provides a data center composed of a cluster of computers at an appropriate place and lends the computer resource itself of the data center.
  • the application use service is a service that can use a data center application.
  • the cloud computing service provides the user with convenience that cannot be enjoyed in the conventional form having an information system for each office.
  • GUI Graphic User Interface
  • Patent Document 1 discloses a method of analyzing a source code of an application that operates independently and generating a client server type program by dividing the source code into a client program part and a server program part.
  • the test performed on the original application that operates alone is invalidated, and it is necessary to further test the client server type program.
  • the object of the present invention is to be able to generate a server program using a stand-alone application program.
  • the client server program generation device of the present invention An application that analyzes a source program file of the data processing program of an application program including a user interface program and a data processing program, and identifies an external function called from the user interface program among a plurality of functions included in the data processing program A program analysis unit;
  • the server program comprising the server communication program and the application program, the source program file of the server communication program receives an execution request message for requesting execution of the external function, and is included in the application program of the server program A server communication program editing unit for adding a call code for calling an external function.
  • a server program can be generated using a stand-alone application program.
  • FIG. 3 is a relationship diagram among an application program 100, a server program 110, and a client program 120 according to Embodiment 1.
  • FIG. 2 is a functional configuration diagram of a client server program generation device 200 according to Embodiment 1.
  • FIG. 3 is a flowchart of a server program generation method according to the first embodiment. It is a figure which shows an example of the application file 300 in Embodiment 1.
  • FIG. 6 is a diagram illustrating an example of a server communication interface file 400 according to Embodiment 1.
  • FIG. 6 is a diagram illustrating an example of a server communication interface file 400 according to Embodiment 1.
  • FIG. 3 is a diagram illustrating an example of a hardware configuration of a client server program generation device 200 according to Embodiment 1.
  • 10 is a functional configuration diagram of a client server program generation device 200 according to Embodiment 2.
  • 10 is a flowchart of a client server program generation method according to the second embodiment.
  • 10 is a diagram illustrating an example of a client communication interface file 500 according to Embodiment 2.
  • FIG. 10 is a diagram illustrating an example of a client communication interface file 500 according to Embodiment 2.
  • FIG. 10 is a functional configuration diagram of a client server program generation device 200 according to Embodiment 3.
  • 10 is a flowchart of a client server program generation method according to the third embodiment.
  • FIG. 20 is a diagram showing an example of an API list 291 in the third embodiment.
  • 15 is a flowchart of communication interface editing processing (S360) in the third embodiment.
  • FIG. 10 is a configuration diagram of a client server system 600 in a fifth embodiment.
  • FIG. 20 is a relationship diagram among an application program 100, a server program 110, and a client program 120 in a sixth embodiment.
  • FIG. 38 is a diagram illustrating an example of message data conversion in the sixth embodiment.
  • FIG. 20 is a diagram illustrating an example of a screen of a WEB browser 617 in the sixth embodiment.
  • FIG. 20 is a diagram illustrating an example of a computer system 620 according to Embodiment 7.
  • FIG. 20 is a diagram illustrating an example of a client server system 630 according to the eighth embodiment.
  • FIG. 20 is a diagram illustrating an example of a computer system 640 according to a ninth embodiment.
  • Embodiment 1 FIG. A mode in which a server program is generated using a stand-alone application program will be described.
  • FIG. 1 is a relationship diagram among the application program 100, the server program 110, and the client program 120 in the first embodiment. A relationship among the application program 100, the server program 110, and the client program 120 in the first embodiment will be described with reference to FIG.
  • the application program 100 is a stand-alone program generated on the assumption that it is executed by one information processing apparatus. That is, the application program 100 is a program executed by a stand-alone information processing apparatus that operates independently without depending on other computers.
  • the application program 100 includes a GUI (Graphical User Interface) operated by a user.
  • GUI 101 a program for processing the GUI
  • programs other than the GUI 101 are called data processing programs.
  • the server program 110 is a program executed by the server device.
  • the server program 110 includes an application program 100 and a server communication interface 111.
  • the library of the GUI 101 is invalidated so that the GUI 101 included in the application program 100 does not function.
  • a server communication interface 111 (an example of a server communication program) is a program that communicates with a client device via a network 199.
  • the client program 120 is a program executed by the client device.
  • the client program 120 includes a GUI 101 (or an equivalent program) and a client communication interface 121.
  • the client communication interface 121 (an example of a client communication program) is a program that communicates with the server device via the network 199.
  • the client communication interface 121 calls the server program 110 by RPC (Remote Procedure Call).
  • RPC Remote Procedure Call
  • FIG. 2 is a functional configuration diagram of the client server program generation device 200 according to the first embodiment. A functional configuration of the client server program generation device 200 according to the first embodiment will be described with reference to FIG.
  • the client server program generation device 200 is a computer that generates the server program 110 using the source program file of the application program 100.
  • the client server program generation device 200 includes an application program analysis unit 210, a server communication interface generation unit 220, a client server program generation unit 280, and a device storage unit 290.
  • the device storage unit 290 stores data used, generated or input / output by the client server program generation device 200.
  • the device storage unit 290 stores the application file 300, the server communication interface file 400, and the server program 110.
  • the application file 300 is a source program file for each of a plurality of programs (including a data processing program and the GUI 101) included in the application program 100.
  • the server communication interface file 400 is a source program file for the server communication interface 111.
  • the server communication interface file 400 includes source code necessary for communication with the client communication interface 121.
  • the source program file is a file including a program source code (source program).
  • the application program analysis unit 210 analyzes each application file 300 of a plurality of programs included in the application program 100 and identifies a function called from another program (for example, the GUI 101).
  • a function corresponds to a method in an object-oriented program.
  • a function (or method) called from another program is referred to as an external function.
  • the server communication interface generation unit 220 receives source code (hereinafter referred to as an external function) included in the application program 100 of the server program 110 when an execution request message requesting execution of an external function is received. Are added to the server communication interface file 400.
  • the client server program generation unit 280 generates the server program 110 by compiling and linking the server communication interface file 400 and each application file 300.
  • FIG. 3 is a flowchart of the server program generation method according to the first embodiment. A server program generation method according to Embodiment 1 will be described with reference to FIG.
  • the application program analysis unit 210 selects one unselected application file 300. After S110, the process proceeds to S120.
  • the application program analysis unit 210 analyzes the application file 300 (including the header file used by the application file 300) selected in S110. For example, the application program analysis unit 210 performs lexical analysis and syntax analysis on the application file 300. After S120, the process proceeds to S130.
  • the application program analysis unit 210 determines whether or not the application file 300 includes an external function based on the analysis result obtained in S120. For example, a function (or method) having an “extern” declaration is an external function. If the application file 300 includes an external function (YES), the process proceeds to S140. If the application file 300 does not include an external function (NO), the process proceeds to S150.
  • FIG. 4 is a diagram illustrating an example of the application file 300 according to the first embodiment.
  • the application file 300 shown in FIG. 4 includes getname () in which an external declaration is made (see 302 in the figure). This getname () is an external function.
  • getname is an external function.
  • the server communication interface generation unit 220 adds a call code for calling an external function included in the application file 300 to the server communication interface file 400. After S140, the process proceeds to S150.
  • FIGS. 5 and 6 are diagrams illustrating an example of the server communication interface file 400 according to the first embodiment. An example of the server communication interface file 400 in the first embodiment will be described with reference to FIGS.
  • the server communication interface file 400 is a source file of the server communication interface 111 that communicates with the client communication interface 121.
  • the server communication interface generation unit 220 adds remote_getname () to the server communication interface file 400 (see 404 in FIG. 6).
  • This remote_getname () is a wrap function for calling getname () included in the application file 300 (see FIG. 4). This wrap function is executed when an execution request message requesting execution of getname () is received.
  • the name of the wrap function can be generated by adding a specific character string (remote_) to the name of the external function.
  • a portion excluding remote_getname () is a standard source code.
  • a server communication interface file 400 in which a fixed source code is described is prepared in advance.
  • the standard part of the server communication interface file 400 includes source code that defines the listening port of the port number “2002” (see 401 in FIG. 5). This listening port is for communicating with the client communication interface 121.
  • the fixed part of the server communication interface file 400 includes a main function of the server program 110 (see 402 in FIG. 5), and this main function includes a source code for calling a wrap function including a calling code. (See 403 in FIG. 6). Returning to FIG. 3, the description will be continued from S150.
  • the application program analysis unit 210 determines whether there is an unselected application file 300 that has not been selected in S110. If there is an unselected application file 300 (YES), the process returns to S110. If there is no unselected application file 300 (NO), the process proceeds to S160.
  • the client server program generation unit 280 generates the server program 110 by compiling and linking the server communication interface file 400 and each application file 300.
  • the client server program generation unit 280 replaces main () (see 301 in FIG. 4) included in the application file 300 with another name.
  • the client server program generation unit 280 replaces main () with stub_main (). This is to prevent the name from overlapping with the main function (see 402 in FIG. 5) of the server communication interface file 400. That is, the contents of the application file 300 and the application program 100 are not altered.
  • the processing of the server program generation method ends.
  • FIG. 7 is a diagram illustrating an example of a hardware configuration of the client server program generation device 200 according to the first embodiment.
  • An example of the hardware configuration of the client server program generation device 200 according to Embodiment 1 will be described with reference to FIG.
  • the hardware configuration of the client server program generation device 200 may be different from the configuration shown in FIG.
  • the client server program generation device 200 is a computer including an arithmetic device 901, an auxiliary storage device 902, a main storage device 903, a communication device 904, and an input / output device 905.
  • the arithmetic device 901, auxiliary storage device 902, main storage device 903, communication device 904, and input / output device 905 are connected to the bus 909.
  • the arithmetic device 901 is a CPU (Central Processing Unit) that executes a program.
  • the auxiliary storage device 902 is, for example, a ROM (Read Only Memory), a flash memory, or a hard disk device.
  • the main storage device 903 is, for example, a RAM (Random Access Memory).
  • the communication device 904 performs communication via the Internet, a LAN (local area network), a telephone line network, or other networks in a wired or wireless manner.
  • the input / output device 905 is, for example, a mouse, a keyboard, or a display device.
  • the program is normally stored in the auxiliary storage device 902, loaded into the main storage device 903, read into the arithmetic device 901, and executed by the arithmetic device 901.
  • an operating system OS
  • a program for realizing the function described as “ ⁇ unit” is stored in the auxiliary storage device 902.
  • the OS and the program that realizes the functions described as “ ⁇ units” are loaded into the main storage device 903 and executed by the arithmetic device 901. “ ⁇ part” can be read as “ ⁇ processing” and “ ⁇ process”.
  • the server program 110 can be generated using the stand-alone type application program 100.
  • a large-scale stand-alone GUI application exceeding 1 million lines can be used as a client-server type application program without modifying the source program.
  • a large-scale application program that is difficult to adapt to the cloud computing service can be adapted to the cloud computing service.
  • FIG. A mode for generating the client program 120 in addition to the server program 110 will be described.
  • items different from the first embodiment will be mainly described. Matters whose description is omitted are the same as those in the first embodiment.
  • FIG. 8 is a functional configuration diagram of the client server program generation device 200 according to the second embodiment. A functional configuration of the client server program generation device 200 according to the second embodiment will be described with reference to FIG.
  • the client server program generation device 200 includes a client communication interface generation unit 230 (an example of a client communication program editing unit) in addition to the configuration described in the first embodiment (see FIG. 2).
  • the device storage unit 290 stores the client communication interface file 500.
  • the client communication interface file 500 is a source program file of the client communication interface 121.
  • the client communication interface file 500 includes source code necessary for communication with the server communication interface 111.
  • the client communication interface generation unit 230 adds, to the client communication interface file 500, source code (hereinafter, referred to as an execution request code) that transmits an execution request message when the GUI 101 requests execution of an external function.
  • the client server program generation unit 280 generates the client program 120 by compiling and linking the client communication interface file 500 and the application file 300 of the GUI 101.
  • FIG. 9 is a flowchart of the client server program generation method according to the second embodiment. A client server program generation method according to the second embodiment will be described with reference to FIG.
  • the application program analysis unit 210 selects an unselected application file 300.
  • S210 is the same as S110 of the first embodiment (see FIG. 3). After S210, the process proceeds to S220.
  • the application program analysis unit 210 analyzes the application file 300 selected in S210.
  • S220 is the same as S120 of the first embodiment (see FIG. 3). After S220, the process proceeds to S230.
  • the application program analysis unit 210 determines whether or not the application file 300 includes an external function. S230 is the same as S130 of the first embodiment (see FIG. 3). If the application file 300 includes an external function (YES), the process proceeds to S240. If the application file 300 does not include an external function (NO), the process proceeds to S260.
  • S ⁇ b> 240 the server communication interface generation unit 220 adds an external function call code to the server communication interface file 400.
  • S240 is the same as S140 in the first embodiment (see FIG. 3). After S240, the process proceeds to S250.
  • the client communication interface generation unit 230 adds an execution request code that transmits an execution request message when an external function execution is requested from the GUI 101 to the client communication interface file 500. After S250, the process proceeds to S260.
  • FIGS. 10 and 11 are diagrams illustrating an example of the client communication interface file 500 according to the second embodiment. An example of the client communication interface file 500 according to the second embodiment will be described with reference to FIGS.
  • the client communication interface file 500 is a source file of the client communication interface 121 that communicates with the server communication interface 111.
  • the client communication interface generation unit 230 adds getname () to the client communication interface file 500 (see 503 in FIG. 11).
  • This getname () is a function including an execution request code (write) for transmitting an execution request message and a source code (read) for receiving an execution response message indicating the execution result.
  • the part excluding getname () (the part above the broken line in FIGS. 10 and 11) is a standard source code.
  • a client communication interface file 500 in which a fixed source code is described is prepared in advance.
  • the fixed part of the client communication interface file 500 includes createSession () and closeSession () (see 501 and 502 in FIG. 10).
  • createSession () is a function that establishes a session with the server communication interface 111
  • closeSession () is a function that releases the established session.
  • the application program analysis unit 210 determines whether there is an unselected application file 300 that has not been selected in S210. If there is an unselected application file 300 (YES), the process returns to S210. If there is no unselected application file 300 (NO), the process proceeds to S270.
  • the client server program generation unit 280 generates the server program 110 as in S160 (see FIG. 3) of the first embodiment. Further, the client server program generation unit 280 generates the client program 120 by compiling and linking the client communication interface file 500 and the application file 300 of the GUI 101. After S270, the processing of the client server program generation method ends.
  • the server program 110 and the client program 120 can be generated using the stand-alone application program 100.
  • Embodiment 3 A mode of generating a client server program that causes a server apparatus to execute only data processing when GUI processing and data processing are included in the external function will be described.
  • items different from the first and second embodiments will be mainly described. Matters whose description is omitted are the same as in the first and second embodiments.
  • the application program 100 is a program having a GUI 101. Furthermore, the application program 100 is a program that operates only when a user operates a GUI object, unlike a simulation program or the like.
  • the main input means used by the user to operate the GUI are a keyboard and a mouse.
  • the user inputs data into the GUI object using a keyboard.
  • the user operates the mouse to select a desired GUI object or select a pull-down menu.
  • GUI libraries When the programming language is object-oriented, a GUI event handler is implemented by a base object (base class object). Then, the GUI library calls a GUI event handler defined in the base object, instead of being implemented so as to issue a system call to obtain an interrupt generated by the operation of the mouse or the keyboard and accompanying data. That is, the GUI library hides a mechanism for obtaining an interrupt generated by operating a mouse or a keyboard and accompanying data by issuing a system call from a programmer.
  • base object base class object
  • the GUI library calls a GUI event handler defined in the base object, instead of being implemented so as to issue a system call to obtain an interrupt generated by the operation of the mouse or the keyboard and accompanying data. That is, the GUI library hides a mechanism for obtaining an interrupt generated by operating a mouse or a keyboard and accompanying data by issuing a system call from a programmer.
  • GUI screen is configured by a lower GUI class that inherits the upper GUI class provided from the GUI library.
  • processing of the event handler of the inherited GUI class is defined (this redefinition is called an override).
  • OnLeftClick a menu implemented in an event handler called OnLeftClick () is displayed. Also, input data can be obtained from the menu that is in the selected state when the mouse button is released and the event OnRelease () occurs.
  • An application program with a GUI performs calculations based on data input by the user. For this reason, the contents of the event handler of the GUI library can be divided into GUI processing to be executed by the client program and data processing to be executed by the server program.
  • FIG. 12 is a functional configuration diagram of the client server program generation device 200 according to the third embodiment. A functional configuration of the client server program generation device 200 according to Embodiment 3 will be described with reference to FIG.
  • the client server program generation device 200 includes an API analysis unit 211 (an example of an external function analysis unit) in addition to the configuration described in the second embodiment (see FIG. 8).
  • the API analysis unit 211 analyzes a source code of an API function that processes an API (Application Program Interface), and determines whether the API function includes user interface processing that uses the GUI 101 and data processing that does not use the GUI 101. To do.
  • An API function is an example of an external function.
  • FIG. 13 is a flowchart of the client server program generation method according to the third embodiment. A client server program generation method according to Embodiment 3 will be described with reference to FIG.
  • S310 the application program analysis unit 210 selects an unselected application file 300.
  • S310 is the same as S110 of the first embodiment (see FIG. 3). After S310, the process proceeds to S320.
  • S320 the application program analysis unit 210 analyzes the application file 300 selected in S310.
  • S320 is the same as S120 of the first embodiment (see FIG. 3). After S320, the process proceeds to S330.
  • the application program analysis unit 210 determines whether or not the application file 300 includes a call code for calling an API function, based on the analysis result in S320. For example, the application program analysis unit 210 determines whether or not the application file 300 includes an API function using an API list 291 (see FIG. 14) indicating the function name of the API function.
  • FIG. 14 is a diagram illustrating an example of the API list 291 according to the third embodiment.
  • An API list 291 in FIG. 14 shows the function names of the API functions of the GUI library class.
  • the API list 291 may be a hash list in which function names of API functions are arranged using hash values. When the API list 291 is a hash list, the function name of the API function can be searched at high speed. If the application file 300 includes an API function call code (YES), the process proceeds to S340. If the application file 300 does not include the API function call code (NO), the process proceeds to S370.
  • the server communication interface generation unit 220 adds the API function source code (an example of the execution code) to the server communication interface file 400 instead of the external function call code (see the first embodiment).
  • the API function source code is stored in the device storage unit 290 in advance. After S340, the process proceeds to S350.
  • the client communication interface generation unit 230 adds an execution request code for requesting execution of the API function instead of the external function to the client communication interface file 500. After S350, the process proceeds to S360.
  • the server communication interface generation unit 220 edits the server communication interface file 400, and the client communication interface generation unit 230 edits the client communication interface file 500. Details of the communication interface editing process (S360) will be described later. After S360, the process proceeds to S370.
  • the application program analysis unit 210 determines whether there is an unselected application file 300 that has not been selected in S310. If there is an unselected application file 300 (YES), the process returns to S310. If there is no unselected application file 300 (NO), the process proceeds to S380.
  • the client server program generation unit 280 generates the server program 110 and the client program 120, as in S270 (see FIG. 9) of the second embodiment. After S380, the processing of the client server program generation method ends.
  • FIG. 15 is a flowchart of the communication interface editing process (S360) in the third embodiment.
  • the communication interface editing process (S360) in the third embodiment will be described with reference to FIG.
  • the API analysis unit 211 analyzes the source code of the API function specified in S330 (see FIG. 13). For example, the API analysis unit 211 performs lexical analysis and syntax analysis on the API function source code.
  • the API function specified in S330 is referred to as a specific API. After S361, the process proceeds to S362.
  • the API analysis unit 211 determines whether or not the specific API includes an API function call code based on the analysis result of S361. The determination method is the same as S330 (see FIG. 13). If the specific API includes an API function call code (YES), the process proceeds to S363. When the specific API does not include the API function call code (NO), the communication interface editing process (S360) ends.
  • the API analysis unit 211 determines whether the API function called by the call code included in the specific API is a GUI event handler (an example of user interface processing) based on the analysis result in S361. For example, the API analysis unit 211 determines whether the API function is a GUI event handler by using a GUI event handler list indicating the name of the GUI event handler. In this case, the GUI event handler list is stored in advance in the device storage unit 290. If the API function is a GUI event handler, the process proceeds to S364. If the API function is not a GUI event handler, the communication interface editing process (S360) ends.
  • a GUI event handler an example of user interface processing
  • the server communication interface generation unit 220 adds a callback function to the source code of the specific API added to the server communication interface file 400 in S340 (see FIG. 13).
  • the callback function (an example of a user interface request code) is a function that transmits an execution request message (an example of a user interface request message) for requesting execution of a GUI event handler to a client device.
  • the server communication interface generation unit 220 adds a callback function before or after the calling code that calls the GUI event handler.
  • the server communication interface generation unit 220 invalidates the function of the GUI event handler by editing a library that functions as a GUI event handler among a plurality of libraries (binary codes) used by the server program 110. .
  • the process proceeds to S365.
  • the client communication interface generation unit 230 adds a call code that calls an event handler of the GUI 101 to the client communication interface file 500. Thereby, the client program 120 can execute the event handler of the GUI 101 in response to a request from the callback function of the server program 110. Further, the client communication interface generation unit 230 adds an execution response code that responds to the execution result of the event handler of the GUI 101 to the client communication interface file 500.
  • the communication interface editing process ends.
  • Embodiment 4 A mode for generating the client program 120 including the acceleration logic will be described.
  • items different from the first to third embodiments will be mainly described. Matters whose description is omitted are the same as at least one of the first to third embodiments.
  • the configuration of the client server program generation device 200 is the same as that of the second embodiment (see FIG. 8) or the third embodiment (see FIG. 12).
  • the client communication interface generation unit 230 performs the following processing: Execute the process.
  • the client communication interface generation unit 230 adds the number measurement code, the number calculation code, the conditional branch code, and the data synchronization code to the client communication interface file 500. In addition, the client communication interface generation unit 230 adds the external function to the client communication interface file 500.
  • the number measurement code is source code for measuring the number of execution requests for which the execution request code has been executed.
  • the number calculation code is a source code for calculating the number of times per unit time that the execution request code is executed based on the number calculation code measured by the number measurement code.
  • the conditional branch code compares the number of times per unit time calculated by the number calculation code with the execution request frequency threshold.
  • the execution request frequency threshold is a predetermined value. When the number of times per unit time is greater than the execution request count threshold, the conditional branch code transmits a data request message requesting data used by the external function to the server communication interface 111, and the data used by the external function is transmitted to the server communication interface. The received data is stored in the memory of the client device, and an external function is executed using the data stored in the memory. If the number of times per unit time is less than the number of execution requests, the conditional branch code executes the execution request code. When the number of times per unit time is the same as the execution request frequency threshold, the conditional branch code executes the same processing as in any of the above cases. That is, the conditional branch code executes either the external function or the execution request code.
  • FIG. 16 is a diagram illustrating an example of the client server system 600 according to the fifth embodiment.
  • a client server system 600 illustrated in FIG. 16 includes a client device 601, a firewall 602 on the client device 601 side, a server device 604, and a firewall 603 on the server device 604 side.
  • the RPC mechanism in the client server system 600 does not exclude HTTP or an HTTP derivation procedure (Websocket or the like) as its communication means. Therefore, even if multiple firewalls (602, 603) are interposed, the RPC mechanism is not affected.
  • FIG. 17 is a relationship diagram among the application program 100, the server program 110, and the client program 120 in the sixth embodiment. A relationship among the application program 100, the server program 110, and the client program 120 in the sixth embodiment will be described with reference to FIG.
  • the client program 120 is configured by a WEB browser. That is, the WEB browser functions as the client program 120.
  • the server communication interface 111 of the server program 110 includes a data conversion function 112 (an example of a data format conversion code).
  • the data conversion function 112 converts the data format of the message received from the client program 120 from the client data format to the server data format, and converts the data format of the message transmitted to the client program 120 from the server data format to the client data format.
  • the client data format is a data format used by the client program 120
  • the server data format is a data format used by the server program 110.
  • the data conversion function 112 converts the data format of the execution request message that requests execution of the external function from the client data format to the server data format.
  • the data conversion function 112 converts the data format of the execution response message that returns the execution result of the external function from the server data format to the client data format.
  • FIG. 18 is a diagram illustrating an example of message data conversion in the sixth embodiment.
  • a message 611 illustrated in FIG. 18 is an example of a message communicated between the client program 120 and the server program 110, and the message 616 is obtained by converting the message 611 into a JSON (Java Script Object Notification) format. “JavaScript” is a registered trademark.
  • the message header 612 indicates whether or not the message 611 is divided and the data size of the message 611.
  • the integer 613 indicates “4” in the int format.
  • the binary data size 614 indicates the data size of the binary data 615. Show. Mutual data conversion between the message 611 and the message 616 is performed immediately after the server communication interface 111 receives the message 611 and immediately before the server communication interface 111 transmits the message 611.
  • the server program generation method is the same as that in the first embodiment (see FIG. 3).
  • FIG. 19 is a diagram illustrating an example of a screen of the WEB browser 617 according to the sixth embodiment.
  • a WEB browser 617 shown in FIG. 19 includes a parts list 618 and a screen design unit 619.
  • the screen design unit 619 displays a design screen including a button 619A, a tree 619B, and a canvas 619C.
  • the screen designer selects a component (GUI object) from the component list 618 and designs the screen by dragging and dropping the selected component onto the screen design unit 619.
  • the screen designer designs screen transitions.
  • Embodiment 8 FIG. A mode in which the server program performs multicast communication with a plurality of client programs will be described.
  • items different from the first to third embodiments will be mainly described. Matters whose description is omitted are the same as at least one of the first to third embodiments.
  • the configuration of the client server program generation device 200 is the same as that of any one of the first to third embodiments (see FIGS. 2, 8, and 12).
  • the client server program generation method is the same as in any one of the first to third embodiments (see FIGS. 3, 9, and 13).
  • the server communication interface generation unit 220 adds the multicast transmission code to the client communication interface file 500.
  • the multicast transmission code is source code for multicasting an execution response message to a plurality of client devices including the client device that has transmitted the execution request message.
  • the execution response message is a message indicating the execution result of the external function requested by the execution request message. Multicast may be read as broadcast.
  • FIG. 21 is a diagram illustrating an example of the client server system 630 according to the eighth embodiment. An example of the client server system 630 according to the eighth embodiment will be described with reference to FIG.
  • the server device 631 returns a message as a synchronous RPC to the client device 635, but multicasts the contents of the data change to the client devices 632 to 634, the client device 636, and the client device 637 using session information managed by itself.
  • the listening thread of the client program 120 receives the message asynchronously and reflects the data change on the display.
  • Embodiment 9 A form of a computer system to which any one of the first to eighth embodiments is applied will be described.
  • FIG. 22 is a diagram illustrating an example of a computer system 640 according to the ninth embodiment. An example of a computer system 640 according to Embodiment 9 will be described with reference to FIG.
  • the client device 647 When the client device 647 is authenticated by the authentication server 641 across the firewall 646, an authentication ticket is given.
  • the client device 647 designates a desired service among the services provided by the server devices (641 to 645) in the URL, and accesses the service activation server 648 using the authentication ticket. Thereby, the server program of the server device that provides a desired service is executed.
  • the client device 647 specifies the URL of the engineering server 643 and passes the authentication ticket to the service activation server 648.
  • the service activation server 648 inquires ticket information to the authentication server 641 and authenticates the access of the client device 647. If the authentication ticket of the client device 647 matches the authentication ticket given from the authentication server 851, the service activation server 648 activates the server program of the engineering server 643.
  • the processing procedures described using the flowcharts and the like in each embodiment are an example of a processing procedure of a method according to each embodiment and an example of a processing procedure of a program (for example, a client server program generation program) according to each embodiment. It is. That is, the processing procedure of the method according to each embodiment and the processing procedure of the program according to each embodiment may be realized by a processing procedure partially different from the processing procedure described in each embodiment.

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

 クライアントサーバープログラム生成装置は、GUIプログラムとデータ処理プログラムとを含んだスタンドアロン型のアプリケーションプログラムを用いてサーバープログラムを生成する。このとき、クライアントサーバープログラム生成装置は、データ処理プログラムのソースプログラムファイルを解析し、データ処理プログラムに含まれる複数の関数のうちGUIプログラムから呼び出される外部関数を特定する。そして、クライアントサーバープログラム生成装置は、サーバー通信インターフェースのソースプログラムファイルに、外部関数の実行を要求する実行要求メッセージを受信したときにサーバープログラムのアプリケーションプログラムに含まれる外部関数を呼び出す呼び出しコードを追加する。

Description

クライアントサーバープログラム生成装置およびクライアントサーバープログラム生成プログラム
 本発明は、スタンドアロン型のアプリケーションプログラムを用いてクライアントサーバーのプログラムを生成する技術に関するものである。
 IP(Internet Protocol)通信網の発展を背景に、あらゆる形態をもって計算機資源の提供サービスを行うクラウドコンピューティングサービスが急速に普及している。
 クラウドコンピューティングサービスには、計算機資源の貸出サービスまたはアプリケーションの利用サービスなどがある。計算機資源の貸出サービスは、サービスプロバイダが然るべき場所にコンピュータのクラスタからなるデータセンターを設けて、データセンターの計算機資源そのものを貸し出すサービスである。アプリケーションの利用サービスは、データセンターのアプリケーションを利用できるサービスである。
 データセンターでシステムの運用が行われるため、利用者はあらゆる形態のシステムを少ない初期投資で利用することができる。
 また、遠隔地に所在する複数のユーザーの共同作業が可能になり、複数のレプリカデータが格納されるため、データセンターは耐災害性を有することができる。
 このように、クラウドコンピューティングサービスは、事業所毎に情報システムを持つ従来の形態では享受できない利便性をユーザーに与える。
 しかしながら、スタンドアロン型で設計された大規模なGUI(Graphical User Interface)アプリケーションをクラウドコンピューティングサービス化するには、ほとんどの場合、GUIアプリケーションの再設計および再実装が必要となる。
 また、データセンターは遠隔地に置かれるので、データセンターからの応答時間に通信遅延を織り込んでGUIアプリケーションを設計する必要がある。
 特許文献1には、単独で動作するアプリケーションのソースコードをデータ解析し、クライアントプログラム部分とサーバープログラム部分とに分けて、クライアントサーバー型のプログラムを生成する方法が開示されている。
 しかし、この方法では、単独で動作する元々のアプリケーションに対して実施された試験が無効となり、クライアントサーバー型のプログラムに対してさらに試験を実施する必要がある。
特開2000-137600号公報
 本発明は、スタンドアロン型のアプリケーションプログラムを用いてサーバープログラムを生成できるようにすることを目的とする。
 本発明のクライアントサーバープログラム生成装置は、
 ユーザーインターフェースプログラムとデータ処理プログラムとを備えるアプリケーションプログラムの前記データ処理プログラムのソースプログラムファイルを解析し、前記データ処理プログラムに含まれる複数の関数のうち前記ユーザーインターフェースプログラムから呼び出される外部関数を特定するアプリケーションプログラム解析部と、
 サーバー通信プログラムと前記アプリケーションプログラムとを備えるサーバープログラムの前記サーバー通信プログラムのソースプログラムファイルに、前記外部関数の実行を要求する実行要求メッセージを受信したときに前記サーバープログラムの前記アプリケーションプログラムに含まれる前記外部関数を呼び出す呼び出しコードを追加するサーバー通信プログラム編集部とを備える。
 本発明によれば、スタンドアロン型のアプリケーションプログラムを用いてサーバープログラムを生成することができる。
実施の形態1におけるアプリケーションプログラム100とサーバープログラム110とクライアントプログラム120との関係図である。 実施の形態1におけるクライアントサーバープログラム生成装置200の機能構成図である。 実施の形態1におけるサーバープログラム生成方法のフローチャートである。 実施の形態1におけるアプリケーションファイル300の一例を示す図である。 実施の形態1におけるサーバー通信インターフェースファイル400の一例を示す図である。 実施の形態1におけるサーバー通信インターフェースファイル400の一例を示す図である。 実施の形態1におけるクライアントサーバープログラム生成装置200のハードウェア構成の一例を示す図である。 実施の形態2におけるクライアントサーバープログラム生成装置200の機能構成図である。 実施の形態2におけるクライアントサーバープログラム生成方法のフローチャートである。 実施の形態2におけるクライアント通信インターフェースファイル500の一例を示す図である。 実施の形態2におけるクライアント通信インターフェースファイル500の一例を示す図である。 実施の形態3におけるクライアントサーバープログラム生成装置200の機能構成図である。 実施の形態3におけるクライアントサーバープログラム生成方法のフローチャートである。 実施の形態3におけるAPIリスト291の一例を示す図である。 実施の形態3における通信インターフェース編集処理(S360)のフローチャートである。 実施の形態5におけるクライアントサーバーシステム600の構成図である。 実施の形態6におけるアプリケーションプログラム100とサーバープログラム110とクライアントプログラム120との関係図である。 実施の形態6におけるメッセージのデータ変換の一例を示す図である。 実施の形態6におけるWEBブラウザ617の画面の一例を示す図である。 実施の形態7におけるコンピュータシステム620の一例を示す図である。 実施の形態8におけるクライアントサーバーシステム630の一例を示す図である。 実施の形態9におけるコンピュータシステム640の一例を示す図である。
 実施の形態1.
 スタンドアロン型のアプリケーションプログラムを用いてサーバープログラムを生成する形態について説明する。
 図1は、実施の形態1におけるアプリケーションプログラム100とサーバープログラム110とクライアントプログラム120との関係図である。
 実施の形態1におけるアプリケーションプログラム100とサーバープログラム110とクライアントプログラム120との関係について、図1に基づいて説明する。
 アプリケーションプログラム100は、一つの情報処理装置によって実行されることを前提にして生成されたスタンドアロン型のプログラムである。つまり、アプリケーションプログラム100は、他のコンピュータに依存せずに独立して動作するスタンドアロンの情報処理装置によって実行されるプログラムである。
 アプリケーションプログラム100は、ユーザーによって操作されるGUI(Graphical User Interface)を備える。以下、GUIを処理するプログラムをGUI101と記す。また、アプリケーションプログラム100に含まれるプログラムのうち、GUI101以外のプログラムをデータ処理プログラムと呼ぶ。
 サーバープログラム110はサーバー装置によって実行されるプログラムである。
 サーバープログラム110は、アプリケーションプログラム100とサーバー通信インターフェース111とを含んでいる。但し、アプリケーションプログラム100に含まれるGUI101が機能しないように、GUI101のライブラリは無効化される。
 サーバー通信インターフェース111(サーバー通信プログラムの一例)はネットワーク199を介してクライアント装置と通信するプログラムである。
 クライアントプログラム120はクライアント装置によって実行されるプログラムである。
 クライアントプログラム120は、GUI101(または同等のプログラム)とクライアント通信インターフェース121とを含んでいる。
 クライアント通信インターフェース121(クライアント通信プログラムの一例)はネットワーク199を介してサーバー装置と通信するプログラムである。クライアント通信インターフェース121は、RPC(Remote Procedure Call)でサーバープログラム110を呼び出す。
 クライアント装置のユーザーは、スタンドアロンの情報処理装置と同等な使い勝手で、GUI101を利用してクライアント装置を操作することができる。
 図2は、実施の形態1におけるクライアントサーバープログラム生成装置200の機能構成図である。
 実施の形態1におけるクライアントサーバープログラム生成装置200の機能構成について、図2に基づいて説明する。
 クライアントサーバープログラム生成装置200は、アプリケーションプログラム100のソースプログラムファイルを用いて、サーバープログラム110を生成するコンピュータである。
 クライアントサーバープログラム生成装置200は、アプリケーションプログラム解析部210と、サーバー通信インターフェース生成部220と、クライアントサーバープログラム生成部280と、装置記憶部290とを備える。
 装置記憶部290は、クライアントサーバープログラム生成装置200が使用、生成または入出力するデータを記憶する。
 例えば、装置記憶部290は、アプリケーションファイル300と、サーバー通信インターフェースファイル400と、サーバープログラム110とを記憶する。
 アプリケーションファイル300は、アプリケーションプログラム100に含まれる複数のプログラム(データ処理プログラムおよびGUI101を含む)のそれぞれのソースプログラムファイルである。
 サーバー通信インターフェースファイル400は、サーバー通信インターフェース111のソースプログラムファイルである。サーバー通信インターフェースファイル400は、クライアント通信インターフェース121との通信に必要なソースコードを含む。
 ソースプログラムファイルはプログラムのソースコード(ソースプログラム)を含むファイルである。
 アプリケーションプログラム解析部210は、アプリケーションプログラム100に含まれる複数のプログラムのそれぞれのアプリケーションファイル300を解析し、他のプログラム(例えば、GUI101)から呼び出される関数を特定する。なお、関数はオブジェクト指向型のプログラムにおけるメソッドに相当するものである。以下、他のプログラムから呼び出される関数(またはメソッド)を外部関数という。
 サーバー通信インターフェース生成部220(サーバー通信プログラム編集部の一例)は、外部関数の実行を要求する実行要求メッセージを受信したときにサーバープログラム110のアプリケーションプログラム100に含まれる外部関数を呼び出すソースコード(以下、呼び出しコードという)をサーバー通信インターフェースファイル400に追加する。
 クライアントサーバープログラム生成部280は、サーバー通信インターフェースファイル400と各アプリケーションファイル300とをコンパイルおよびリンクすることによって、サーバープログラム110を生成する。
 図3は、実施の形態1におけるサーバープログラム生成方法のフローチャートである。
 実施の形態1におけるサーバープログラム生成方法について、図3に基づいて説明する。
 S110において、アプリケーションプログラム解析部210は、未選択のアプリケーションファイル300を一つ選択する。
 S110の後、処理はS120に進む。
 S120において、アプリケーションプログラム解析部210は、S110で選択したアプリケーションファイル300(アプリケーションファイル300が使用するヘッダファイルを含む)を解析する。
 例えば、アプリケーションプログラム解析部210は、アプリケーションファイル300に対して字句解析および構文解析を行う。
 S120の後、処理はS130に進む。
 S130において、アプリケーションプログラム解析部210は、S120で得られた解析結果に基づいて、アプリケーションファイル300が外部関数を含んでいるか否かを判定する。例えば、extern宣言がなされている関数(またはメソッド)が外部関数である。
 アプリケーションファイル300が外部関数を含んでいる場合(YES)、処理はS140に進む。
 アプリケーションファイル300が外部関数を含んでいない場合(NO)、処理はS150に進む。
 図4は、実施の形態1におけるアプリケーションファイル300の一例を示す図である。
 図4に示すアプリケーションファイル300はextern宣言がなされているgetname()を含んでいる(図中の302参照)。このgetname()が外部関数である。
 図3に戻り、S140から説明を続ける。
 S140において、サーバー通信インターフェース生成部220は、アプリケーションファイル300に含まれる外部関数を呼び出す呼び出しコードを、サーバー通信インターフェースファイル400に追加する。
 S140の後、処理はS150に進む。
 図5、図6は、実施の形態1におけるサーバー通信インターフェースファイル400の一例を示す図である。
 実施の形態1におけるサーバー通信インターフェースファイル400の一例について、図5および図6に基づいて説明する。
 サーバー通信インターフェースファイル400は、クライアント通信インターフェース121と通信するサーバー通信インターフェース111のソースファイルである。
 サーバー通信インターフェース生成部220は、remote_getname()をサーバー通信インターフェースファイル400に追加する(図6の404参照)。このremote_getname()は、アプリケーションファイル300(図4参照)に含まれるgetname()を呼び出すためのラップ関数である。このラップ関数は、getname()の実行を要求する実行要求メッセージが受信されたときに実行される。ラップ関数の名称は、外部関数の名称に特定の文字列(remote_)を付加することによって生成することができる。
 サーバー通信インターフェースファイル400のうち、remote_getname()を除く部分(図5および図6の破線より上の部分)は、定型のソースコードである。定型のソースコードが記述されたサーバー通信インターフェースファイル400は予め用意しておく。
 サーバー通信インターフェースファイル400の定型の部分には、ポート番号「2002」のリスニングポートを定義するソースコードが含まれる(図5の401参照)。このリスニングポートはクライアント通信インターフェース121と通信を行うためのものである。
 また、サーバー通信インターフェースファイル400の定型の部分にはサーバープログラム110のメイン関数が含まれ(図5の402参照)、このメイン関数には呼び出しコードを含んだラップ関数を呼び出すためのソースコードが含まれる(図6の403参照)。
 図3に戻り、S150から説明を続ける。
 S150において、アプリケーションプログラム解析部210は、S110で選択していない未選択のアプリケーションファイル300が有るか否かを判定する。
 未選択のアプリケーションファイル300が有る場合(YES)、処理はS110に戻る。
 未選択のアプリケーションファイル300が無い場合(NO)、処理はS160に進む。
 S160において、クライアントサーバープログラム生成部280は、サーバー通信インターフェースファイル400と各アプリケーションファイル300とをコンパイルおよびリンクすることによって、サーバープログラム110を生成する。
 このとき、クライアントサーバープログラム生成部280は、アプリケーションファイル300に含まれるmain()(図4の301参照)を別の名称に置き換える。例えば、クライアントサーバープログラム生成部280はmain()をstub_main()に置き換える。サーバー通信インターフェースファイル400のメイン関数(図5の402参照)と名称が重複することを防ぐためである。つまり、アプリケーションファイル300およびアプリケーションプログラム100の内容は改変されない。
 S160の後、サーバープログラム生成方法の処理は終了する。
 図7は、実施の形態1におけるクライアントサーバープログラム生成装置200のハードウェア構成の一例を示す図である。
 実施の形態1におけるクライアントサーバープログラム生成装置200のハードウェア構成の一例について、図7に基づいて説明する。但し、クライアントサーバープログラム生成装置200のハードウェア構成は図7に示す構成と異なる構成であってもよい。
 クライアントサーバープログラム生成装置200は、演算装置901、補助記憶装置902、主記憶装置903、通信装置904および入出力装置905を備えるコンピュータである。
 演算装置901、補助記憶装置902、主記憶装置903、通信装置904および入出力装置905はバス909に接続している。
 演算装置901は、プログラムを実行するCPU(Central Processing Unit)である。
 補助記憶装置902は、例えば、ROM(Read Only Memory)、フラッシュメモリまたはハードディスク装置である。
 主記憶装置903は、例えば、RAM(Random Access Memory)である。
 通信装置904は、有線または無線でインターネット、LAN(ローカルエリアネットワーク)、電話回線網またはその他のネットワークを介して通信を行う。
 入出力装置905は、例えば、マウス、キーボード、ディスプレイ装置である。
 プログラムは、通常は補助記憶装置902に記憶されており、主記憶装置903にロードされ、演算装置901に読み込まれ、演算装置901によって実行される。
 例えば、オペレーティングシステム(OS)が補助記憶装置902に記憶される。また、「~部」として説明している機能を実現するプログラムが補助記憶装置902に記憶される。そして、OSおよび「~部」として説明している機能を実現するプログラムは主記憶装置903にロードされ、演算装置901によって実行される。「~部」は「~処理」「~工程」と読み替えることができる。
 「~の判断」、「~の判定」、「~の抽出」、「~の検知」、「~の設定」、「~の登録」、「~の選択」、「~の生成」、「~の入力」、「~の出力」等の処理の結果を示す情報、データ、ファイル、信号値または変数値が主記憶装置903または補助記憶装置902に記憶される。また、クライアントサーバープログラム生成装置200が使用するその他のデータが主記憶装置903または補助記憶装置902に記憶される。
 実施の形態1により、スタンドアロン型のアプリケーションプログラム100を用いてサーバープログラム110を生成することができる。
 例えば、100万行を超えるような大規模なスタンドアロン型のGUIアプリケーションを、そのソースプログラムには改変を行わずに、クライアントサーバー型のアプリケーションプログラムとして使用することができる。これにより、クラウドコンピューティングサービスに適応することが困難である大規模なアプリケーションプログラムをクラウドコンピューティングサービスに適応することができる。
 実施の形態2.
 サーバープログラム110に加えてクライアントプログラム120を生成する形態について説明する。
 以下、実施の形態1と異なる事項について主に説明する。説明を省略する事項については実施の形態1と同様である。
 図8は、実施の形態2におけるクライアントサーバープログラム生成装置200の機能構成図である。
 実施の形態2におけるクライアントサーバープログラム生成装置200の機能構成について、図8に基づいて説明する。
 クライアントサーバープログラム生成装置200は、実施の形態1(図2参照)で説明した構成の他に、クライアント通信インターフェース生成部230(クライアント通信プログラム編集部の一例)を備える。
 また、装置記憶部290は、クライアント通信インターフェースファイル500を記憶する。
 クライアント通信インターフェースファイル500は、クライアント通信インターフェース121のソースプログラムファイルである。クライアント通信インターフェースファイル500は、サーバー通信インターフェース111との通信に必要なソースコードを含む。
 クライアント通信インターフェース生成部230は、GUI101から外部関数の実行が要求されたときに実行要求メッセージを送信するソースコード(以下、実行要求コードという)をクライアント通信インターフェースファイル500に追加する。
 クライアントサーバープログラム生成部280は、クライアント通信インターフェースファイル500とGUI101のアプリケーションファイル300とをコンパイルおよびリンクすることによって、クライアントプログラム120を生成する。
 図9は、実施の形態2におけるクライアントサーバープログラム生成方法のフローチャートである。
 実施の形態2におけるクライアントサーバープログラム生成方法について、図9に基づいて説明する。
 S210において、アプリケーションプログラム解析部210は、未選択のアプリケーションファイル300を選択する。S210は実施の形態1のS110と同様である(図3参照)。
 S210の後、処理はS220に進む。
 S220において、アプリケーションプログラム解析部210は、S210で選択されたアプリケーションファイル300を解析する。S220は実施の形態1のS120と同様である(図3参照)。
 S220の後、処理はS230に進む。
 S230において、アプリケーションプログラム解析部210は、アプリケーションファイル300が外部関数を含んでいるか否かを判定する。S230は実施の形態1のS130と同様である(図3参照)。
 アプリケーションファイル300が外部関数を含んでいる場合(YES)、処理はS240に進む。
 アプリケーションファイル300が外部関数を含んでいない場合(NO)、処理はS260に進む。
 S240において、サーバー通信インターフェース生成部220は、サーバー通信インターフェースファイル400に外部関数の呼び出しコードを追加する。S240は実施の形態1のS140と同様である(図3参照)。
 S240の後、処理はS250に進む。
 S250において、クライアント通信インターフェース生成部230は、GUI101から外部関数の実行が要求されたときに実行要求メッセージを送信する実行要求コードを、クライアント通信インターフェースファイル500に追加する。
 S250の後、処理はS260に進む。
 図10、図11は、実施の形態2におけるクライアント通信インターフェースファイル500の一例を示す図である。
 実施の形態2におけるクライアント通信インターフェースファイル500の一例について、図10および図11に基づいて説明する。
 クライアント通信インターフェースファイル500は、サーバー通信インターフェース111と通信するクライアント通信インターフェース121のソースファイルである。
 クライアント通信インターフェース生成部230は、getname()をクライアント通信インターフェースファイル500に追加する(図11の503参照)。このgetname()は、実行要求メッセージを送信する実行要求コード(write)と、実行結果を示す実行応答メッセージを受信するソースコード(read)とを含んだ関数である。
 クライアント通信インターフェースファイル500のうち、getname()を除く部分(図10および図11の破線より上の部分)は、定型のソースコードである。定型のソースコードが記述されたクライアント通信インターフェースファイル500は予め用意しておく。
 クライアント通信インターフェースファイル500の定型の部分には、createSession()およびcloseSession()が含まれる(図10の501、502参照)。createSession()はサーバー通信インターフェース111とセッションを確立する関数であり、closeSession()は確立したセッションを解放する関数である。
 図9に戻り、S260から説明を続ける。
 S260において、アプリケーションプログラム解析部210は、S210で選択していない未選択のアプリケーションファイル300が有るか否かを判定する。
 未選択のアプリケーションファイル300が有る場合(YES)、処理はS210に戻る。
 未選択のアプリケーションファイル300が無い場合(NO)、処理はS270に進む。
 S270において、クライアントサーバープログラム生成部280は、実施の形態1のS160(図3参照)と同様に、サーバープログラム110を生成する。
 さらに、クライアントサーバープログラム生成部280は、クライアント通信インターフェースファイル500とGUI101のアプリケーションファイル300とをコンパイルおよびリンクすることによって、クライアントプログラム120を生成する。
 S270の後、クライアントサーバープログラム生成方法の処理は終了する。
 実施の形態2により、スタンドアロン型のアプリケーションプログラム100を用いてサーバープログラム110およびクライアントプログラム120を生成することができる。
 実施の形態3.
 外部関数にGUI処理とデータ処理とが含まれる場合にデータ処理だけをサーバー装置に実行させるクライアントサーバープログラムを生成する形態について説明する。
 以下、実施の形態1、2と異なる事項について主に説明する。説明を省略する事項については実施の形態1、2と同様である。
 まず、実施の形態3に関する背景技術について説明する。
 アプリケーションプログラム100は、GUI101を持つプログラムである。さらに言えば、アプリケーションプログラム100は、シミュレーションプログラム等とは異なり、ユーザーがGUIオブジェクトを操作したときに始めて動作するプログラムである。
 GUIを操作するためにユーザーが用いる主な入力手段はキーボードおよびマウスである。
 例えば、ユーザーは、キーボードを用いてGUIオブジェクトにデータを入力する。また例えば、ユーザーは、マウスを操作することによって、所望のGUIオブジェクトを選択したり、プルダウンメニューを選択したりする。
 近年の高級プログラミング言語はGUIライブラリを提供している。プログラミング言語がオブジェクト指向型である場合、基底オブジェクト(基底クラスのオブジェクト)によってGUIのイベントハンドラが実装される。そして、GUIライブラリは、システムコールを発行してマウスまたはキーボードの操作によって発生する割り込みと付随するデータとを得るように実装される代わりに、基底オブジェクトに定義されたGUIのイベントハンドラを呼び出す。つまり、GUIライブラリは、システムコールを発行してマウスまたはキーボードの操作によって発生する割り込みと付随するデータとを得る機構をプログラマから隠蔽している。
 オブジェクト指向型の高級プログラミング言語が用いられる場合、GUIライブラリから提供される上位のGUIクラスを継承した下位のGUIクラスによってGUI画面が構成される。GUIコンポーネントに対するイベントが発生した場合、継承しているGUIクラスのイベントハンドラの処理が定義される(この再定義はオーバーライドと呼ばれる)。
 例えば、マウスを用いてメニューオブジェクトに対する左クリックが行われると、OnLeftClick()というイベントハンドラ内で実装されているメニューが表示される。また、マウスのボタンが離されてOnRelease()というイベントが発生したときに選択状態にあったメニューから入力データを得られる。
 GUIを持つアプリケーションプログラムはユーザーから入力されたデータを元に演算を行う。このため、GUIライブラリのイベントハンドラの中身は、クライアントプログラムに実行させるGUI処理と、サーバープログラムに実行させるデータ処理とに切り分けることができる。
 図12は、実施の形態3におけるクライアントサーバープログラム生成装置200の機能構成図である。
 実施の形態3におけるクライアントサーバープログラム生成装置200の機能構成について、図12に基づいて説明する。
 クライアントサーバープログラム生成装置200は、実施の形態2(図8参照)で説明した構成に加えて、API解析部211(外部関数解析部の一例)を備える。
 API解析部211は、API(Application Program Interface)を処理するAPI関数のソースコードを解析し、API関数にGUI101を使用するユーザーインターフェース処理とGUI101を使用しないデータ処理とが含まれるか否かを判定する。API関数は外部関数の一例である。
 図13は、実施の形態3におけるクライアントサーバープログラム生成方法のフローチャートである。
 実施の形態3におけるクライアントサーバープログラム生成方法について、図13に基づいて説明する。
 S310において、アプリケーションプログラム解析部210は、未選択のアプリケーションファイル300を選択する。S310は実施の形態1のS110と同様である(図3参照)。
 S310の後、処理はS320に進む。
 S320において、アプリケーションプログラム解析部210は、S310で選択されたアプリケーションファイル300を解析する。S320は実施の形態1のS120と同様である(図3参照)。
 S320の後、処理はS330に進む。
 S330において、アプリケーションプログラム解析部210は、S320の解析結果に基づいて、アプリケーションファイル300がAPI関数を呼び出す呼び出しコードを含んでいるか否かを判定する。
 例えば、アプリケーションプログラム解析部210は、API関数の関数名を示すAPIリスト291(図14参照)を用いて、アプリケーションファイル300がAPI関数を含んでいるか否かを判定する。
 図14は、実施の形態3におけるAPIリスト291の一例を示す図である。
 図14のAPIリスト291は、GUIライブラリクラスのAPI関数の関数名を示している。APIリスト291は、ハッシュ値を利用してAPI関数の関数名を配列したハッシュリストであってもよい。APIリスト291がハッシュリストである場合、API関数の関数名を高速に検索することができる。
 アプリケーションファイル300がAPI関数の呼び出しコードを含んでいる場合(YES)、処理はS340に進む。
 アプリケーションファイル300がAPI関数の呼び出しコードを含んでいない場合(NO)、処理はS370に進む。
 S340において、サーバー通信インターフェース生成部220は、外部関数の呼び出しコード(実施の形態1参照)の代わりにAPI関数のソースコード(実行コードの一例)を、サーバー通信インターフェースファイル400に追加する。
 なお、API関数のソースコードは装置記憶部290に予め記憶しておく。
 S340の後、処理はS350に進む。
 S350において、クライアント通信インターフェース生成部230は、外部関数の代わりにAPI関数の実行を要求する実行要求コードを、クライアント通信インターフェースファイル500に追加する。
 S350の後、処理はS360に進む。
 S360において、サーバー通信インターフェース生成部220はサーバー通信インターフェースファイル400を編集し、クライアント通信インターフェース生成部230はクライアント通信インターフェースファイル500を編集する。
 通信インターフェース編集処理(S360)の詳細については後述する。
 S360の後、処理はS370に進む。
 S370において、アプリケーションプログラム解析部210は、S310で選択していない未選択のアプリケーションファイル300が有るか否かを判定する。
 未選択のアプリケーションファイル300が有る場合(YES)、処理はS310に戻る。
 未選択のアプリケーションファイル300が無い場合(NO)、処理はS380に進む。
 S380において、クライアントサーバープログラム生成部280は、実施の形態2のS270(図9参照)と同様に、サーバープログラム110とクライアントプログラム120とを生成する。
 S380の後、クライアントサーバープログラム生成方法の処理は終了する。
 図15は、実施の形態3における通信インターフェース編集処理(S360)のフローチャートである。
 実施の形態3における通信インターフェース編集処理(S360)について、図15に基づいて説明する。
 S361において、API解析部211は、S330(図13参照)で特定されたAPI関数のソースコードを解析する。例えば、API解析部211は、API関数のソースコードに対して字句解析および構文解析を行う。
 以下、S330で特定されたAPI関数を特定APIという。
 S361の後、処理はS362に進む。
 S362において、API解析部211は、S361の解析結果に基づいて、特定APIがAPI関数の呼び出しコードを含んでいるか否かを判定する。判定方法はS330(図13参照)と同様である。
 特定APIがAPI関数の呼び出しコードを含んでいる場合(YES)、処理はS363に進む。
 特定APIがAPI関数の呼び出しコードを含んでいない場合(NO)、通信インターフェース編集処理(S360)は終了する。
 S363において、API解析部211は、S361の解析結果に基づいて、特定APIに含まれる呼び出しコードによって呼び出されるAPI関数がGUIのイベントハンドラ(ユーザーインターフェース処理の一例)であるか否かを判定する。例えば、API解析部211は、GUIイベントハンドラの名称を示すGUIイベントハンドラリストを用いて、API関数がGUIのイベントハンドラであるか否かを判定する。この場合、GUIイベントハンドラリストは装置記憶部290に予め記憶しておく。
 API関数がGUIのイベントハンドラである場合、処理はS364に進む。
 API関数がGUIのイベントハンドラでない場合、通信インターフェース編集処理(S360)は終了する。
 S364において、サーバー通信インターフェース生成部220は、S340(図13参照)でサーバー通信インターフェースファイル400に追加した特定APIのソースコードに、コールバック関数を追加する。
 コールバック関数(ユーザーインターフェース要求コードの一例)は、クライアント装置にGUIのイベントハンドラの実行を要求する実行要求メッセージ(ユーザーインターフェース要求メッセージの一例)を送信する関数である。
 例えば、サーバー通信インターフェース生成部220は、GUIのイベントハンドラを呼び出す呼び出しコードの前または後にコールバック関数を追加する。
 また、サーバー通信インターフェース生成部220は、サーバープログラム110が使用する複数のライブラリ(バイナリコード)のうち、GUIのイベントハンドラとして機能するライブラリを編集することにより、GUIのイベントハンドラの機能を無効にする。
 S364の後、処理はS365に進む。
 S365において、クライアント通信インターフェース生成部230は、クライアント通信インターフェースファイル500にGUI101のイベントハンドラを呼び出す呼び出しコードを追加する。これにより、クライアントプログラム120は、サーバープログラム110のコールバック関数からの要求に応じて、GUI101のイベントハンドラを実行することができる。
 また、クライアント通信インターフェース生成部230は、GUI101のイベントハンドラの実行結果を応答する実行応答コードをクライアント通信インターフェースファイル500に追加する。
 S365の後、通信インターフェース編集処理(S360)は終了する。
 実施の形態4.
 高速化ロジックを含んだクライアントプログラム120を生成する形態について説明する。
 以下、実施の形態1から3と異なる事項について主に説明する。説明を省略する事項については実施の形態1から3の少なくともいずれかと同様である。
 クライアントサーバープログラム生成装置200の構成は、実施の形態2(図8参照)または実施の形態3(図12参照)と同様である。
 但し、クライアント通信インターフェース生成部230は、実施の形態2で説明した処理(図9のS250)または実施の形態3で説明した処理(図13のS350、図15のS365)に加えて、以下の処理を実行する。
 クライアント通信インターフェース生成部230は、回数計測コードと、回数算出コードと、条件分岐コードと、データ同期コードとをクライアント通信インターフェースファイル500に追加する。
 また、クライアント通信インターフェース生成部230は、外部関数をクライアント通信インターフェースファイル500に追加する。
 回数計測コードは、実行要求コードが実行された実行要求回数を計測するソースコードである。
 回数算出コードは、回数計測コードによって計測された回数算出コードに基づいて、実行要求コードが実行された単位時間当たりの回数を算出するソースコードである。
 条件分岐コードは、回数算出コードによって算出された単位時間当たりの回数と実行要求回数閾値とを比較する。実行要求回数閾値は予め決められた値である。
 単位時間当たりの回数が実行要求回数閾値より多い場合、条件分岐コードは、外部関数が使用するデータを要求するデータ要求メッセージをサーバー通信インターフェース111に送信し、外部関数が使用するデータをサーバー通信インターフェース111から受信し、受信したデータをクライアント装置のメモリに記憶し、メモリに記憶したデータを用いて外部関数を実行する。
 単位時間当たりの回数が実行要求回数より少ない場合、条件分岐コードは実行要求コードを実行する。
 単位時間当たりの回数が実行要求回数閾値と同じである場合、条件分岐コードは上記のいずれかの場合と同じ処理を実行する。つまり、条件分岐コードは外部関数と実行要求コードとのいずれかを実行する。
 データ同期コードは、クライアント装置に記憶されているデータとサーバー装置に記憶されているデータとを同期させるために、クライアント装置のメモリに記憶されているデータを特定のタイミングでサーバー装置に送信するソースコードである。例えば、特定のタイミングは、クライアント装置のGUI101が終了になるとき、または、外部関数が所定の同期タイミング回数だけ実行されたときである。
 実施の形態4により、クライアント装置は、サーバー装置に記憶されているデータをキャッシュし、キャッシュしたデータを用いて外部関数を実行し、サーバー装置に外部関数の実行を要求するRPCを減らすことができる。
 実施の形態5.
 各実施の形態において、サーバー通信インターフェース111およびクライアント通信インターフェース121は、HTTP(HyperText Transfer Protocol)を用いて通信を行うプログラムであってもよい。
 図16は、実施の形態5におけるクライアントサーバーシステム600の一例を示す図である。
 図16に示すクライアントサーバーシステム600は、クライアント装置601と、クライアント装置601側のファイアウォール602と、サーバー装置604と、サーバー装置604側のファイアウォール603とを備える。
 クライアントサーバーシステム600におけるRPC機構は、その通信手段として、HTTPまたはHTTPの派生手順(Websocket等)を排除しない。したがって、多重のファイアウォール(602、603)が介在しても、RPC機構に影響を与えない。
 実施の形態6.
 WEBブラウザをクライアントプログラムとして使用する形態について説明する。
 以下、実施の形態1と異なる事項について主に説明する。説明を省略する事項については実施の形態1と同様である。
 図17は、実施の形態6におけるアプリケーションプログラム100とサーバープログラム110とクライアントプログラム120との関係図である。
 実施の形態6におけるアプリケーションプログラム100とサーバープログラム110とクライアントプログラム120との関係について、図17に基づいて説明する。
 クライアントプログラム120は、実施の形態1と異なり、WEBブラウザによって構成される。つまり、WEBブラウザがクライアントプログラム120として機能する。
 サーバープログラム110のサーバー通信インターフェース111は、データ変換関数112(データ形式変換コードの一例)を備える。
 データ変換関数112は、クライアントプログラム120から受信したメッセージのデータ形式をクライアントデータ形式からサーバーデータ形式に変換し、クライアントプログラム120に送信するメッセージのデータ形式をサーバーデータ形式からクライアントデータ形式に変換する。ここで、クライアントデータ形式はクライアントプログラム120が使用するデータ形式であり、サーバーデータ形式はサーバープログラム110が使用するデータ形式である。
 例えば、データ変換関数112は、外部関数の実行を要求する実行要求メッセージのデータ形式をクライアントデータ形式からサーバーデータ形式に変換する。また、データ変換関数112は、外部関数の実行結果を応答する実行応答メッセージのデータ形式をサーバーデータ形式からクライアントデータ形式に変換する。
 図18は、実施の形態6におけるメッセージのデータ変換の一例を示す図である。
 図18に示すメッセージ611はクライアントプログラム120とサーバープログラム110との間で通信するメッセージの一例であり、メッセージ616はメッセージ611をJSON(JavaScript Object Notation)形式に変換したものである。「JavaScript」は登録商標である。
 メッセージヘッダ612はメッセージ611が分割されたものか否かの情報とメッセージ611のデータサイズとを示し、整数613はint形式の「4」を示し、バイナリデータサイズ614はバイナリデータ615のデータサイズを示す。
 メッセージ611とメッセージ616との相互のデータ変換は、サーバー通信インターフェース111がメッセージ611を受信した直後と、サーバー通信インターフェース111がメッセージ611を送信する直前に実行される。
 クライアントサーバープログラム生成装置200の構成は実施の形態1と同様である(図2参照)。
 但し、サーバー通信インターフェースファイル400は、定型のソースコードの一部として、データ変換関数112と受信メッセージ変換コードと送信メッセージ変換コードとを含んでいる。
 受信メッセージ変換コードは、クライアントプログラム120からメッセージを受信した後、外部関数の呼び出しコードを実行する前に、データ変換関数112を呼び出すソースコードである。
 送信メッセージ変換コードは、外部関数の呼び出しコードを実行した後、クライアントプログラム120にメッセージを送信する前にデータ変換関数112を呼び出すソースコードである。
 サーバープログラム生成方法は実施の形態1と同様である(図3参照)。
 サーバー通信インターフェース111は、定型のソースコードの一部として、オブジェクト生成関数(オブジェクト生成コードの一例)とオブジェクト選択コードとを含んでもよい。
 オブジェクト選択コードは、クライアント装置のWEBブラウザから送信されたメッセージの内容に基づいてWEBブラウザの画面に表示するGUIオブジェクトを選択し、選択したGUIオブジェクトを指定してオブジェクト生成関数を呼び出すソースコードである。
 オブジェクト生成関数は、指定されたGUIオブジェクトのデータを生成する。プルダウンメニュー、ボタン、ダイアログ、カンバス、ツリーはGUIオブジェクトの一例である。GUIオブジェクトはGUIコンポーネントともいう。
 GUIオブジェクトのデータはメッセージの一部としてクライアント装置に送信され、GUIオブジェクトはWEBブラウザによって表示される。
 図19は、実施の形態6におけるWEBブラウザ617の画面の一例を示す図である。
 図19に示すWEBブラウザ617は、部品一覧618と画面設計部619とを備えている。また、画面設計部619は、ボタン619Aとツリー619Bとカンバス619Cとを含んだ設計画面を表示している。
 例えば、画面設計者は部品一覧618から部品(GUIオブジェクト)を選択し、選択した部品を画面設計部619にドラッグアンドドロップすることによって画面を設計する。また、画面設計者は画面の遷移を設計する。
 実施の形態6により、WEBブラウザ(WEBブラウザ上で動作するスクリプトを含む)をクライアントプログラム120として利用することができる。つまり、ユーザーは、一般に流通しているWEBブラウザからサーバープログラム110にアクセスすることができる。例えば、ユーザーは、WEBブラウザからサーバープログラム110にアクセスすることによって、画面を設計することができる。
 実施の形態7.
 実施の形態6を適応したコンピュータシステムの形態について説明する。
 図20は、実施の形態7におけるコンピュータシステム620の一例を示す図である。
 実施の形態7におけるコンピュータシステム620の一例について、図20に基づいて説明する。
 ユーザーは、クラウドコンピューティングサービスに適応したサーバープログラム110にクライアントプログラム120を接続し、サーバープログラム110にアクセスしてクラウド上にデータを作成する。
 クライアントプログラム120は、認証手段があることを前提にして制約が解除されたWEBブラウザを利用し、データ制御装置621へのデータの書き込み、及び、データ制御装置621からのデータの読み出しを行う。
 実施の形態8.
 サーバープログラムが複数のクライアントプログラムとマルチキャスト通信を行う形態について説明する。
 以下、実施の形態1から3と異なる事項について主に説明する。説明を省略する事項については実施の形態1から3の少なくともいずれかと同様である。
 クライアントサーバープログラム生成装置200の構成は、実施の形態1から3のいずれかと同様である(図2、図8、図12参照)。
 クライアントサーバープログラム生成方法は、実施の形態1から3のいずれかと同様である(図3、図9、図13参照)。
 但し、サーバー通信インターフェース生成部220は、マルチキャスト送信コードをクライアント通信インターフェースファイル500に追加する。
 マルチキャスト送信コードは、実行要求メッセージを送信したクライアント装置を含む複数のクライアント装置に実行応答メッセージをマルチキャストで送信するソースコードである。実行応答メッセージは実行要求メッセージによって要求された外部関数の実行結果を示すメッセージである。
 なお、マルチキャストはブロードキャストと読み替えてもよい。
 図21は、実施の形態8におけるクライアントサーバーシステム630の一例を示す図である。
 実施の形態8におけるクライアントサーバーシステム630の一例について、図21に基づいて説明する。
 ここで、クライアント装置635がデータ変更のRPCを発行したものとする。
 サーバー装置631は、クライアント装置635には同期的RPCとしてメッセージを戻すが、クライアント装置632~634、クライアント装置636およびクライアント装置637には自ら管理するセッション情報を用いてデータ変更の内容をマルチキャストする。
 クライアントプログラム120のリスニングスレッドは非同期にメッセージを受け取り、データ変更を表示に反映させる。
 実施の形態9.
 実施の形態1から8のいずれかを適応したコンピュータシステムの形態について説明する。
 図22は、実施の形態9におけるコンピュータシステム640の一例を示す図である。
 実施の形態9におけるコンピュータシステム640の一例について、図22に基づいて説明する。
 クライアント装置647は、ファイアウォール646を挟んで認証サーバー641から認証されると、認証チケットが与えられる。
 クライアント装置647は、サーバー装置(641~645)が提供するサービスのうち所望のサービスをURLに指定し、認証チケットを用いてサービス起動サーバー648にアクセスする。これにより、所望のサービスを提供するサーバー装置のサーバープログラムが実行される。
 ここで、クライアント装置647はエンジニアリングサーバー643のURLを指定し、サービス起動サーバー648に認証チケットを渡したものとする。
 サービス起動サーバー648は、認証サーバー641にチケット情報を問い合わせてクライアント装置647のアクセスを認証する。
 クライアント装置647の認証チケットが認証サーバー851から与えられた認証チケットに合致すれば、サービス起動サーバー648はエンジニアリングサーバー643のサーバープログラムを起動する。
 資産サーバー642、エンジニアリングサーバー643、機器管理サーバー644および生産管理サーバー645のそれぞれのサーバープログラムは、本来ならばシステムの利用シーンに応じて連携して動作することが望ましいにも関わらず、1つのコンピュータに閉じて利用されてきたプログラムである。
 これらのサーバープログラムを各実施の形態で説明したようにクライアントサーバー化することによって、システムのユーザーに極めて高い利便性を与えることができる。
 各実施の形態は、クライアントサーバープログラム生成装置200の形態の一例である。
 つまり、クライアントサーバープログラム生成装置200は、各実施の形態で説明した機能または構成の一部を備えなくても構わない。また、クライアントサーバープログラム生成装置200は、各実施の形態で説明していない機能または構成を備えても構わない。さらに、各実施の形態は、矛盾が生じない範囲で一部または全てを組み合わせても構わない。
 各実施の形態においてフローチャート等を用いて説明した処理手順は、各実施の形態に係る方法の処理手順の一例および各実施の形態に係るプログラム(例えば、クライアントサーバープログラム生成プログラム)の処理手順の一例である。
 つまり、各実施の形態に係る方法の処理手順および各実施の形態に係るプログラムの処理手順は、各実施の形態で説明した処理手順と一部異なる処理手順で実現されても構わない。
 100 アプリケーションプログラム、101 GUI、110 サーバープログラム、111 サーバー通信インターフェース、112 データ変換関数、120 クライアントプログラム、121 クライアント通信インターフェース、199 ネットワーク、200 クライアントサーバープログラム生成装置、210 アプリケーションプログラム解析部、211 API解析部、220 サーバー通信インターフェース生成部、230 クライアント通信インターフェース生成部、280 クライアントサーバープログラム生成部、290 装置記憶部、291 APIリスト、300 アプリケーションファイル、400 サーバー通信インターフェースファイル、500 クライアント通信インターフェースファイル、600 クライアントサーバーシステム、601 クライアント装置、602 ファイアウォール、603 ファイアウォール、604 サーバー装置、611 メッセージ、612 メッセージヘッダ、613 整数、614 バイナリデータサイズ、615 バイナリデータ、616 メッセージ、617 WEBブラウザ、618 部品一覧、619 画面設計部、619A ボタン、619B ツリー、619C カンバス、620 コンピュータシステム、621 データ制御装置、630 クライアントサーバーシステム、631 サーバー装置、632,633,634,635,636,637 クライアント装置、640 コンピュータシステム、641 認証サーバー、642 資産サーバー、643 エンジニアリングサーバー、644 機器管理サーバー、645 生産管理サーバー、646 ファイアウォール、647 クライアント装置、648 サービス起動サーバー、901 演算装置、902 補助記憶装置、903 主記憶装置、904 通信装置、905 入出力装置、909 バス。

Claims (12)

  1.  ユーザーインターフェースプログラムとデータ処理プログラムとを備えるアプリケーションプログラムの前記データ処理プログラムのソースプログラムファイルを解析し、前記データ処理プログラムに含まれる複数の関数のうち前記ユーザーインターフェースプログラムから呼び出される外部関数を特定するアプリケーションプログラム解析部と、
     サーバー通信プログラムと前記アプリケーションプログラムとを備えるサーバープログラムの前記サーバー通信プログラムのソースプログラムファイルに、前記外部関数の実行を要求する実行要求メッセージを受信したときに前記サーバープログラムの前記アプリケーションプログラムに含まれる前記外部関数を呼び出す呼び出しコードを追加するサーバー通信プログラム編集部と
    を備えることを特徴とするクライアントサーバープログラム生成装置。
  2.  クライアント通信プログラムと前記ユーザーインターフェースプログラムとを備えるクライアントプログラムの前記クライアント通信プログラムのソースプログラムファイルに、前記ユーザーインターフェースプログラムから前記外部関数の実行が要求されたときに前記実行要求メッセージを送信する実行要求コードを追加するクライアント通信プログラム編集部を備える
    ことを特徴とする請求項1記載のクライアントサーバープログラム生成装置。
  3.  前記クライアント通信プログラム編集部は、前記実行要求コードが実行された実行要求回数を計測する回数計測コードと、前記回数計測コードによって計測された前記実行要求回数に基づいて前記実行要求コードが実行された単位時間当たりの回数を算出する回数算出コードと、前記回数算出コードによって算出された前記単位時間当たりの回数が実行要求回数閾値より多い場合に前記実行要求コードと前記外部関数とのうち前記外部関数を実行する条件分岐コードと、を前記クライアント通信プログラムのソースプログラムファイルに追加する
    ことを特徴とする請求項2記載のクライアントサーバープログラム生成装置。
  4.  前記サーバー通信プログラムはHTTP(HyperText Transfer Protocol)を用いて通信を行うプログラムであることを特徴とする請求項1記載のクライアントサーバープログラム生成装置。
  5.  前記サーバー通信プログラムのソースプログラムは、前記実行要求メッセージのデータ形式をクライアントプログラムが使用するクライアントデータ形式から前記サーバープログラムが使用するサーバーデータ形式に変換するデータ形式変換コードを含む
    ことを特徴とする請求項1記載のクライアントサーバープログラム生成装置。
  6.  前記クライアントプログラムはWEBブラウザであり、
     前記サーバー通信プログラムのソースプログラムは、前記WEBブラウザの画面に表示するGUI(Graphical User Interface)オブジェクトを生成するオブジェクト生成コードを含む
    ことを特徴とする請求項5記載のクライアントサーバープログラム生成装置。
  7.  前記サーバー通信プログラム編集部は、前記外部関数の実行結果を前記外部関数の実行を要求したクライアント装置を含む複数のクライアント装置に送信するマルチキャストコードを前記サーバー通信プログラムのソースプログラムファイルに追加する
    ことを特徴とする請求項1記載のクライアントサーバープログラム生成装置。
  8.  ユーザーインターフェースプログラムとデータ処理プログラムとを備えるアプリケーションプログラムの前記データ処理プログラムのソースプログラムファイルを解析し、前記データ処理プログラムに含まれる複数の関数のうち前記ユーザーインターフェースプログラムから呼び出される外部関数を特定するアプリケーションプログラム解析部と、
     前記アプリケーションプログラム解析部によって特定された前記外部関数に、ユーザーインターフェースを使用するユーザーインターフェース処理と前記ユーザーインターフェースを使用しないデータ処理とが含まれるか否か、を判定する外部関数解析部と、
     前記外部関数解析部によって前記外部関数に前記ユーザーインターフェース処理と前記データ処理とが含まれると判定された場合、サーバー通信プログラムと前記アプリケーションプログラムとを備えるサーバープログラムの前記サーバー通信プログラムのソースプログラムファイルに、前記外部関数の実行を要求する実行要求メッセージを受信したときに前記データ処理を実行する実行コードを追加するサーバー通信プログラム編集部と
    を備えることを特徴とするクライアントサーバープログラム生成装置。
  9.  前記サーバー通信プログラム編集部は、前記外部関数解析部によって前記外部関数に前記ユーザーインターフェース処理と前記データ処理とが含まれると判定された場合、前記ユーザーインターフェース処理の実行を要求するユーザーインターフェース要求メッセージを送信するユーザーインターフェース要求コードを前記サーバー通信プログラムのソースプログラムファイルに追加する
    ことを特徴とする請求項8記載のクライアントサーバープログラム生成装置。
  10.  クライアント通信プログラムと前記ユーザーインターフェースプログラムとを備えるクライアントプログラムの前記クライアント通信プログラムのソースプログラムファイルに、前記ユーザーインターフェース要求メッセージを受信したときに前記ユーザーインターフェースプログラムを呼び出す呼び出しコードを追加するクライアント通信プログラム編集部を備える
    ことを特徴とする請求項9記載のクライアントサーバープログラム生成装置。
  11.  ユーザーインターフェースプログラムとデータ処理プログラムとを備えるアプリケーションプログラムの前記データ処理プログラムのソースプログラムファイルを解析し、前記データ処理プログラムに含まれる複数の関数のうち前記ユーザーインターフェースプログラムから呼び出される外部関数を特定するアプリケーションプログラム解析処理と、
     サーバー通信プログラムと前記アプリケーションプログラムとを備えるサーバープログラムの前記サーバー通信プログラムのソースプログラムファイルに、前記外部関数の実行を要求する実行要求メッセージを受信したときに前記サーバープログラムの前記アプリケーションプログラムに含まれる前記外部関数を呼び出す呼び出しコードを追加するサーバー通信プログラム生成処理と
    をコンピュータに実行させるためのクライアントサーバープログラム生成プログラム。
  12.  ユーザーインターフェースプログラムとデータ処理プログラムとを備えるアプリケーションプログラムの前記データ処理プログラムのソースプログラムファイルを解析し、前記データ処理プログラムに含まれる複数の関数のうち前記ユーザーインターフェースプログラムから呼び出される外部関数を特定するアプリケーションプログラム解析処理と、
     前記アプリケーションプログラム解析処理によって特定された前記外部関数に、ユーザーインターフェースを使用するユーザーインターフェース処理と前記ユーザーインターフェースを使用しないデータ処理とが含まれるか否か、を判定する外部関数解析処理と、
     前記外部関数解析処理によって前記外部関数に前記ユーザーインターフェース処理と前記データ処理とが含まれると判定された場合、サーバー通信プログラムと前記アプリケーションプログラムとを備えるサーバープログラムの前記サーバー通信プログラムのソースプログラムファイルに、前記外部関数の実行を要求する実行要求メッセージを受信したときに前記データ処理を実行する実行コードを追加するサーバー通信プログラム編集処理とをコンピュータに実行させるためのクライアントサーバープログラム生成プログラム。
PCT/JP2013/076308 2013-09-27 2013-09-27 クライアントサーバープログラム生成装置およびクライアントサーバープログラム生成プログラム WO2015045108A1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
PCT/JP2013/076308 WO2015045108A1 (ja) 2013-09-27 2013-09-27 クライアントサーバープログラム生成装置およびクライアントサーバープログラム生成プログラム
TW102139486A TW201512984A (zh) 2013-09-27 2013-10-31 客戶端伺服器之程式產生裝置以及客戶端伺服器之程式產生的程式產品

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2013/076308 WO2015045108A1 (ja) 2013-09-27 2013-09-27 クライアントサーバープログラム生成装置およびクライアントサーバープログラム生成プログラム

Publications (1)

Publication Number Publication Date
WO2015045108A1 true WO2015045108A1 (ja) 2015-04-02

Family

ID=52742311

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2013/076308 WO2015045108A1 (ja) 2013-09-27 2013-09-27 クライアントサーバープログラム生成装置およびクライアントサーバープログラム生成プログラム

Country Status (2)

Country Link
TW (1) TW201512984A (ja)
WO (1) WO2015045108A1 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113785268A (zh) * 2019-05-22 2021-12-10 欧姆龙株式会社 信息提供***、服务器以及信息提供方法

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107291524B (zh) * 2016-03-31 2020-04-07 阿里巴巴集团控股有限公司 一种远程命令的处理方法和装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1173306A (ja) * 1997-08-28 1999-03-16 Mitsubishi Electric Corp クライアント/サーバ・プログラム生成装置及びクライアント/サーバ・プログラム生成方法
JP2000137600A (ja) * 1998-10-29 2000-05-16 Nec Corp クライアント/サーバアプリケーション作成方法及びその装置並びに情報記録媒体
JP2002132502A (ja) * 2000-10-25 2002-05-10 Nec Software Hokuriku Ltd 言語機能解釈による分散オブジェクト自動生成システム及び方法
JP2005228183A (ja) * 2004-02-16 2005-08-25 Hitachi Ltd プログラム実行方法、および、プログラム実行のための計算機システム
JP2006113661A (ja) * 2004-10-12 2006-04-27 Fukuoka Prefecture 移行処理システム、処理および通信試験装置、スクリプト生成装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH1173306A (ja) * 1997-08-28 1999-03-16 Mitsubishi Electric Corp クライアント/サーバ・プログラム生成装置及びクライアント/サーバ・プログラム生成方法
JP2000137600A (ja) * 1998-10-29 2000-05-16 Nec Corp クライアント/サーバアプリケーション作成方法及びその装置並びに情報記録媒体
JP2002132502A (ja) * 2000-10-25 2002-05-10 Nec Software Hokuriku Ltd 言語機能解釈による分散オブジェクト自動生成システム及び方法
JP2005228183A (ja) * 2004-02-16 2005-08-25 Hitachi Ltd プログラム実行方法、および、プログラム実行のための計算機システム
JP2006113661A (ja) * 2004-10-12 2006-04-27 Fukuoka Prefecture 移行処理システム、処理および通信試験装置、スクリプト生成装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113785268A (zh) * 2019-05-22 2021-12-10 欧姆龙株式会社 信息提供***、服务器以及信息提供方法
CN113785268B (zh) * 2019-05-22 2023-12-15 欧姆龙株式会社 信息提供***、服务器以及信息提供方法

Also Published As

Publication number Publication date
TW201512984A (zh) 2015-04-01

Similar Documents

Publication Publication Date Title
US11675930B2 (en) Remoting application across a network using draw commands with an isolator application
US10469561B2 (en) System and method for managing multiple variants of an HTTP object
US10255255B2 (en) Customization of mobile applications using web-based technology
US10102306B2 (en) Patching base document object model (DOM) with DOM-differentials to generate high fidelity replay of webpage user interactions
CN106575298B (zh) 包含动态内容和陈旧内容的网站的快速呈现
US10614155B2 (en) Single page application authoring in a content management system
TW201441829A (zh) 頁面處理方法和裝置以及頁面生成方法和裝置
WO2023093414A1 (zh) 微应用的开发方法、装置、设备、存储介质及程序产品
CN105786455B (zh) 一种数据处理方法、装置及终端
CN112565406B (zh) 一种灰度发布方法、灰度发布***及电子设备
US10282172B2 (en) Authoring and deploying television apps and pages in a content management system
US10103961B2 (en) Collecting client-side application performance monitoring information
US10664648B2 (en) Webpage rendering using a remotely generated layout node tree
US8706803B1 (en) Client-side generation of preliminary version of network page
CN113688173A (zh) 一种报表信息处理方法、装置、电子设备及存储介质
US9830307B1 (en) Ahead of time compilation of content pages
US8769652B2 (en) Computer based method and system for registering a user at a server computer system
JP6505849B2 (ja) 要素識別子の生成
WO2015045108A1 (ja) クライアントサーバープログラム生成装置およびクライアントサーバープログラム生成プログラム
Chmielewski Device-independent architecture for ubiquitous applications
JP2015156209A (ja) 情報処理システム
US9674220B2 (en) System and method thereof for optimizing delivery of content over a network
US11758016B2 (en) Hosted application as web widget toolkit
Celesti et al. Evaluating alternative daas solutions in private and public openstack clouds
US20160092037A1 (en) Computer-Implemented Methods, Computer Readable Media, And Systems For Distributed Processing

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: 13894815

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: 13894815

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: JP