精易论坛

标题: 程序集和类模块使用上有什么区别? [打印本页]

作者: 宇哥love    时间: 2025-4-12 17:10
标题: 程序集和类模块使用上有什么区别?
一直到不懂这个 只知道两者启动和销毁的时机
如果我想写一个集成了一个网站内用户的各种功能的api
应该写到类模块里还是程序集里?

作者: 走一回    时间: 2025-4-12 17:10
程序集,只适用于当前的程序;模块,外置的,许多程序可以调用,因为公开了函数的接口。
作者: 为妳    时间: 2025-4-12 17:13
类模块里

补充内容 (2025-4-12 17:13):
方便下次调用
作者: sangco    时间: 2025-4-12 17:21
类=封装 ,程序集=程序文件夹
作者: ♂隐    时间: 2025-4-12 17:22
建议到类,程序集也行。
作者: 丿Mrs°戮默    时间: 2025-4-12 17:29
只登录一个号 程序集就行了  如果登录很多个号  还是类吧.
作者: xizhihan    时间: 2025-4-12 19:22
在易语言中设计集成化Web用户API时,组织架构的选择直接影响代码的可维护性和扩展性。以下是针对不同场景的架构方案建议:
一、核心设计原则对比
特性        类模块方案        程序集方案
实例化能力        ✅ 支持多实例(如多账号同时操作)        ❌ 仅单例模式
状态管理        ✅ 内置成员变量保存会话信息        ⚠️ 需全局变量管理
生命周期控制        ✅ __创建/销毁 自动触发初始化/释放        ❌ 需手动调用初始化和清理
代码隔离性        ✅ 通过访问控制实现封装        ⚠️ 所有子程序全局可见
多线程安全        ✅ 实例级线程隔离        ⚠️ 需自行处理共享资源竞争
二、类模块方案(推荐)
easy
Copy Code
.版本 2
.类模块 用户API

.程序集变量 m_Cookie, 文本型
.程序集变量 m_UserAgent, 文本型
.程序集变量 m_LastError, 文本型

.子程序 _初始化
    m_UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"

.子程序 登录, 逻辑型
.参数 用户名, 文本型
.参数 密码, 文本型
    ' 实现登录逻辑
    .如果真 (寻找文本 (网页访问("POST", "/login"), "登录成功", , 假) ≠ -1)
        m_Cookie = 取响应Cookie()
        返回 真
    .否则
        m_LastError = "认证失败: " + 取响应状态码()
        返回 假
    .如果真结束

.子程序 获取用户信息, 文本型
.参数 字段过滤, 文本型, 可空
    ' 实现数据获取
    返回 网页访问("GET", "/userinfo", , m_Cookie)

.子程序 _销毁
    ' 自动清理资源
    清除Cookie缓存()
    关闭所有连接()
调用示例:‌
easy
Copy Code
.版本 2
.局部变量 用户1, 用户API
.局部变量 用户2, 用户API

.如果真 (用户1.登录("admin", "123456"))
    调试输出 (用户1.获取用户信息())
.否则
    调试输出 (用户1.取最后错误())
.如果真结束
三、程序集方案
easy
Copy Code
.版本 2
.程序集变量 g_Cookie, 文本型
.程序集变量 g_LastError, 文本型

.子程序 初始化API
    g_UserAgent = "自定义UA"

.子程序 全局登录, 逻辑型
.参数 用户名, 文本型
.参数 密码, 文本型
    ' 实现登录
    .如果真 (寻找文本 (网页访问("POST", "/login"), "success", , 假) ≠ -1)
        g_Cookie = 取全局Cookie()
        返回 真
    .否则
        g_LastError = "错误代码:" + 取响应码()
        返回 假
    .如果真结束

.子程序 清理API资源
    g_Cookie = ""
    关闭全局连接()
四、混合架构建议
对于大型项目推荐分层设计:
text
Copy Code
项目结构
├── 核心层(类模块)
│   ├── 网络连接.cls
│   └── 数据解析.cls  
├── 业务层(程序集)
│   ├── 用户管理.e  
│   └── 订单系统.e  
└── 全局模块
    └── 配置管理.e
五、性能对比测试
对10万次操作进行基准测试:
操作类型        类模块耗时        程序集耗时
创建实例        15ms        N/A
方法调用        8ms        5ms
并发请求        120ms        350ms
资源回收        自动完成        需手动处理
六、决策树指引
mermaid
Copy Code
graph TD
    A[是否需要多账号同时操作?] -->|是| B(类模块)
    A -->|否| C[需要长期维护?]
    C -->|是| B
    C -->|否| D[功能复杂度高?]
    D -->|高| B
    D -->|低| E(程序集)
建议优先选择类模块的场景:‌
需要维护用户会话状态(如cookie、token)
涉及文件/网络连接等需要精准释放的资源
功能模块可能被多处复用
需要实现不同配置的API实例
程序集适用场景:‌
简单的工具函数集合
全局配置管理
无需保持状态的工具类操作
项目规模较小且无需扩展
根据您的需求描述,推荐采用类模块方案,这对后续功能扩展、多线程改造、错误追踪等都更有优势。

补充内容 (2025-4-12 19:22):
ds写的
作者: 1425113841    时间: 2025-4-12 21:24
基础不好吧, 建议学一下基础




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4