zoukankan      html  css  js  c++  java
  • asp.net core开发注意事项

    1.类库的创建尽量选择.net standard.

      如果选择.net core 则.net framework不能调用该类库, .net core和.net framework都可以调用.net standar。

    2. Controllers的创建,需在每个Controllers类中添加区域特性并注明区域名称[Area("Name")], 和之前的版本不一致。

      .net framework中创建区域文件夹时,会自动创建区域注册类。同一区域文件夹中的类,可以不用加区域特性。

    3. .net core web/webapi中没有web.config配置文件,所以读取配置文件不能使用configurationManager类。

      配置文件使用json文件,读取json配置文件如下:

                var builder = new ConfigurationBuilder()
                    .SetBasePath(env.ContentRootPath)
                    .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
                    .AddJsonFile("configs/buildConfig.json", optional: true, reloadOnChange: true)
                    .AddInMemoryCollection(conf)
                    .AddEnvironmentVariables();

     4. oracle对asp.net core 的支持还不够充分,目录仅有一个预览版:Oracle.ManagedDataAccess.Core

         它对entity framework core还不支持,估计18年第三季度会发布预览版本。

    5. 文件上传接口也有变化:

      .net core: public IActionResult Upload(IFormCollection form)

      .net framework: public ActionResult Upload(HttpPostedFileBase fileUseless)

    6. asp.net core默认使用Kestrel作为Http请求的监听器,而不是使用原来庞大的Https.sys。不再依赖IIS,为跨平台提供平台基础。

        Kestrel不仅仅是微软下一代的跨平台Http请求监听器,同时还提供了比Https.sys更轻量级以及更快速的Http请求处理

    7. Asp.net core与原来的Web设计另一个最大的区别在于Asp.net core(及.net core)完全抛弃了原来的使用管道模式来接收以及处理HttpRequest。在Asp.net core中允许处理中间件(Middleware)来对所有的HttpRequest来进行请求,当请求被接收到时,Asp.net core会调用注册的中间件(按照注册的顺序)对HttpRequest进行处理。这样做相比与原来使用HttpApplication的管道方式而言,其优势在于完全由开发人员决定HttpRequest需要执行怎么样的处理,没有多余的其他步骤。而原来的方式既使开发人员不希望对一个HttpRequest进行任何处理,但HttpApplication仍然会按照管道的设置依次创建HttpModel -> 激活HttpHandler -> 处理Session等。据.net core团队给出来的性能测试数据来看,Asp.net core(.net core)相比与原来的Web(.net framework 4.6)程序性能提升了2300%

    8. 对依赖注入的内置支持。在.NET Core中DI的核心分为两个组件:IServiceCollection和 IServiceProvider

    public void ConfigureServices(IServiceCollection services)
    {
    services.AddSingleton<IOperationSingleton, Operation>();
    // 自定义传入Guid空值
    services.AddSingleton<IOperationSingleton>(
      new Operation(Guid.Empty));
    // 自定义传入一个New的Guid
    services.AddSingleton <IOperationSingleton>(
      new Operation(Guid.NewGuid()));
    
    )
     

      

  • 相关阅读:
    python基础学习Day15 面向对象、类名称空间、对象名称空间 (2)
    python基础学习Day14 内置函数 匿名函数
    python基础学习Day12 生成器、列表推导式、字典的表达式、字典键值对的互换、集合推导式
    python基础学习Day11 函数名的应用、闭包、迭代器
    python基础学习Day10 函数形参的动态参数、*args **kwargs 命名空间 global 与 nonlocal
    python基础学习Day9 函数的初识,实参、形参、
    定时器定时循环执行和只执行一次
    CocoaPods 安装和使用
    tableView的cell之间间隔显示空白区域
    去掉tableView空白区域的分割线
  • 原文地址:https://www.cnblogs.com/hankuikui/p/9552927.html
Copyright © 2011-2022 走看看