用powershell开发跨平台动态网页

powershell 动态 网页 跨平台 asp.net dynamic cross platform

powershell 传教士 原创文章。始于 2023-04-03 允许转载,但必须保留名字和出处

---【前言】---

以【vbs,和微软jsript】为核心的asp已经淘汰了。ie11后来都不支持网页内嵌vbs了。
asp前后端不分离,jscript非正宗javascript标准,导致兼容性不佳。又没有大厂支持,连微软都不支持了。
asp可以被理解为【瘸腿的沙发,废弃的破烂,没元件件可更换的坏相机】

 

从.net跨平台那天起,asp.net就能开发跨平台动态网页。在asp.net中执行powershell代码也是早就有的,但那需要写c#代码。
在微软眼中,用c#写asp.net永远是正宫。他们不会主流去支持【用ps做动态网页开发语言】。
但我们玩powershell的是想以ps为主。我们不会用,也不想用c#去开发网站后台。

看到python家开发动态网站,我是有些羡慕嫉妒恨的。不过这种情况结束了。近期和外国同行讨论,一起研究出了示例代码。p老爷的这条瘸腿被接上了!!!

 

本例将为您展示:
1 在win,linux版powershell v7.3中,用powershell加载win,linux版asp.net库。
2 用powershell动态返回一个值,交给前端javascript去美化,去渲染页面。
------ 用纯powershell脚本&代码作为网页动态语言的例子。

---【图例:全部脚本代码,和相关库】---

 用powershell开发跨平台动态网页

 

https://gitee.com/chuanjiao10/kasini3000web

在win中运行服务器,并使用chrome浏览器测试通过。
在linux中运行服务器,并使用curl测试通过。

---【正文】---

 

使用场景:
* 运维,管理员用的中小型网站,dashboard。
* 按某按钮后,用powershell代码,加win语音库,朗读中英文文字,单词。
* 展示表格。
* 输入某些值,并用后台powershell,调用数据库客户端,把刚才的数据,写入单机库sqlite,litedb,excel文件,mysql库,sqlserver,etcd库等。
* powershell调用公有云命令行,私有云命令行,建立删除云虚拟机。网络。
* powershell调用ad,exchange,管理账户,邮箱,dns等。

案例:
目前我用它开发kasini3000的web框架。
框架还没开始,目前只是简陋的例子,勿喷。

系统需求:
powershell v7.3.x。
目前暂时只支持这个版本,因为asp.net类库我目前下载的都是.net7版本的。
未来绝对会升级到.net8的,届时需要使用powershell v7.4.x,以便ps版本和.net类库版本一致。

 

------------------【开始讲解例子】------------------

 

1 制作首页。首页上有个web form,上面有个post方法的按钮。html代码:

<form action="/getdate/" method="post">
<input type="submit" name="Logon" value="按此" />

 

2 首页,powershell代码:

$主页代码 = {
    param($HttpContext,$pagefile2)
    $pindex = Get-Content -Path $pagefile2 -Raw
    $a = [System.Text.Encoding]::UTF8.GetBytes($pindex)
    $HttpContext.Response.Body.WriteAsync($a, 0, $a.Length).AsTask().Wait()
}
$主页委托 = [powerShellDelegate]::new($主页代码,'index.html')

 

 

3 get-date命令,powershell代码:

$获取时间代码 = {
    param($HttpContext)
    $d = Get-Date -Format F
    $a = [System.Text.Encoding]::GetEncoding(936).GetBytes($d)
    $HttpContext.Response.Body.WriteAsync($a, 0, $a.Length).AsTask().Wait()
}
$获取时间委托 = [powerShellDelegate]::new($获取时间代码,'')

 

4 把首页添加到路由。把get-date命令,添加到路由【/getdate】。
注意:首页是get方法,get-date是post方法。powershell代码:

[Void][Microsoft.AspNetCore.Builder.EndpointRoutingApplicationBuilderExtensions]::UseEndpoints($App, { [Microsoft.AspNetCore.Builder.EndpointRouteBuilderExtensions]::MapGet($args[0],"/", $主页委托.Invoke) })
[Void][Microsoft.AspNetCore.Builder.EndpointRoutingApplicationBuilderExtensions]::UseEndpoints($App, { [Microsoft.AspNetCore.Builder.EndpointRouteBuilderExtensions]::MapPost($args[0],"/getdate/", $获取时间委托.Invoke) })

 

---【后记】---

当然,你还可以这样: 写一个d:\xxx\a.ps1作为回调脚本。
当每次访问http://127.0.0.1:5000/a 时, 执行此脚本。

我脑子中只有一件事:替“潘而少”老爷把,【网页动态语言】这条瘸腿接上。

-完-

原文链接:https://www.cnblogs.com/piapia/p/17293828.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:用powershell开发跨平台动态网页 - Python技术站

(0)
上一篇 2023年4月18日
下一篇 2023年4月18日

相关文章

  • 详解C#泛型的类型参数约束

    下面就是详解C#泛型的类型参数约束的完整攻略。 1. 概述 C#中,泛型使得开发人员可以编写更为通用的代码,而泛型的核心就是类型参数。C#中提供了类型参数约束,能够帮助我们更好地掌控类型参数的范围。 类型参数约束是指,在定义泛型类型或泛型方法时,可以使用关键字”where”来确定类型参数的限制条件。它可以确保泛型类型或泛型方法只能接受特定类型的参数。 2. …

    C# 2023年6月7日
    00
  • C#实现根据图片的链接地址获取图片的后缀名

    当我们给很多图片命名时,我们通常会使用图片的结尾部分作为图片的后缀名。因此,获取图片的后缀名是一项非常常见的任务。在C#中,我们可以通过一定的代码实现获取图片的后缀名。 首先,我们需要明确一下目标:根据图片的链接地址获取图片的后缀名。这个目标可以分解为以下几个步骤: 从链接地址中获取图片的文件名; 将文件名转换成小写形式; 从文件名中获取后缀名。 以下是详细…

    C# 2023年6月1日
    00
  • ASP.NET Core MVC中的布局(Layout)

    ASP.NET Core MVC中的布局(Layout) 在ASP.NET Core MVC中,布局(Layout)是一种用于定义网站外观和结构的机制。布局可以包含网站的共同元素,例如页眉、页脚和导航栏。本攻略将详细介绍ASP.NET Core MVC中的布局,包括如何创建布局、如何使用布局以及如何在布局中使用视图组件。 创建布局 在ASP.NET Core…

    C# 2023年5月17日
    00
  • C#执行Javascript代码的几种方法总结

    C#执行JavaScript代码的几种方法总结 在C#代码中执行JavaScript代码是非常有用的操作,本文将介绍C#执行JavaScript代码的几种方法,以及各种方法的优缺点和应用场景。 方法一:WebBrowser控件 WebBrowser控件是一个基于IE内核的控件,可以解析和渲染HTML文档,同时支持JavaScript代码的执行。可以通过在C#…

    C# 2023年5月15日
    00
  • C#中BitConverter.ToUInt16()和BitConverter.ToString()的简单使用

    C# 中的 BitConverter 类有两个十分常用的方法,分别是 ToUInt16 和 ToString。下面将分别介绍它们的简单使用。 BitConverter.ToUInt16() BitConverter.ToUInt16() 方法用于将指定字节数组中的一个或两个连续字节转换为 16 位无符号整数。以下是其方法签名: public static u…

    C# 2023年6月8日
    00
  • ASP.NET 实现验证码以及刷新验证码的小例子

    ASP.NET 是一种基于微软 .NET 框架的Web开发技术,其中验证功能是Web开发过程中非常重要的一部分,其作用是防止恶意攻击和不良行为。而验证码(Captcha)就是一种常见的验证方式,通过输出一些图形内容或者文字内容让用户识别并输入,从而检查用户身份。 ASP.NET 的验证码实现步骤: 1.在后端代码中生成随机数,并保存到Session中: st…

    C# 2023年5月31日
    00
  • C#中Dapper的使用教程

    下面就为大家详细讲解一下 C# 中 Dapper 的使用教程。 什么是 Dapper? Dapper 是一个轻量级 ORM(Object Relational Mapping)框架。它为 SQL Server、MySQL、Oracle 和 PostgreSQL 提供了一套高效处理 SQL 语句的方法。它采用 Object 与关系数据库之间的映射模型,使开发人…

    C# 2023年5月31日
    00
  • JQuyer $.post 与 $.ajax 访问WCF ajax service 时的问题需要注意的地方

    在使用jQuery的$.post和$.ajax方法访问WCF ajax服务时,需要注意以下几个问题: 跨域访问问题 由于浏览器的同源策略,如果WCF ajax服务和jQuery代码不在同一个域中,就会出现跨域访问问题。为了解决这个问题,可以在WCF ajax服务中添加CORS(跨域资源共享)支持,或者使用JSONP(JSON with Padding)技术。…

    C# 2023年5月15日
    00
合作推广
合作推广
分享本页
返回顶部