问题标签 [cross-cutting-concerns]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 构造函数注入(DI)与静态工厂的横切关注?
在大多数任意应用程序中,有许多横切关注点需要在所有可用层中解决,例如日志记录、消息总线、配置。我注意到,在某些类中,如果使用 IoC 注入模块,它们往往会完全炸毁构造函数。
对于构造函数过度注入的常见情况,我倾向于将关注点重构为紧密相关的构建块,因此我在类中获得更少的依赖关系。然而,这对于横切概念是不可能的。
在日志框架中,静态工厂/服务似乎非常流行,例如
我的问题是:对于各种横切的东西,这种方法是一种好方法吗?如果代码最终看起来像这样,有什么缺点:
c# - 将非 MVC 相关属性应用于 MVC 操作
我们的应用程序具有 a 的概念PermissionAttribute
。该属性在我们应用程序的基础层中定义,我们的命令和查询都使用该属性进行修饰。由于这个属性是在基础层中定义的,我们不能(也不想)让它继承FilterAttribute
或实现System.Web.Mvc.IActionFilter
它。
我们仍然希望将此属性应用于控制器操作,如下所示:
基于此属性,应应用适当的安全检查。我一直在浏览 MVC 代码库以找到合适的挂钩来自定义 MVC 行为,以允许基于此自定义属性添加这些安全检查。我虽然关于创建一个从其方法ControllerActionInvoker
返回一个自定义的自定义,该自定义将返回基于 的存在而创建的自定义,但感觉工作量很大,我不确定这是正确的行走路径.ReflectedControllerDescriptor
GetControllerDescriptor
FilterAttribute
PermissionAttribute
什么是定制 MVC 管道以便我们可以处理这个非 MVC 相关属性的有效和愉快的方式?
c# - 我们如何为异步 .net 方法创建调用上下文?
在同步环境中,很容易创建一个作用域上下文,它允许您将带外上下文附加到当前线程。这方面的示例是当前的 TransactionScope 或线程静态日志记录上下文。
使用IDisposable 和线程静态字段的组合很容易实现上下文。
显然,这在使用异步方法时会分崩离析,因为上下文是基于线程静态字段的。所以,这失败了:
当然,我们还希望将上下文传递给调用链中的异步方法,所以这应该也可以:
有谁知道如何实施?在使用 async/await 模式时丢失带外上下文会使某些代码片段非常难看。
考虑一下您希望使用基于请求的上下文进行日志记录的异步 WebAPI 调用。您希望调用堆栈深处的记录器知道请求 ID,而无需使用参数将请求 ID 一直传递到调用堆栈。
谢谢你的帮助!
java - 入侵检测(XSS 攻击)是一个交叉问题吗?我们可以将它与 AOP 解耦吗?
我目前正在努力保护应用程序免受XSS 攻击。因此,我特别针对Every Request进行检查。这也可以在拦截器级别进行检查。
但我想将它与 AOP 之类的东西解耦?
您的经验中的任何输入都是可观的。
谢谢。
c# - 带有 AOP 的数据库控制器 API Try Catch
我正在为数据库操作创建一个 api,我必须用 try catch 包装 api 中的每个函数调用。我基本上是想获得与 python 中的装饰器相同的功能。
我读了一堆文章,这似乎是最好的例子:http: //ayende.com/blog/3474/logging-the-aop-way。我遇到的一个问题是,在使用需要包装的函数接口解析容器后,您必须调用已解析的容器来调用其中一个函数。
我希望我的控制器的用户能够只调用实现上述接口的我的类,并且对我在内部所做的事情一无所知,就 try catch 业务而言。
这可能吗?如果解决方案很简单,我深表歉意,我对 C# 没有太多经验。谢谢。
c# - 简单的喷油器,功能不被拦截?
我试图让一个横切关注点拦截我在控制器上的调用,但由于某种原因,它们没有被拦截。
我基本上是想让这里的例子起作用: http ://simpleinjector.readthedocs.org/en/latest/InterceptionExtensions.html
他们在这里的拦截部分也有一些其他信息:http: //simpleinjector.readthedocs.org/en/latest/advanced.html
我有一种感觉,这是因为我没有正确设置容器。"Intercepted!!!"
有人可以告诉我在控制器上的调用完成后我需要如何更改我的 main吗?另外,有人可以告诉我容器的设置是否错误,如果是,请解释我的错误。
编码:
java - 在 Java 中聚合和呈现与用户相关的消息给最终用户
我正在使用Apache CXF开发一个Rest API,目前我正在寻找一种方法来聚合与客户端相关的消息,以便在必要时将它们发送回客户端。
例如,假设客户端通过POST
请求调用我的资源之一,以便将数据添加到集合中。如果客户端发送不正确的数据,则将发送HTTP 400
响应。我想要的是在响应有效负载中发送有关数据无效原因的有用消息。这些消息可能来自我的应用程序中的不同类。我目前所做的是我开发了一个 MessageQueue 类(如下所示),它负责管理这个横切关注点。
这是一个好方法吗?是否有任何框架可以做类似的事情,或者有更好的方法吗?
谢谢
消息队列.java
c# - 如何在没有依赖的情况下使用 Ninject 与装饰器绑定?
我了解如何按照此处的说明配置装饰。但我看到一个问题。就我而言,我想避免对存储库的依赖。
详细地说,我有UI、BL(业务层)、DL(数据层)。UI 和 DL 参考 BL。上面的代码位于 UI 的组合根目录中。IRepository位于 BL 中,Repository属于Data 层。我不想在 UI 中引用 DL。那就是我不想让 DL 成为 UI 的依赖项。所以我们在这种情况下使用的代码如下使用约定优于配置。
所以问题很简单,我怎样才能使用约定优于配置的条件绑定?
asp.net-mvc-4 - 自定义 Unity 拦截行为或企业库块,哪个更适合 AOP?
试图决定为我的 MVC 应用程序采用哪条路径并希望遵循 AOP 方法。谁能解释 Unity Custom 拦截行为和使用 Enterprise Library 6 的优缺点。
现实世界实施的经验和教训将非常有帮助,谢谢。
scala - 如何以 Scala 方式处理横切关注点
因为我刚刚在我的代码中实现了 Log4j,所以我正在网上阅读有关横切关注点的信息。有些人说使用 AspectJ 没问题,而另一些人则指出它破坏了函数式编程。那个 mixins 是 Scala 的横切关注点的解决方案。
然而,当我认为我会将一个特征扩展到一个本身不相关的对象/类时,我会感到畏缩。
例如new Database with Logger
这里Logger
与 无关Database
,但它如何混合以提供日志记录。我更喜欢用 Scala 的方式来做,所以我想知道这就是人们所说的 mixins 的意思。
有人可以向我展示一个如何在 Scala 中进行此操作的快速示例吗?