当前位置: 首页 > news >正文

企业网站新模式网站建设专有名词

企业网站新模式,网站建设专有名词,网站被收录的过程,常见的网络营销方法有哪些ASP.NET Core设计初衷是开源跨平台、高性能Web服务器#xff0c;其中跨平台特性较早期ASP.NET是一个显著的飞跃#xff0c;.NET现可以理直气壮与JAVA同台竞技#xff0c;而ASP.NET Core的高性能特性更是成为致胜法宝。ASP.NET Core 2.1为IIS托管新增In-Process模型并作为默认… ASP.NET Core设计初衷是开源跨平台、高性能Web服务器其中跨平台特性较早期ASP.NET是一个显著的飞跃.NET现可以理直气壮与JAVA同台竞技而ASP.NET Core的高性能特性更是成为致胜法宝。ASP.NET Core 2.1为IIS托管新增In-Process模型并作为默认选项使用IISHttpServer替代了Kestreldotnet程序由IIS网站进程w3wp.exe内部托管。为展示ASP.NET Core跨平台特性本文重点着墨经典的Out-Process托管模型。宏观设计为解耦平台web服务器差异程序内置Http服务组件Kestrel由web服务器转发请求到Kestrel。老牌web服务器定位成反向代理服务器转发请求到ASP.NET Core程序分别由IIS ASP.NET Core Module和Nginx负责常规代理服务器只用于代理内部主机对外网的连接需求一般不支持外部对内部网络的访问请求 当一个代理服务器能够代理外部网络的主机访问内部网络这种代理服务器被称为反向代理服务器 。平台web代理服务器、ASP.NET Core程序(dotnet.exe) 均为独立进程平台自行决定互动细节只需确保平台web服务器与Kestrel形成Http通信。Kestrel与老牌web服务器解耦实现跨平台部署。Kestrel使ASP.NET Core具备了基本web服务器的能力在内网部署和开发环境完全可使用dotnet.exe自宿模式运行。Kestrel定位是Http服务组件实力还比不上老牌web服务器在timeout机制、web缓存、响应压缩等不占优势在安全性等方面还有缺陷。因此在生产环境中必须使用老牌web服务器反向代理请求。跨平台管控程序转发请求要实现企业级稳定部署*nix平台将ASP.NET Core程序以dotnet.exe自宿模式运行并配置为系统守护进程管控应用再由Nginx转发请求。以下使用systemd创建进程服务文件 /etc/systemd/system/kestrel-eqidproxyserver.service[Unit] DescriptionEqidProxyServer deploy on centos[Service] WorkingDirectory/var/www/eqidproxyserver/eqidproxyServer ExecStart/usr/bin/dotnet /var/www/eqidproxyserver/eqidproxyServer/EqidProxyServer.dll Restartalways # Restart service after 10 seconds if the dotnet service crashes: RestartSec10 TimeoutStopSec90 KillSignalSIGINT SyslogIdentifierdotnet-example Userroot EnvironmentASPNETCORE_ENVIRONMENTProduction EnvironmentDOTNET_PRINT_TELEMETRY_MESSAGEfalse[Install] WantedBymulti-user.target // 启用服务在localhost:5000端口侦听请求 sudo systemctl enable kestrel-eqidproxyserver.service    安装Nginx并配置Nginx转发请求到localhost:5000:server {listen 80;server_name default_website;root /usr/share/nginx/html;# Load configuration files for the default server block.include /etc/nginx/default.d/*.conf;location / {proxy_pass http://localhost:5000;proxy_http_version 1.1;proxy_set_header Upgrade $http_upgrade;proxy_set_header Connection keep-alive;proxy_set_header Host $host;proxy_cache_bypass $http_upgrade;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;}} Windows平台[ 管控应用、转发请求] 由ASP.NET Core Module(插入在IIS Pipeline中的原生组件下面简称ACM)一手操办w3wp.exe、dotnet.exe的互动关系是通过父子进程维系。下图脚本力证dotnet.exe进程是w3wp.exe创建出来的子进程得益此关系ACM在创建dotnet.exe子进程时能指定环境变量约定donet.exe接收IIS转发的请求的侦听端口。实际源码看ACM为子进程设定三个重要的环境变量ASPNETCORE_PORT   约定 Kestrel将会在此端口上监听ASPNETCORE_APPL_PATHASPNETCORE_TOKEN   约定 携带该Token的请求为合法的转发请求与ACM夫唱妇随的是UseIISIntegration()扩展方法完成如下工作① 启动Kestrel服务在http://localhost:{ASPNETCORE_PORT}上监听② 根据 {ASPNETCORE_TOKEN} 检查请求是否来自ACM转发ACM转发的请求会携带名为MS-ASPNETCORE-TOKEN:******的Request Header,以便dotnet.exe对比研判。③ 利用ForwardedHeaderMiddleware中间件保存原始请求信息linux平台部署需要手动启用ForwardedHeader middleware https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/proxy-load-balancer?viewaspnetcore-3.1源码快速验证namespace Microsoft.AspNetCore.Hosting {public static class WebHostBuilderIISExtensions{// These are defined as ASPNETCORE_ environment variables by IISs AspNetCoreModule.private static readonly string ServerPort PORT;private static readonly string ServerPath APPL_PATH;private static readonly string PairingToken TOKEN;private static readonly string IISAuth IIS_HTTPAUTH;private static readonly string IISWebSockets IIS_WEBSOCKETS_SUPPORTED;/// summary/// Configures the port and base path the server should listen on when running behind AspNetCoreModule./// The app will also be configured to capture startup errors.public static IWebHostBuilder UseIISIntegration(this IWebHostBuilder hostBuilder){var port hostBuilder.GetSetting(ServerPort) ?? Environment.GetEnvironmentVariable($ASPNETCORE_{ServerPort});var path hostBuilder.GetSetting(ServerPath) ?? Environment.GetEnvironmentVariable($ASPNETCORE_{ServerPath});var pairingToken hostBuilder.GetSetting(PairingToken) ?? Environment.GetEnvironmentVariable($ASPNETCORE_{PairingToken});var iisAuth hostBuilder.GetSetting(IISAuth) ?? Environment.GetEnvironmentVariable($ASPNETCORE_{IISAuth});var websocketsSupported hostBuilder.GetSetting(IISWebSockets) ?? Environment.GetEnvironmentVariable($ASPNETCORE_{IISWebSockets});bool isWebSocketsSupported;if (!bool.TryParse(websocketsSupported, out isWebSocketsSupported)){// If the websocket support variable is not set, we will always fallback to assuming websockets are enabled.isWebSocketsSupported (Environment.OSVersion.Version new Version(6, 2));}if (!string.IsNullOrEmpty(port) !string.IsNullOrEmpty(path) !string.IsNullOrEmpty(pairingToken)){// Set flag to prevent double service configurationhostBuilder.UseSetting(nameof(UseIISIntegration), true.ToString());var enableAuth false;if (string.IsNullOrEmpty(iisAuth)){// back compat with older ANCM versionsenableAuth true;}else{// Lightup a new ANCM variable that tells us if auth is enabled.foreach (var authType in iisAuth.Split(new[] { ; }, StringSplitOptions.RemoveEmptyEntries)){if (!string.Equals(authType, anonymous, StringComparison.OrdinalIgnoreCase)){enableAuth true;break;}}}var address http://127.0.0.1: port;hostBuilder.CaptureStartupErrors(true);hostBuilder.ConfigureServices(services {// Delay register the url so users dont accidentally overwrite it.hostBuilder.UseSetting(WebHostDefaults.ServerUrlsKey, address);hostBuilder.PreferHostingUrls(true);services.AddSingletonIServerIntegratedAuth(_ new ServerIntegratedAuth(){IsEnabled enableAuth,AuthenticationScheme IISDefaults.AuthenticationScheme});services.AddSingletonIStartupFilter(new IISSetupFilter(pairingToken, new PathString(path), isWebSocketsSupported));services.ConfigureForwardedHeadersOptions(options {options.ForwardedHeaders ForwardedHeaders.XForwardedFor | ForwardedHeaders.XForwardedProto;});services.ConfigureIISOptions(options {options.ForwardWindowsAuthentication enableAuth;});services.AddAuthenticationCore();});}return hostBuilder;}} } 总结 ASP.NET Core跨平台的核心在于 程序内置Kestrel HTTP通信组件解耦web服务器差异依平台特性约定Http通信细节。本文从框架设计初衷、进程模型、组件交互验证我对ASP.NET Core跨平台特性的理解。 CentOS上部署ASP.NET Core完整版请参考https://www.cnblogs.com/JulianHuang/p/10455644.html往期精选AspNetCore结合Redis实践消息队列TPL Dataflow组件应对高并发,低延迟要求AspNetCore应用注意这一点CTO会对你刮目相看实例解读Docker Swarm
http://www.sadfv.cn/news/201012/

相关文章:

  • 哪些网站可以用来做百科参考徐州网站开发
  • 网站实现功能网站被墙 做301跳转
  • 在百度上做公司做网站二级网站建设标准
  • 网站建设的市场调研呼和浩特网站优化
  • 2017酷站推荐网站秦皇岛市是几线城市
  • 静态网站 站内搜索修改wordpress的权限设置方法
  • 鼓楼机关建设网站爱站关键词挖掘查询工具
  • 请人做网站得多少钱wordpress comments
  • 海南城乡建设厅网站菜单制作软件app
  • 万网主机 建网站负责网站的建设规划
  • 广州市增城区建设局网站丹东公司做网站
  • 网站项目建设与管理论文河南省建筑工程网
  • 网站建设模板之家免费下载网站默认网站名
  • 网站开发运营推广叫什么深圳科陆电子有限公司官网
  • 视频网站如何做营销策划图片编辑软件手机版
  • 5173网站源码适合大学生做的兼职网站有哪些
  • 华为云速建站模板创建网站的费用
  • 绵阳网站关键字优化手机微信打开文件是乱码
  • 手机怎么建网站付网站建设服务费记账
  • 天河区门户网站教育局东莞seoseo关键词排名优化
  • 免费做印章的网站ps企业站网站做多大的
  • 帝国cms做英文网站西安地区专业做网站公司
  • 做企业网站需要注意哪些免费网站制作申请
  • 郑州手机网站推广外包做一个代驾app需要多少钱
  • 免费建个人网站步骤wordpress ios7
  • 网站模板放哪西峰网站建设
  • 如何做网站的内容网站建设桔子科技
  • 网站推广的优点网站开发的职位要求
  • 深圳租赁住房和建设局网站成功的门户网站
  • 山西响应式网站建设推荐网站建设 php jsp .net