> For the complete documentation index, see [llms.txt](https://cifar.gitbook.io/note/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://cifar.gitbook.io/note/kai-fa/ruan-jian-gong-cheng.md).

# 软件工程

[微服务是什么？](https://www.ruanyifeng.com/blog/2022/04/microservice.html)

《Software Engineering at Google》的[中英文对译版本。](https://github.com/qiangmzsx/Software-Engineering-at-Google)

[垃圾代码书写准则](https://github.com/trekhleb/state-of-the-art-shitcode/blob/master/README.zh-CN.md)

#### 软件服务架构 b/s c/s 的区别

B/S架构（Browser/Server架构）和C/S架构（Client/Server架构）是两种常见的软件服务架构方式。

1. B/S架构：\
   B/S架构是指通过浏览器作为客户端，与服务器进行通信和交互。在B/S架构中，用户通过浏览器访问服务器上的应用程序，服务器接收请求并处理，然后将结果以HTML等格式返回给浏览器进行显示。用户无需安装任何客户端软件，只需一个浏览器就可以访问各种应用程序。B/S架构的优点是易于维护和更新，适用于跨平台和跨网络的应用。常见的B/S应用包括网上银行、在线购物等。
2. C/S架构：\
   C/S架构是指通过客户端软件与服务器进行通信和交互。在C/S架构中，客户端软件需要安装在用户的计算机上，用户通过客户端软件与服务器进行通信。客户端软件负责用户界面的显示和用户输入的处理，服务器负责业务逻辑的处理和数据的存储。C/S架构的优点是界面交互更加灵活和响应更快，适用于对用户体验要求较高的应用。常见的C/S应用包括聊天工具、音视频播放器等。

总结：\
B/S架构和C/S架构在客户端和服务器之间的通信方式、用户界面的显示和数据存储方式等方面有所不同。B/S架构适用于Web应用程序，用户通过浏览器访问服务器上的应用；C/S架构适用于客户端软件，用户通过客户端软件与服务器进行通信。选择哪种架构方式取决于具体的应用需求和用户体验要求。
