代码之家  ›  专栏  ›  技术社区  ›  Youngjae

ASP。控制器中的网络和静态方法

  •  6
  • Youngjae  · 技术社区  · 7 年前

    假设WebApi2控制器具有 SearchClient 在启动时的范围生活方式依赖中配置。

    public class SearchController : ApiController {
    
        private readonly SearchClient _indexClient;
    
        public SearchController(SearchClient client) {
            _indexClient = client; // dependency injected
        }
    
        public IEnumerable<string> Get(string keyword){
            return SearchDocuments(_indexClient, keyword);
        }
    
        public static IEnumerable<string> SearchDocuments(SearchClient indexClient, string text)
        {
            return indexClient.Search(text);
        }
    }
    

    SearchDocuments 方法已 static 关键字。

    我的问题是;

    1. 静止的
    2. 静止的 在这种多访问的web环境中,方法是安全的还是推荐的?
    3. 那么...怎么样 async static async 方法
    2 回复  |  直到 7 年前
        1
  •  5
  •   Zhaph - Ben Duguid    7 年前

    我们如何判断静态方法是好是坏?

    web应用程序中的静态方法就像桌面应用程序中的静态方法一样。一旦它们在web应用程序中运行,处理或解释它们的方式就没有什么不同。所以它们既不坏也不好,你可以将它们用于任何不特定于实例的事情。

    static 静止的

    那么web环境中的异步静态方法呢?它与异步方法不同吗?

        2
  •  0
  •   Nkosi    7 年前

    只是为了补充已经提供的答案。

    在控制器上使用静态方法并不会真正增加任何价值,在给定场景中实际上也不需要。

    考虑抽象控制器中的显式依赖项。

    public class SearchController : ApiController {
    
        private readonly ISearchClient indexClient;
    
        public SearchController(ISearchClient client) {
            indexClient = client; // dependency injected
        }
    
        public IEnumerable<string> Get(string keyword){
            return indexClient.Search(keyword);
        }
    }