Recently, we have developed a GIS and RS system. The client uses C # + arcengine and the server uses C ++. The purpose of C ++ is to increase the computing speed, server and cross-platform. As a platform system to be maintained and reused in the future, it is absolutely correct to choose a cross-platform standard C ++ for the server. The client is developed for special applications. For the client, the customer puts forward a lot of problems and requirements during actual operations, so we chose C #. Our goal is to run the client in windows. After all, as a client, most customers still use Windows operating systems.
Ace was selected for interaction between the client and the server. The original intention of ACE was to allow the client to directly operate the objects on the server, and the operation method was as simple as the local objects on the client, remote Object Technology. However, in the actual operation process, it is found that this technology is relatively difficult. However, given that the development progress of the system has been completed, it is impossible to replace other technologies, so we can only use this technology. Another serious problem caused by this technology is that once an ace employee leaves, it takes a long time for a new employee to accept this technology, because this technology does not require other commonly used technologies, there will be very few people. You can select a common technology similar to web service. However, at that time, I was also one of the people who supported the selection of ACE technology. Now I regret it.
Therefore, when selecting a technology, we advise some designers and developers not to judge whether the technology is new or cool, but to meet system requirements. The technology must be mature, it is most important to use more people.
I am mainly responsible for the design of the client and the design of the basic server platform. The server business and communication components are rarely involved. So after a while, when the system goes to a later stage, the business and communication components on the server side are dragging the project's feet, there is a reason that the service part of the server is fully process-oriented when the project is tight. When thinking about the design, it is also carried out in a process-oriented manner. The system itself is a large system, and the Business complexity can be imagined. It also needs to interact with other systems. Therefore, when project requirements are constantly added, the server response speed is getting slower and the stability is getting worse. Developers have to spend a lot of time fixing system bugs rather than adding new features.
Later, I took a closer look at the communication and business aspects of the server.Code, Very messy, with few comments to the Code. There are many comments to the temporary code, and I don't know why it is commented out. In addition, the Code Organization Method of the business part has many process-oriented components, which are not hierarchical. interaction with external systems and access to databases are integrated with the business model. Whenever I ask how the server can be made like this, the main design developers of the server section give me the following answers: C ++ does not need to have so many designs like your C, we mainly aim to implement functions and improve efficiency. if the task is so tight, we need to provide functions in the past two days, that is, to write temporary code, we need to implement the demo functions; c ++ is hard to implement, and it is good to implement the function.
Every time I hear the above back, my nest is full of fire. In addition, I think some functions should be well implemented on the server side, but it takes a long time to implement these functions. Sometimes C ++ and C # are different. Implementing a function is not as simple as C. I think there may be some of the above reasons, but it is definitely not the majority. This also gave me the idea of learning C ++, because I didn't have any substantive answers to refute the above situation. I know that, as a project administrator, I am not responsible for specific technologies. I can tell the major design personnel the design ideas and objectives, however, with such design and development personnel, you cannot rest assured.
In the end, due to various reasons, the major design engineer in charge of the server left the company, which led to a serious lag in the entire project. Even worse, no one was responsible for the communication problem on the server, this is a technical difficulty in itself. We need someone to familiarize ourselves with the Principles and code of server-side communication. This takes a long time.
Is C ++ used only for underlying development, hardware or embedded systems? C ++ can also be used as a business system or a simulated modeling of the real world, and these things are essentially no different from C # and other languages. In reality, there are too many business systems that use C ++. Like the arcengine library of ESRI, I think that library is the best organized in the library I am currently using.
It's just that C ++ is difficult to learn and is difficult to use. Therefore, the response needs are not clear and are prone to changes. For systems with low efficiency requirements, it is really a little useful, therefore, easy-to-use languages such as C # and Java have become the first choice for general business systems. But the core of a product or platform still needs c ++. However, some C ++ developers are difficult to use C ++ to talk to C # developers. They feel that C ++ is superior to C, even some people who look down on C # think that they are all fancy things, but most people have not learned the essence of C ++. It is estimated that many people have this mentality.
A person who has learned the essence of C ++ will surely understand why C ++, C #, and Java coexist, and select the correct language and platform development when appropriate. In addition, object-oriented and some solutions can be used in most languages and platforms.
Although the entire system has entered a later stage, it is still relatively passive. Fortunately, several friends insist on it. This is also related to some corporate policies.