代码改变世界

.NetCore/ .NetFramework 机制

2019-12-18 16:22  qgbo  阅读(671)  评论(0编辑  收藏  举报

1.每来一个请求,会启动一个线程。 可以通过下面代码打印出来。

这个线程是主线程,如果用异步,会等待异步线程执行完毕才会返回。

这有个现象,用stmp 发邮件的时候,即使用异步,也会比较卡(选用的邮件服务器性能有限,Stmp 的异步机制有问题),这种情况,可能需要用一个线程和一个队列来专一发邮件。

public async Task<string> Index()
{
await myTask();
var t= Thread.CurrentThread.ManagedThreadId.ToString();
return "当前线程ID: "+t;
}


private async Task myTask()
{
await Task.Run(()=>Thread.Sleep(3000));
}

2.新建。netFrameWork 项目。

public string Index()
        {
            ViewBag.Title = "Home Page";
           // 获取新的 Process 组件并将其与当前活动的进程关联的主模块的完整路径,包含文件名(进程名)。
            string str2 = System.Diagnostics.Process.GetCurrentProcess().MainModule.FileName;
            return str2;
        }

  如果是VS调试,显示的是         C:\Program Files (x86)\IIS Express\iisexpress.exe

       如果是部署在IIS 上,显示的是  c:\windows\system32\inetsrv\w3wp.exe

3. 新建.netcore web 项目。会有

WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>().Build().Run(); 这样的代码。我们查看源码,WebHost 这个类,是 Microsoft.AspNetCore.2.2.0\lib\netstandard2.0\Microsoft.AspNetCore.dll 这个下的,这个是netstandard2.0,也就是说是独立的,更底层的东西。

那我们新建 .NetframeWork 控制台(4.5 以上 才实现netstandard2.0), 把这几句拷过去,也启动了网站。