把小软件当作大软件来写,把大软件当作小软件来做

本文分享了作者从编写小型程序到大型软件的设计经验。强调即使是小型软件也应该采用规范化的分层设计,如用户界面层、应用层及领域层;对于大型软件,则采取‘横向设计,纵向实施’的方法,将其分解为多个小型模块来逐步完成。
把小软件当作大软件来写,把大软件当作小软件来做

黄国强 2008-9-9

    我最初也是从写小的程序开始的。随着程序的规模越来越大,投入的精力越来越多,逐步意识到自己方法上肯定出了问题。从90年代中期开始,我逐步认识到一个好的软件需要一个好的领域模型。但是当时对分层没有概念。一个明显的问题就是,当时的程序在界面代码中也出现领域对象。进入到2000年,首先接触到微软的DNA架构,后来又接触到其他一些分层理论,我的设计思想才逐步完善。
    “把小软件当作大软件来写,把大软件当作小软件来做”就是我对如何提高一个人的软件设计水平的一个总结。
    我们一个人从开始接触软件开发这份工作开始,首先从事的都是比较小范围的开发工作。“把小软件当作大软件来写”的意思就是,虽然你现在写的小软件,但是自己也要把它当作大的软件一样,规范的去做。
    比如,写一个计算器小程序,我们可以按照分层理论把它分成“用户界面层”、“应用层”和“领域层”三部分来写。在写得过程中,逐步体会这三个层次的内容以及层与层之间的关系。再结合相关书籍的学习。相信假以时日,定会将自己的层次提高一个档次。这样,很可能有机会进入到下一阶段,写一个大软件。
    “把大软件当作小软件来做”的含义是,将大软件分层后,从中找出一个从“用户界面层”一直往下直到最底层的一些关键过程,把每个过程作为独立的小软件来做,这样项目的规模再大,也不怕。因为这时项目的复杂度只是算术增加而不是指数增加。这个开发过程我总结出这样一句话叫做“横向设计,纵向实施”。这里的横向设计含义表示我们应该按照分层理论的方法进行分层设计,纵向实施则表示我们在具体的开发过程应该按照从上到下一个一个过程来做。每次都做完一个完整的过程。下图为分层架构图。



在使用 Visual Studio 开发完一个系统后,将其打包为可执行的应用程序是部署过程中的关键步骤。根据开发语言(如 C#)和项目类型(如控制台、WPF 或 Windows Forms),可以通过多种方式将代码编译并封装为最终用户可以直接运行的 `.exe` 文件,并结合安装包实现完整的发布流程。 ### 发布为单个可执行文件 若希望生成一个独立的 `.exe` 文件,可以使用 **.NET Core** 或 **.NET 5/6** 的发布功能: 1. 在 Visual Studio 中设置项目的发布配置为 `Release` 模式。 2. 进入“发布”选项: - 目标框架选择合适的版本(例如 `win-x64` 或 `win-x86`)。 - 部署模式选择 **独立(Self-contained)**。 - 启用“生成单个文件”和“裁剪未使用的代码”选项,以减少体积并提高性能[^2]。 3. 完成发布后,可在指定目录找到 `.exe` 文件,双击即可运行。 示例发布命令(通过 CLI): ```bash dotnet publish -c Release -r win-x64 /p:PublishSingleFile=true ``` ### 使用 Microsoft Visual Studio Installer Projects 创建安装包 为了确保应用程序能够在目标计算机上正确安装并运行(包括检查 .NET Framework 环境等),可以使用 **Microsoft Visual Studio Installer Projects 扩展** 创建 `.msi` 安装包: 1. 在 Visual Studio 中添加新的“安装项目”(Installer Project)。 2. 将主程序输出(Primary Output)添加到“应用程序文件夹”中。 3. 创建快捷方式: - 在“用户的‘程序’菜单”中创建应用程序快捷方式。 - 添加卸载快捷方式:复制 `msiexec.exe` 到应用程序文件夹,重命名为 `uninstall.exe`,并在快捷方式属性中设置参数为 `/x [产品代码]` [^3]。 4. 编译项目后,会生成 `.msi` 安装文件和 `.exe` 引导程序。 ### 将 `.exe` 和 `.msi` 合并为单一可执行文件 为了简化部署流程,可以使用工具将 `.exe` 引导程序与 `.msi` 安装文件合并为一个可执行文件: - 使用工具如 **iExpress** 或第三方打包工具(如 AdvancedInstaller、InstallShield)将多个文件打包为单一 `.exe`。 - 配置引导逻辑,使其先检查运行环境(如 .NET Framework 是否已安装),再启动安装流程。 ### 注意事项 - 若发布的 `.exe` 文件运行时出现闪退,建议检查程序入口点是否有异常或缺少必要的依赖项。 - 对于需要管理员权限的操作(如注册表修改、服务安装等),应确保 `.exe` 文件具有适当的权限声明(例如在清单文件中设置 `requestedExecutionLevel` 为 `requireAdministrator`)。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

acloud_csu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值