How have you structured your network oriented apps?

后端 未结 2 637
独厮守ぢ
独厮守ぢ 2021-02-06 20:11

I\'m starting the design of a new app that is primarily network oriented, and I\'m looking for some advice from people who have come up with a good architectural design, or OOP

2条回答
  •  我寻月下人不归
    2021-02-06 20:25

    "Network application" is an unclear category covering quite a broad spectrum of possible requirements and designs. By definition, you will have to deal with concurrency and latencies. Robustness is always a challenge: it is all too easy to design a system whose availability is the lowest common denominator of all its hardware and software components. You will have to upgrade the O/S and components of your application: can you live with taking down all of the solution, or do you need some hot/cold standby or even failover capability? Networks fail in exotic ways (at least to us poor pure software guys): you are dependent on so many things you never consider (routers, switches, DNS servers, the temper of that bearded network engineer down the hallway!), and should design the interactions with a pessimistic frame of mind.

    One warning: don't be too object-oriented when designing distributed applications. Objects have their place in managing software complexity, but the moment you start pushing them on the wire, a huge number of performance and version dependency problems raise their ugly heads. Service oriented architecture is a buzzword, but is useful as a design principle, to a point. The mainframe guys have known this for ages...

    Two general book recommendations:

    • Designing Concurrent, Distributed, and Real-Time Applications with UML is a few years old, but brings home the challenges you may be facing (especially if you really have hard or soft real-time dependencies somewhere). A bit theoretical, but serves to instil a certain amount of respect for the complexities!
    • Enterprise Integration Patterns is a systematic look at the different design options you can use to integrate new and legacy components.

提交回复
热议问题