如何将AOP引入到生产性软件开发中?

2024-02-16

我知道这个问题以前曾被问过,但这是一年半前的事了,尽管我认为现在可能是重新提问的时候了。我也认识到它可能被视为主观的,但我认为支持/反对 AOP 是有客观原因的。

我有兴趣谁在使用AOP在软件开发中也why or why not使用它。

我认为 AOP 是一个非常强大的范例,它可以使许多开发任务变得更容易。但是当谈到在现实世界的项目中使用 AOP 时,我已经获得了许多人的经验决定者几乎不对其开放。您是如何设法将 AOP 引入到您的项目中的?

2008 年 8 月提出的问题:您在生产软件中使用AOP(面向方面​​编程)吗? https://stackoverflow.com/questions/20663/do-you-use-aop-aspect-oriented-programming-in-production-software


我们的经理听取架构团队的意见。

我们告诉他们,AOP是实现跨关注点特性的唯一解决方案:

  • 首先以合理的成本
  • 不会弄乱开发团队编写的功能代码
  • 现在和将来都不会忘记(与手动向数千个方法添加 try-catch 相比)
  • 无需训练或控制开发人员正在做的事情(有些很棒,有些则一团糟)
  • 具有良好的可维护性

诚然,我们的项目有 20 名开发人员,持续了好几年,所以代码量很大。这是唯一的解决办法。

我认为关键是仅将其用于跨领域关注点。 如果您可以使用常规代码对其进行编码,请这样做。但如果它太大,那么 AOP 就有吸引力并且合理。如果不限制AOP,就会导致数百个AOP小代码,这将很难理解。

是的,我们的软件是生产软件。数百家诊所依赖它!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将AOP引入到生产性软件开发中? 的相关文章

  • 为反应式管道编写方面

    我正在为返回承诺的方法编写方面 考虑以下方法 public Mono
  • 用于记录方法调用和异常的 WCF 服务属性

    我需要记录 WCF 服务中的每个方法调用以及引发的任何异常 这导致了很多冗余代码 因为每个方法都需要包含类似于这样的样板 OperationContract public ResultBase
  • 使用大量 AOP 请求作用域 bean 时出现性能问题

    我正在使用 Spring 3 开发一个半大型应用程序 并且在同时处理数百个用户时遇到性能问题 我正在使用 Spring 的 AOP 代理来使用多个请求范围的 bean 并且我可以看到 每次我对其中一个 bean 调用任何方法时 都会调用 C
  • 关于 C# 的 AOP 的建议 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • spectj可以向java.lang.String添加方法吗

    我读过aspectj的一些文章 我知道它可以增强类 这很有吸引力 我有一个非常愚蠢的问题 我找不到明确的答案 spectj可以向java lang String添加方法吗 或者类似的问题 如果我无法获取某些类的源代码 我可以通过aspect
  • Spring AOP中代理的使用

    我正在读一本书 其中谈到启用AspectJSpring AOP 的支持 下面是书中的一段话 要在 Spring IoC 容器中启用 AspectJ 注释支持 您只需定义一个空的 bean 配置文件中的 XML 元素 aop aspectj
  • 预处理 C# - 检测方法

    我需要能够预处理多个 C 文件作为项目的预构建步骤 检测方法的开始 并在方法的开始处 任何现有代码之前 插入生成的代码 但是 我在检测方法的打开时遇到问题 我最初尝试使用正则表达式进行匹配 但最终出现了太多误报 我会使用反射 但 Metho
  • OOP 的实际用途

    我最近和一位不喜欢的同事进行了一场辩论OOP http en wikipedia org wiki Object oriented programming 引起我注意的是他说的话 在对象中进行编码有什么意义 如果是重用 那么我可以创建一个库
  • 使用 PostSharp 添加 OnException 属性

    我正在尝试一些 AOP 似乎 NET PostSharp 是可行的方法 我想在发生异常时对数据库进行一些简单的日志记录 然而 我发现除了基础知识之外 很难找到任何使用 PostSharp 的真实可靠的例子 我尝试了以下方法 Serializ
  • Spring AOP(方面)未执行

    我使用 Spring 2 5 6 asm 1 5 3 aspectjrt aspectjweaver 1 6 1 cglib 2 1 3 在我的基于 Web 的 Spring 应用程序中 我有以下类 package uk co txttoo
  • 如何使用 Ninject 设置可选方法拦截?

    假设我有一个类 我有时想 但现在总是 拦截一些 但不是全部 方法 据我了解 这可以通过以下方式完成 InterceptAround 在我的 Ninject 模块中 在更高级别的代码中 或者在这些方法上使用 InterceptAttribut
  • Spring AOP:- 在 joinPoint 中获取参数名称为 null

    LoggingAspect java Around allGenericAppServiceImplMethods public Object LoggingAdvice ProceedingJoinPoint joinPoint thro
  • AspectJ 是如何工作的?

    我正在尝试了解 Aspect 的工作原理 我有 C C 背景 但魔法永远不会发生 我知道你可以用注释一些函数 Aspect然后写下Aspect的实现等等 但是 新代码是如何 以及在 什么时间 生成的 假设我没有编辑器 我使用编译java类j
  • 如何在 Guice 中定义方法拦截器的顺序?

    有时需要知道 Guice 中拦截方法调用的方法拦截器的顺序 一个简单的示例场景是使用 guice persist 提供的 Transactional 方法拦截器和自定义 Retry 方法拦截器 重试拦截器必须在事务拦截器外部运行 以确保重试
  • AOP 使用 around 来避免执行方法

    我在代码中使用 Spring AOP 来拦截某个方法的执行 我正在尝试做的一个简化示例如下 public void someMethod does something Around execution someMethod public v
  • 带有 Grails 的 AOP

    我想在我的 Grails 项目中创建自定义日志记录注释 My code class MyService AuditLog def method1 println method1 called method2 AuditLog def met
  • Spring AOP生成的代理类的位置

    只是为了学习和理解代理 我想看看Spring AOP生成的代理类 它不存在于 Eclipse 生成的类文件夹中 有人可以告诉我它的位置吗 如果您使用基于接口的代理 默认 Spring 使用Proxy http docs oracle com
  • 命令式代码与声明式代码[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我试图理解命令式范例和声明式范例之间的区别 因为我必须对 Visual Basic 进行分类 NET 在不同的范式中 除了面向对象之外
  • 如何更改运行时中的方法注释值?

    我有像这样的控制器 MessageMapping room register SendTo sendTo public Message addUser Payload Message message SimpMessageHeaderAcc
  • 有关 iOS 应用程序包装的信息?

    有一个称为应用程序包装的过程 IPA被反汇编 被拆开 有时可执行部分确实被反汇编 添加了一些新的二进制代码 资源 段 IPA再次组装 这个过程经常被用作编译时 AOP 向应用程序添加一些方面 如安全性 审计等 您见过用于此目的的任何指南 工

随机推荐

  • 使用与主用户名不同的 RDS 代理用户连接被拒绝

    我正在尝试设置 RDS 代理来为我的应用程序提供 mysql 数据库服务 大多数应用程序运行时使用的用户名和密码等于 RDS 数据库上设置的主用户名 该用户名和密码具有所有权限 我尝试使用与主用户名不同的用户名和密码访问我的 RDS 实例
  • 如何消除这个错误? java.lang.reflect.InitationTargetException [重复]

    这个问题在这里已经有答案了 我添加了所有需要的权限 PackageManager packageManager context getPackageManager Class
  • @事务和继承

    我曾经添加过 Transactional所有 Spring 服务 类 的注释 然后我想 如果事务行为应该相同 我真的必须这样做吗 当然 如果不应该的话 我们会添加 Transational以及方法的其他参数 我试图找到一些关于继承的有用信息
  • 如何使用 Xunit 2.0 动态跳过测试?

    Xunit 1 9 x 为用户提供了DynamicSkipExample cs https github com xunit xunit blob v1 samples AssertExamples DynamicSkipExample c
  • 如何获取 SLURM 作业所用脚本的原始位置?

    我正在使用脚本启动 SLURM 作业 并且脚本必须根据其在脚本本身内部获取的位置来工作SCRIPT LOCATION realpath 0 但 SLURM 将脚本复制到slurmd文件夹并从那里开始工作 这会搞砸进一步的操作 在移动 复制之
  • 桌面上方的浮动图标

    我正在编写一个 C 应用程序 我希望它在桌面上有一个浮动图标 就像移动设备中的 Facebook Messenger 我一直在互联网上搜索但找不到任何有用的东西 有文章吗 有想法吗 您需要创建一个没有标题栏和边框的表单 并使用图像作为表单的
  • OpenCV中概率霍夫变换的具体实现是什么?

    有谁知道 OpenCV 实现中概率霍夫变换的特定算法吗 我的意思是 有关于该算法的参考论文或文档吗 为了得到这个想法 我当然可以查看源代码 但我想知道是否有任何关于它的文档 它不在源代码的注释中 OpenCV 1 0 谢谢你 Jin Ope
  • 是否需要验证或转义jsonp回调字符串

    我有一个名为 action php 的文件 它将执行一些操作 我想将其公开为纯 JSON 或 JSONP 输出 用户将使用如下 URL 来调用它 action php jsonp callback 在我的action php中我正在做这样的
  • 服务器端对云服务执行多个请求

    我正在编写一个使用多个 Web API 的 Web 应用程序 对于单个用户的单个请求 我的应用程序可能需要对其他站点执行最多 30 个 HTTP 请求 包含网络应用程序的网站可以拥有数百个并发用户 我一直在四处寻找 试图找出应该使用哪个库
  • Kubernetes,无法通过 DNS 挂载 NFS 共享

    我正在尝试通过 DNS 查找在我的容器中安装 NFS 共享 k8s 集群外部 我的配置如下 apiVersion v1 kind Pod metadata name service a spec containers name servic
  • 设计模式和架构模式有什么区别? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 当我们读到设计模式在互联网上 我们注意到有 3 类 创作型 结构性 行为的 但是当我们创建软件架构时 我们会考虑 MVP MVC 或
  • 覆盖 Spree Commerce 的 Bootstrap 变量

    我在部署自定义项目时遇到问题 variables scss作为编译资产添加到我的生产服务器 在我的开发环境中一切都很好 在生产中我的变量被覆盖 我正在使用 Rails 4 2 1 和 Spree 3 0 稳定分支 我有以下结构 文件创建于v
  • 如何仅在少数列中插入数据,而其他列为空或像它们在mysql表记录中一样?

    我创建了一个名为 学生 的表 它有以下字段 roll no lt type Integer Not Null course name lt type varchar 40 Not Null std surname lt type varch
  • 实体框架 5 命名空间

    我想首先将 Entity Framework 5 数据库添加到面向 net Framework 4 5 的 Visual Studio 2012 中的类库中 我对需要输入的所有标签感到困惑 将 ADO NET 实体数据模型添加到项目时的 E
  • 裁剪 CMSampleBuffer 并对其进行处理,而不转换为 CGImage

    我一直在关注苹果直播摄像机编辑器 https developer apple com documentation avfoundation cameras and media capture avcamfilter applying fil
  • RESTful API:需要用户代理字符串吗?

    我的团队有一个带有 RESTful API 的网站 我们正在对其进行负载测试 因此我们构建了一个小型控制台应用程序来处理请求 此控制台应用程序不会设置用户代理字符串 这会导致我们的 API 出现错误 因为它是我们数据库中的必填字段 那么 如
  • 服务器端的 Blazor:使用 MongoDB 进行身份管理

    VS 2019 中的 Asp Net Core Blazor 模板可以创建一个服务器端应用程序 该应用程序将使用 Microsoft SQL Server 来管理帐户和声明以进行身份 管理 我想用MongoDB而不是用于账户和索赔管理 这样
  • UILocalNotification 自定义 soundName 仅在指定alertBody 时振动手机(与 UILocalNotificationDefaultSoundName 不同)?

    我有一个 VoIP 应用程序 当应用程序在后台时 它使用 UILocalNotification 通知用户有来电 当出现通知时 我希望它多次播放声音并振动手机 并且不会重复显示相同的消息 我能够通过使用一系列通知来做到这一点 第一个通知会立
  • cx_Oracle & 远程连接到 Oracle DB

    如何通过 IP 地址连接到远程服务器 就像 TOAD SqlDeveloper 能够仅使用 IP 地址 用户名 SID 和密码连接到数据库一样 每当我尝试指定 IP 地址时 它似乎都是在本地获取的 换句话说 cx Oracle connec
  • 如何将AOP引入到生产性软件开发中?

    我知道这个问题以前曾被问过 但这是一年半前的事了 尽管我认为现在可能是重新提问的时候了 我也认识到它可能被视为主观的 但我认为支持 反对 AOP 是有客观原因的 我有兴趣谁在使用AOP在软件开发中也why or why not使用它 我认为