【问题标题】:Is it correct to use reflection to call a method in Web Application使用反射调用Web应用程序中的方法是否正确
【发布时间】:2016-05-10 20:30:33
【问题描述】:

我有一个场景,其中数据库中有方法名称要在运行时以某种顺序调用。你认为反射是最好的选择吗?

DB 表保存在某个点要调用的方法的逻辑。因为会有多个具有不同方法的类。根据查询,我将获得要调用的类名和方法名。

我不太关心在前端/.Net 代码后面的 Web 应用程序中使用反射。

将这些调用移至某个后台服务/WCF 服务会更好吗?

我正在寻找不同的可用选项。

【问题讨论】:

  • 你能提供更多细节吗? (一个有 3-4 种方法的例子)不完全清楚你想要达到什么目的?
  • 认为他的意思是在数据库中有存储为字符串的方法名称...
  • 如果没有反思,你会怎么做呢?
  • 前端通常不能使用反射,因为那里没有运行 C#code。前端所能做的就是使用 Javascript 并执行回发。 C# 代码始终在服务器上运行。
  • @ThorstenDittmar 前端我的意思是 .Net 代码背后。

标签: c# asp.net web-services architecture


【解决方案1】:

如果进行反射的目的是让您的应用层灵活地进行动态方法调用,那么它是有意义的。

请注意,并非所有非功能性需求都能得到满足,并且一些架构原则相互矛盾。在这种情况下,性能和灵活性就是这样的两个极端,更大的灵活性会对性能产生影响。

回到你的场景,建议确定为什么需要反思,如果它是绝对必须的(不要让它变得不必要的复杂),你需要考虑其他策略,如 缓存反射调用缓存响应等,以确保将性能影响降至最低。

【讨论】:

    【解决方案2】:

    从手机发送!

    1. 如果它是一组封闭的操作,你最好使用枚举和 switch-case。

    2. 避免对任何接近用户输入的内容进行反思,以避免某种形式的注入攻击

    3. 如果可以,请完全避免反射……如果不能:

      3.1。检查数据库值。

      3.2。考虑在沙盒中运行方法,只获得经过净化的结果。

    附:大多数情况下,在考虑复杂的解决方案时,总会有一种更简单的解决方案。因此,您可能需要查看导致您考虑此解决方案的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-09-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-18
      • 1970-01-01
      相关资源
      最近更新 更多