Business application platform design

Source: Internet
Author: User

 

The software system itself is very complex, not to mention the framework used to build software. Like the development of computer hardware, we can only make progress in constant learning and thinking. In the past, people learned to accumulate knowledge, learn from experiences in successful practices, and sum up lessons from failures. The content of this article is also the process of my learning, practice, and thinking. We hope to communicate with you effectively.

 

First, do not worry too much about the terms "architecture" and "framework. As long as you can understand what I want to express, do not scatter our theme in the interpretation of these words.

To make our discussion clear and under our control, I set up the following Virtual Environment (this environment is realistic and simplified for the convenience of the discussion ). We need to design a platform solution for the following environments, rather than a general commercial software platform.

A virtual environment:

We (MEnterprises) provide an overall information system solution for an industry. Our customer (The typical organizational structure of the group is as follows:

First, we do not plan to build a large ERPProduct to meet the needs of users at all levels. This has historical causes, feasibility, information collection costs, system integration costs, and requirement specification levels, and is profitable. We can make multiple projects and sell them to a respectively., B2C3-1C1-2. In addition, project benefits can be continuously obtained for their upgrade.

 

However, the project-centric approach is a great deadlock for enterprises. People, resources, and management are all greatly wasted.

It is now supported by the enterprise leadership. We are going to set up a platform R & D center in our software company to build a basic development platform and build an existing 5Project.

 

    • Human Resource Management System --Group, company, and branch
    • Material management system --Company-level and branch-level
    • Sales and transportation system --Group and company level
    • Financial System (temporarily replaced by other systems, consider integration )--Group, company, and branch
    • Management Strategy Analysis System --Group-level

 

For a variety of reasons, I have customized a basic imperfect platform goal. Then, as we continue to improve our understanding, we will gradually add new content.

Platform goals:

    1. Greatly reduce the project development cycle and implementation cycle.
    2. Stable underlying framework and scalability.
    3. Configurable N-Layer Distributed Physical architecture.
    4. Developers are allowed to use the service without permission.
    5. Improve overall system performance.
    6. IDE tools that help vsx.
    7. Provides on-site implementation tools not at the developer level.
    8. As far as possible, the framework level needs to be modified as a result of demand changes.

Of course, our current analysis stage is only the feasibility phase, and we have not introduced real business requirements, and I don't think that step is yet. You can first collect some good ideas for each goal. You don't have to be too constrained to make some very dizzy model diagrams. Of course, we can use whiteboards and brain diagrams for convenience of thinking.

 

I think of the following for reducing the project cycle:

I try to improve development efficiency from the perspective of development, rather than process management control. Of course, it is inevitable that I forget something that is easy to think. For example, An ORM tool. Maybe he providedCodeGenerate tool or database generation tool. But now I think so much, even though it is just some ideas. We can consider this topic from the perspective of business developers. Should business developers know about databases? Do they need to know about application servers? Do they need to understand the underlying objects? Which of the following methods is the most intuitive or easy for business developers to communicate with and master. (This problem is usually unsolved. Each solution has its advantages and disadvantages and can only be used to find a compromise .) Before answering this question, let's take a look at the three common design ideas.

Focus on data or business processes or interfaces

This topic is directly related to our development process methods, and may also affect the architecture model of this framework. From these three points, it is easy for us to think of a three-tier architecture. Maybe it is the reason why he is too deep-rooted, but it is by no means our only choice.

If the data is designed as the main body, the data is the main body. business developers need to design a database to directly control and read the original data. The platform can provide a business-type code generation mechanism or use existing ORM products. The strong-type dataset provided by vs is designed in this way. Developers can easily follow the tables and views in the database. Generate corresponding strong data objects. Generally, a database Field corresponds to the attributes of a class, which is also in line with the general thinking mode of developers, making them easy to accept and flexible to use. General persistence tools have powerful code generation support. The disadvantage of this method is that business developers must use data databases. In addition, business developers will always be misled to connect tables in the database to specific services, and business objects will be easily put on the shelf to some extent. Thus, the meaning of hierarchy is lost. The database design that needs to be used in this method becomes extremely important. Database designers must not only be proficient in database design, but also have a deep understanding of the business. This approach also seems powerless in response to demand changes. Because of the complexity of the business logic itself, it is impossible to rely entirely on the generated business code. To directly generate an interface from a database, you must do a lot of code work. UAP provides this mechanism, but I think its interface is hard to be customized.

If the business process is designed as the subject, the business object is the subject. We can write visual Business Object generation tools, or directly use the class designer provided by Vs, or use code segments to reduce code input. Because business developers must understand the business, designing the business class is what they mainly want to do. In this way, the platform can automatically generate databases and tables in databases based on the service class and specified data sources. Generate the primary and foreign key relationships of the database based on the subordination between the class and the class. Use attribute and attribute of a class, or use a configuration file to create various interface views of a class instance, so as to provide a mechanism for directly generating interfaces with the business class. To avoid flexibility, in addition to common views provided by the platform, you can also customize UI templates. The biggest drawback of the design with the business object as the subject is that the business personnel completely lose control of the database. If the platform cannot give a good stop to extremely special requirements, the developer may be deadlocked. In addition, for report development, the powerful functions provided by the database itself cannot be fully used. It is not easy for platform developers to provide an automatic generation control mechanism, the difficulty of platform development is greatly increased. Xaf is designed in this way and powerful, and he has done much more than I can imagine.

Finally, the design is based on the interface. The prototype design method is based on this idea. This method is the easiest way to communicate with users and is also the most understandable. However, for developing a platform, I cannot figure out how to use it for the moment. This is a legend.

// The platform provides a mechanism for the interface designer to draw a user interface using the platform tool.
// Work with business developers to use platform tools for each page control
// Set the specific value of the attribute. Configure the specific control classes for various actions on the page according to the platform module configuration management tool.

Sorry, I did not really think about this. I just thought about how to let the platform generate databases and business control code directly based on the Interface Designed by the interface designer. Maybe it can be a powerful control.

 

Let's go here today. With my further analysis, we soon began to consider functional requirements at the framework level after our completely divergent thinking and proof-of-choice, and select a suitable architecture, and then further improve our design. Messy thinking, incorrect words, and incorrect sentences are inevitable. The original thought is presented to everyone, hoping to get your comments.

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.