tanszek:oktatas:iss_t:evolution_of_software_integration_methods
Differences
This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
tanszek:oktatas:iss_t:evolution_of_software_integration_methods [2023/03/05 16:34] – létrehozva knehez | tanszek:oktatas:iss_t:evolution_of_software_integration_methods [2025/02/17 10:11] (current) – [Development on a software "Virtual Machine"] knehez | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | Following figure shows the six classical | + | ==== Six Standard |
- | {{tanszek: | + | {{tanszek: |
+ | |||
+ | |||
+ | ==== Development methods of Information System Components ==== | ||
+ | |||
+ | Below we present the basic methods by which IT system components can be developed. IT systems and some of their components differ from traditional stand-alone applications in that, **we expect them to function as a service with almost constant availability**. | ||
+ | |||
+ | However, in order for an application/ | ||
+ | |||
+ | * How to control the life cycle of the component? | ||
+ | * How can we manage the resources of the component? | ||
+ | * Where/how can we get the configuration information needed to run? | ||
+ | * How can we communicate with the environment, | ||
+ | |||
+ | ==== Native development method ==== | ||
+ | |||
+ | Although this is the oldest method, but it is still used in many ways today. For example, in embedded systems, or in containers. | ||
+ | |||
+ | {{tanszek: | ||
+ | |||
+ | We compile the source code for a specific CPU and Operating System combination: | ||
+ | |||
+ | * c/c++/d compilers: msvc, gcc, clang, dlang | ||
+ | * strong knowledge of: pointers, references handling, heap/stack memory management, multi-threaded resource management | ||
+ | * it is the responsibility of the developer to release the allocated memory can be a big challenge: API calls must be known at the operating system level | ||
+ | * the integration of the various components is difficult: custom serialization methods must be implemented | ||
+ | |||
+ | **There is no built-in resource management** | ||
+ | |||
+ | * resource management is the responsibility of the developer | ||
+ | |||
+ | **There is no widely used dependency management** | ||
+ | |||
+ | * the standard handling of used dependencies (components developed by others) is not uniform, but after 2020, we can use [[https:// | ||
+ | * RELEASE/ | ||
+ | * it is possible that the operation of the program is different (erroneous, slower) with another compiler | ||
+ | |||
+ | the life cycle of the application (starting, stopping, monitoring) is managed by the operating system | ||
+ | |||
+ | **Special areas of application** | ||
+ | * where maximum transaction speed is required | ||
+ | * IOT devices: insufficient memory is available to run or FPGA solutions are required | ||
+ | |||
+ | ** Challenges ** | ||
+ | * There is no standard exception handling | ||
+ | * The developer has to handle the bugs, unhandled problems lead to system crashes | ||
+ | * It is very difficult to find errors (memory dump, special logs) | ||
+ | * It's very easy to make a mistake - uninitialized data structures - (sanitizers) | ||
+ | |||
+ | ==== Development on a software " | ||
+ | |||
+ | {{tanszek: | ||
+ | |||
+ | It has been widespread since the introduction of the Java VM (1997-). It defines a virtual processor and its associated so-called Byte Code, a set of instructions with its own machine code. It does not translate the source code directly to the CPU, but to the virtual machine' | ||
+ | |||
+ | ** Most famous Virtual Machine implementations ** | ||
+ | |||
+ | * Java Virtual Machine (JVM) | ||
+ | * Nodejs, chromium engine | ||
+ | * Common Language Runtime (CLR): **.NET** system | ||
+ | * Zend Engine: **php** | ||
+ | * Adobe Flash Player: runs swf-s on the web (depricated) | ||
+ | * HHVM: php-based VM in facebook development | ||
+ | * ABAP: runs on the SAP Virtual Machine | ||
+ | * LLVM: this is not the classic VM, but it compiles the source into an llvm byte code, which then turns into native code. "LLVM is designed around a language-independent intermediate representation that serves as a portable, high-level assembly language that can be optimized with a variety of transformations over multiple passes. | ||
+ | |||
+ | **Just in Time (JIT) compilation** | ||
+ | * The virtual machine can continuously optimize the application code, the byte code conversion is dynamic. | ||
+ | |||
+ | **Memory management** | ||
+ | * use of pointers is prohibited (generally) | ||
+ | * a special ' | ||
+ | |||
+ | **Resource management** | ||
+ | * resource management is the responsibility of the developer | ||
+ | * but the VM has basic resource management capabilities | ||
+ | * Built-in, widely used dependency management is available (maven, pip, npm) | ||
+ | |||
+ | **RELEASE/ | ||
+ | * we are running the code in "DEBUG mode", the optimization remains hidden in the VM. | ||
+ | * the speed of the modern VM's are enough for general tasks. | ||
+ | |||
+ | The life cycle of the application (starting, stopping, monitoring) is managed by the virtual machine | ||
+ | |||
+ | **Development of components** | ||
+ | it is ideal for developing collaborative components, as applications running on the VM can easily communicate with each other using TCP/IP network objects can be easily used and modified with the help of self-analysis. (Java reflection) | ||
+ | |||
+ | ==== Middleware development method ==== | ||
+ | |||
+ | {{tanszek: | ||
+ | |||
+ | Application server development method. It was originally released by Sun Microsystems in 1999 under the name J2EE (Java 2 Enterprise Edition). The standard specification is currently at version 8 (2017): https:// | ||
+ | |||
+ | * It typically uses middleware implemented in Java. [[https:// | ||
+ | * famous implementations: | ||
+ | |||
+ | The entire life cycle of applications is managed by middleware. | ||
+ | |||
+ | **Web Container** : managing the life cycle of web components. | ||
+ | |||
+ | **Servlet**: | ||
+ | |||
+ | * Automatically generated servlets can also be created using JSP technology, where the HTML code can also contain Java codes. | ||
+ | * HTTP requests : GET, POST, PUT, DELETE, OPTIONS | ||
+ | |||
+ | <code java> | ||
+ | |||
+ | public class MyServlet extends HttpServlet{ | ||
+ | |||
+ | public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, | ||
+ | { | ||
+ | res.setContentType(" | ||
+ | PrintWriter pw=res.getWriter(); | ||
+ | |||
+ | pw.println("< | ||
+ | pw.println(" | ||
+ | pw.println("</ | ||
+ | |||
+ | pw.close(); | ||
+ | } | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | In the first versions, metadata was managed with XML descriptors. In these, it was possible to specify how a class should behave: URL mapping, number of running instances, etc. | ||
+ | |||
+ | ==== ESB - Enterprise service bus ==== | ||
+ | {{tanszek: | ||
+ | |||
+ | Service BUS: Service Oriented Architecture (SOA). It is based on loosely coupled components (services). Analogy of the BUS concept known in networks. | ||
+ | |||
+ | **Main functions**: | ||
+ | |||
+ | * Message forwarding - Message Routing between services | ||
+ | * Service discovery | ||
+ | * Support conversion of different protocols | ||
+ | * Validation - schema validation | ||
+ | * Version management of services | ||
+ | * Monitoring services | ||
+ | * Business process management | ||
+ | |||
+ | **Advantages: | ||
+ | |||
+ | * easily scalable use - from local service to full enterprise access | ||
+ | * instead of implementing (coding) the integration, | ||
+ | * services can be easily started and stopped due to loose connection | ||
+ | |||
+ | **Disadvantages: | ||
+ | |||
+ | * slow communication | ||
+ | * due to centralization, | ||
+ | * high complexity in configuration | ||
+ | |||
+ | Known implementations: | ||
+ | |||
+ | Azure Service Bus, Microsoft Biztalk Server, Mule ESB, Oracle ESB, IBM Websphere ESB, JBOSS ESB | ||
tanszek/oktatas/iss_t/evolution_of_software_integration_methods.1678034061.txt.gz · Last modified: 2023/03/05 16:34 by knehez