zoukankan      html  css  js  c++  java
  • AOP

    最近做了AOP, 监测工程中的某些数据. 但是不能影响原工程, 也不在原工程中写代码; 面向切面编程, AOP.
    首先使用了个开源的第三方, Aspects;
    关于框架的搭建
    第一个版本主要是收集Node中的数据. 之后肯定还会收集其他的数据; 主要就是对 WebSocket 中的方法, 插入代码. 所以需要一个管理类, 管理要去收集哪些数据; 在管理类中有一个数组, 其中存放着使用了的对象.这些对象去收集需要的数据; 这些对象可随时添加和移除; 这些对象都有一些公共特征, 所以写成一个公共的基础类(baseObject);
    既然是面向切面编程, 不能影响了原代码的效率, 所以需要在自己的线程中处理;

    Node数据收集
    思路:在WebSocket调用 setDelegate: 的时候, 把delegate 设置成自己的对象, 操作后再转发给原来的对象; 在继承于baseObject的类中, 要去设置新的代理, 并给其他需要关注的方法插入代码. 本来想着使用单例, 这样就可以保证只有一个对象管理WebSocket的有关代码.但是这样用的单例太多, 其实完全没有必要.(之前为什么会用单例, 是因为在管理类中, 要控制Socket 数据收集的开启和关闭, 因为不在一个方法中, 所以不能找到同一个对象, 使用了数组管理, 并且给其加上一个分类type标签, 就可以区分出具体的对象, 因为每种只有一个对象, 所以只需要一个是什么类型的标签就可以);
    在hook方法中, 要对多个socket方法进行操作, 每次都要设置代理为A, 怎么可以保证是同一个A? 可以给 socket 添加一个属性, 每次找到的都是同一个A; 给 NSObject 写一个分类, 添加一个属性, 用来存储新的代理对象; 因为如果外界使用了两个 socket 只有一个代理的话, 肯定是不对的;
    我们其实没有使用 socket 对象, 只是代理方法中, 引用了 Socket对象, 我们将代理方法中的socket 改成 id类型, 就不必依赖 WebSocket 框架了.


  • 相关阅读:
    欢庆入住博客园
    指定线程所运行的CPU核心
    [GNU/Linux MakeFile] 第一章:概述
    [.NET][编程之美][1.1]C# 实现让CPU占用率曲线听你的指挥 – 可指定运行核心
    vmware workstation 7.1 正式版 序列号 注册机
    linux:设置 linux定时运行命令脚本 (crontab详解)
    守护进程(Daemon)
    Linux下定时执行脚本
    二叉树的遍历(转)
    dup,dup2,fcntl,ioctl用法简述
  • 原文地址:https://www.cnblogs.com/lion-witcher/p/7324107.html
Copyright © 2011-2022 走看看