使用するNet CoreコンソールはASPをシミュレートする.Net Coreのパイプモデル
2781 ワード
私の前のいくつかの文章でaspに下がりました.Netcoreのパイプモデルは、aspをより明確に理解するために.Netcoreのパイプ、またネットで勉強しました.Net Coreコンソールアプリケーションは、イメージを深めるとともに、学習の参考になります.
まず、コンソールアプリケーションを新規作成します.注意は.Net Coreのコンソールアプリケーション.
次に、新しいContextクラスを作成し、ASPをシミュレートします.Netcoreのcontextクラスを作成し、ContextクラスにWriteメソッドを追加します.
次にRequestDelegateクラスを新規作成し、クラスにRequestdelegateの依頼を宣言します.
このRequestDelegateはContextタイプの値を受信し、Taskタイプを返します.
そして、Pragrameに戻ります.csクラスでは、
各(ミドルウェア)が保存されているListを追加します.
Useメソッドを追加します.
再ASP.NET Coreアプリケーションでは、よくStartupをします.csのConfigではappを用いる.Use()メソッドは,ここでのUse()がそのappを模倣する.Use()の方法.Use()の方法には、RequestDelegate転送であり、RequestDelegateの依頼である転送タイプを追加する方法があることが知られています.この依頼は、私たちがよく呼ばれるミドルウェアです.
そしてMainメソッドに戻ります.
実行結果を確認します.
これがASPです.Netcoreのパイプモデルの基本原理.
まず、コンソールアプリケーションを新規作成します.注意は.Net Coreのコンソールアプリケーション.
次に、新しいContextクラスを作成し、ASPをシミュレートします.Netcoreのcontextクラスを作成し、ContextクラスにWriteメソッドを追加します.
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks.Dataflow;
namespace MyPipleLine
{
public class Context
{
public void Write(string msg)
{
Console.WriteLine(msg);
}
}
}
次にRequestDelegateクラスを新規作成し、クラスにRequestdelegateの依頼を宣言します.
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
namespace MyPipleLine
{
public delegate Task RequestDelegate(Context context);
}
このRequestDelegateはContextタイプの値を受信し、Taskタイプを返します.
そして、Pragrameに戻ります.csクラスでは、
各(ミドルウェア)が保存されているListを追加します.
public static List> _list = new List>();
Useメソッドを追加します.
public static void Use(Func middleWare)
{
_list.Add(middleWare);
}
再ASP.NET Coreアプリケーションでは、よくStartupをします.csのConfigではappを用いる.Use()メソッドは,ここでのUse()がそのappを模倣する.Use()の方法.Use()の方法には、RequestDelegate転送であり、RequestDelegateの依頼である転送タイプを追加する方法があることが知られています.この依頼は、私たちがよく呼ばれるミドルウェアです.
そしてMainメソッドに戻ります.
static void Main(string[] args)
{
Use(next => // Use RequestDelegate, RequestDelegate lambda ,
{
return context =>
{
context.Write("1"); // context 。
return next.Invoke(context); //
};
});
Use(next =>
{
return context => //
{
context.Write("2");
return next.Invoke(context);
};
});
_list.Reverse(); // _list , , , 。
RequestDelegate end = (context) =>
{
context.Write("end");
return Task.CompletedTask;
};
foreach (var middleware in _list)
{
end = middleware.Invoke(end); // _list “ ” end 。
}
end.Invoke(new Context()); // end
Console.ReadLine();
}
実行結果を確認します.
これがASPです.Netcoreのパイプモデルの基本原理.