Technology Selection for. NET enterprise-level application architecture design Series

Source: Internet
Author: User

The Technology Selection mentioned here actually refers to the selection of the technology direction, or the selection of the platform scheme or the technical route. In short, it is the grasp of the general direction. Assume that the project background is to build a medium-sized WEB system, and the company sets up a new technical team and Operation Team to operate. Based on this fuzzy project background, let's see what we can get.

The first thing we think of is the characteristics of the target system:
A) stability and service availability: This is the most basic requirement for software systems. Providing stable services to customers is the most basic guarantee for business development. This is a patient battle with the customer and a prerequisite for winning the customer and expanding the business depth. It is hard to imagine that someone will spend their energy in the face of an unstable system to do something that would have been easy.
B) Overall Performance and room for upgrading and resizing: Although there are many times more worries about system pressure, however, the system architecture must be able to cope with emergencies and have enough space for upgrading and resizing to meet the potential business expansion needs. Otherwise, there will always be a busy day. System performance is a service aspect, and upgrading and resizing space is a guarantee for the long-term operation of the system.
C) maintainability and manageability: apart from the maintainability caused by flexible system implementation, the selection of system software and hardware equipment also has an important impact on maintainability. This should be taken into account in conjunction with the team's personnel architecture. Problems in Maintainability and management will inevitably lead to huge difficulties in upgrading and resizing and coping with business changes.

Furthermore, we will think about what solution providers on the market can offer us:
Currently, Java and. NET platforms are popular in WEB systems because they have been proven to ensure high production efficiency in many occasions. Both of them provide good solutions, but the total cost of ownership may be different when the same goal is achieved. That is to say, they have little difference in solution features. Some key comparison items are as follows:

  Java . NET Remarks
Portability Well, it can be smoothly transplanted on most operating system platforms. Poor, only on Windows compatible platforms. Portability is of little significance to end users, but running Java on Linux can reduce investment costs.
Vendor support Many, many server vendors support Java. Small but increasing.  
Community technical support Many, there are many communities and professional technical support vendors. Many technical documents provided by Microsoft alone are already quite rich. Microsoft's. NET strategy is not only a technical strategy, but also a human strategy.
Open-source products Many open-source projects, and many mature product-level open-source projects. Few, and Microsoft's one-stop operation has historical factors. The technical support for open-source software is incomplete.
Social Human Resources Yes, but polarization is serious. A large number of developers, especially the. NET 2.0 and 3.0 platforms. The conclusion is from the recruitment statistics of a talent network.

In addition, we will think about our staff, that is, what aspects of development team and technology we have. The development of the entire system requires the strength of the team. The architectural design and technical direction selection must focus on people. Only the right people can do the right thing to produce the expected high value. The human resources and technical team architecture play an important role in the selection direction. It should be considered based on the talent distribution in the human resources market. The team's historical experience has a great impact on architecture design, because historical experience can bring about architecture reuse and reduce the learning curve of new technologies and tools. In addition, the quality of the team determines whether the software process can be smoothly implemented. Therefore, the Team plays a considerable role in the architectural design. (Here, we should never look at architecture design in isolation. It is not just a matter of planning, because architecture design is a grasp of the future, and any influencing factors should be taken into consideration as much as possible, in particular, there are some major influencing factors ).

The above three points are an interconnected whole. When they are combined, they become a triangle. I call it "architecture design triangle ":

Figure 1 architecture design triangle

 

Next, combined with some guiding principles, they are a summary of the experiences of the successful failures of many software systems. In fact, it seems very direct and easy to understand and accept:
A) Find the easiest technical personnel to build A team. This can minimize the impact of staff flow on the project, and quickly build a team to enter the development stage. Currently, Java and. NET are two major enterprise-level development directions in the IT human resources market. Most IT talents are concentrated in these two fields.
B) use mature technologies. Obviously, Java and. NET are both mature technologies. Each has its own strengths and advantages in software solutions, but can be competent for enterprise-level applications. Over the past few years, both. NET and Java have formed rich social and technical resources .. NET has developed from 1.0 to 3.5, and has become more mature in terms of enterprise-level applications.
C) use the technology familiar to the team. To avoid steep learning curves, you can lower developers' requirements. However, this does not mean that the simplest technology is used to complete complex and huge enterprise-level applications. It should be used to construct a stable and maintainable target system on the premise of being easy to learn and use. If you choose immature or unfamiliar technologies at risk, you can only get one system that is full of loopholes.
D) focuses on the planning and management during the development period, and develops stable and maintainable products. Focus on the quality of the team from the perspective of communication and writing stable and maintainable code, so as to prevent the target system from moving towards disorder and uncontrollable, leading to the final failure.

According to the actual situation, it is easy to draw a conclusion. The direction of consideration is: Target system + Technical Team => solution. I will not write down the detailed conclusions. This time I chose the. NET 2.0 platform for the project.

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.