This invention has the deficiencies in the following aspects: first what this invention uses is that
dynamic compilation is the Microsoft CodeDOM ICodeCompiler compiling method, and is to utilize a mechanism called "Code
Document Object Model" (CodeDOM) in the .
NET Framework. Developers who write
source code programs can use
programming language text to generate
source code compilation and get compilation results at runtime according to a
single model representing the presented code. It is basically a complete
black box that can only provide compilation, compilation The final result is success or failure; secondly, every time the code is compiled, another new csc.exe or vbc.exe compilation process will be started outside the current process, and the ICodeCompiler compilation method is only for csc.exe and vbc .exe packaging, this old way, after testing, if multiple script codes are compiled at the same time, the CPU will cause a certain pressure, causing the CPU usage to rise sharply, and in addition to the current process, start a new process to compile the script code , which has a certain
impact on the stability and performance of a system, as well as the input and output of compilation results
There are two deficiencies here: first, this invention uses reflection technology, which is actually an interpreted operation, and a lot of work needs to be done inside the underlying running state:
binding process,
metadata string comparison, parameter
Verification, type
verification, security
verification, generation of a large number of temporary objects, etc., will cause a huge burden on the CPU and GC garbage collector, and the operating efficiency and performance are very low
There are the following points that can be improved. First of all, Spring’s ioc mode is used in this invention. Ioc can be added through code and configuration. This invention is very cumbersome to expand the
data source through a large number of configuration files, and this It needs to be configured manually, resulting in additional maintenance costs. The
coupling relationship is all in the configuration file, and only conventional relational databases can obtain data. Secondly, this kind of performance problem will occur due to the use of IOC mode (reflection), and again in Service business logic layer, if you need to perform secondary filtering and
processing on the extracted
data source, you need to manually develop, deploy, and configure offline
[0011] Based on the above statements, we can see that there are the following shortcomings in the existing technology: (1) Expansion is complicated: the code is directly coupled to the existing system or configured into the system through reflection, which makes the entire expansion process very complicated and cumbersome, and breaks the existing system. Code structure; (2) Low
code reuse rate: the newly expanded code logic is only for the current development and
coupling to the system, which reduces the
code reuse rate; (3) Performance loss: through reflection or configuration mechanism in the system Doing expansion will cause the performance of the system to drop by a level
(4) Long development cycle and low efficiency: When expanding or adding new requirements, developers need to re-develop, compile, test, upload, configure,
package, and deploy the system offline, which makes the development cycle very long and inefficient
(5) Difficult to maintain:
System developers and technology applications may have iterated countless times, and the mutual calls and mutual
coupling between codes in the system are also intricate. People who do not know the system well dare not act rashly
With more and more requirements and functions of the system, the team is getting bigger and bigger, and the corresponding communication costs, development costs, and management costs will increase exponentially. When the system has defects, it will also
cause analysis problems, positioning problems, and repair problems The time is longer; as the amount of code increases, it may also lead to a vicious cycle of "more fixes, more defects"; a small change in the system requires redeployment of the entire application system
(6) Development language limitations: If the application system is developed in a certain language, it must be extended with this language when it needs to be expanded again, and it is impossible to try a new
programming language or framework. It is currently impossible to use one in reality. Technology platform or solution to solve all problems
(7) High hardware cost and difficult horizontal expansion: All program codes are in the same process of the
server, which will lead to difficult horizontal expansion and high cost, because different module functions in the system actually have different requirements on the
server. Some are CPU-intensive computer types, which require a CPU processor with strong performance, and some require memory IO-intensive types, which require a large amount of memory for data caching. If the
server infrastructure required by the system is purchased according to the same standard, the hardware cost will be very high
Multiple developers jointly develop a system and need to wait for other developers to complete it before deploying, which greatly reduces the team's flexibility and function delivery frequency; (11) In addition, when the project opens and runs very slowly, the system is difficult to develop and test , Difficulty in
continuous integration, complex
deployment environment dependencies,
technology stack binding,
programming language, framework,
database upgrade and replacement are very difficult, etc.