我正在构建一个Web服务API,以便从管理系统提供远程访问数据。
API中有各种功能,并且都需要访问密钥。
我目前正在包含所有这些功能的内部:
Function GETSOMETHING(api_key)
If IntegratedApis.Grant_Api_Access(api_key) Then
/// DO STUFF
Else
Return "API KEY not provided or incorrect"
End
End Function
显然我的IntegratedApis.Grant_Api_Access(api_key)
函数返回一个布尔输出并检查数据库中用户的key
这样可行,但问题是它有点像维护疼痛。如何自动将所有调用包围在Web服务中?
是否可以通过global.asax
文件返回Application_BeginRequest
上的错误?
答案 0 :(得分:0)
寻找面向.NET的面向方面编程(AOP)框架。这些框架基本上拦截所有调用,并通过一个严重依赖于反射的函数来运行它们。
例如:
// Original function call that you want routed through AOP.
[KeyCheck]
public void OriginalFunctionCall() {
...
}
// AOP function that accepts all functions that were decorated with [KeyCheck].
// Runs logic before the function, runs the function, runs logic after.
public void Intercept() {
// Before original function.
keyCheck();
// Original function
functionCall();
// Logic after original function.
cleanUp();
}
有些框架允许您在希望通过AOP框架路由的所有调用上添加注释。当我使用这种方法时,在执行调用之前你有想要执行的任何逻辑,然后执行调用,然后在原始调用之后执行所需的任何逻辑
一些.NET AOP框架:
最后注意:小心表现。一些框架 - 因为它们大量使用反射 - 会降低代码的速度。