.Net Core开发日志——Peachpie

.Net Core的生态圈随着开源社区的力量不断注入至其中,正在变得越来越强盛,并且不时得就出现些有意思的项目,比如Peachpie,它使得PHP的代码迁移到.Net Core项目变得可能。

从创建简单的入门程序开始可以更容易地体会其特性。

首先安装Peachpie的模板:

dotnet new -i Peachpie.Templates::*

接着创建项目:

dotnet new web -lang PHP -o helloPHP

然后切换目录至Server文件夹运行程序:

cd Server
dotnet run

最后通过浏览器访问http://localhost:5004/:

640?wx_fmt=png

Peachpie的运行机制很简单,将PHP文件编译成.Net平台的dll文件,这样就可以如同普通的.Net代码库一般被其它程序调用。

640?wx_fmt=png

它包含三个部分:

  • 编译器(peach.exe或者Peachpie.NET.Sdk),将PHP文件编译成.Net程序集

  • 运行时(Peachpie.Runtime.dll),提供程序运行时所需的功能

  • 代码库(Peachpie.Library.dll),包含PHP的函数,类及其它的实现

再回到开始的入门程序代码探究一番,可以发现关键点在于Website目录下的Website.msbuildproj文件中:

<Project Sdk="Microsoft.NET.Sdk"><PropertyGroup><OutputType>Library</OutputType><TargetFramework>netstandard2.0</TargetFramework><AssemblyName>helloPHP</AssemblyName></PropertyGroup><ItemGroup><Compile Include="**/*.php" /></ItemGroup><ItemGroup><DotNetCliToolReference Include="Peachpie.Compiler.Tools" Version="0.9.0-*" /><PackageReference Include="Peachpie.NET.Sdk" Version="0.9.0-*" PrivateAssets="Build" /></ItemGroup></Project>

在Peachpie.Compiler.Tools与Peachpie.NET.Sdk两者的作用下,包含index.php文件在内的所有PHP文件都最终会被编译成一个dll文件。

用使用这个dll文件也很简单,在Startup类的Configure方法里这样调用一下:

app.UsePhp(new PhpRequestOptions(scriptAssemblyName: "helloPHP"));

运行在ASP.Net中的PHP站点便诞生了。

Peachpie项目整体还在开发阶段,但不影响其已经能完成些惊人的工作,例如,其官方网站虽是构建在WordPress上,但已经被Peachpie编译成可以在ASP.NET中运行。仅凭以下的图你一定不会想到这个网站是PHP写成的:

640?wx_fmt=png

在它的博客中可以看到关于此事的更详细信息。

如果你对PHP代码迁移到.Net平台这件事感兴趣的话,可以访问其在Github上的仓库,若是能为它添砖加瓦的话,那是再好不过了。

原文地址http://www.cnblogs.com/kenwoo/p/9270680.html

.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com

640?wx_fmt=jpeg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/320908.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

P5268-[SNOI2017]一个简单的询问【莫队】

正题 题目链接:https://www.luogu.com.cn/problem/P5268 题目大意 nnn个数的一个序列&#xff0c;定义get(l1,r1,x)get(l_1,r_1,x)get(l1​,r1​,x)表示区间[l1,r1][l_1,r_1][l1​,r1​]中有多少个xxx。 每次询问(l1,r1,l2,r2)(l_1,r_1,l_2,r_2)(l1​,r1​,l2​,r2​)求∑x∞…

图像处理作业第三次

图像处理作业第三次 1.根据书中对傅立叶变换的定义&#xff0c;证明课本165页上有关傅立叶变换的平移性质。 F(u−u0,v−v0)F(u-u_0,v-v_0)F(u−u0​,v−v0​) ∑x0M−1∑y0N−1f(x,y)e−j2π((u−u0)x/M(v−v0)y/N)\sum_{x0}^{M-1}\sum_{y0}^{N-1}f(x,y)e^{-j2\pi((u-u_0)x/M…

初一模拟赛(4.20)

成绩&#xff1a; rankrankranknamenamenamescorescorescoreT1T1T1T2T2T2T3T3T3T4T4T4111lyflyflyf400400400100100100100100100100100100100100100222wjjwjjwjj310310310100100100100100100100100100101010333hkyhkyhky300300300100100100100100100100100100000333cyzcyzcyz30…

.NET Core开发日志——Middleware

熟悉ASP.NET架构的开发者一定对于HTTP Modules与HTTP Handlers不陌生。两者的作用主要是对网络请求执行特定的处理工作。而在.NET Core中&#xff0c;它们都被Middleware(中件间)取代了。之前的Http Modules和HTTP Handlers是如下图般处理请求的&#xff1a;现在变成了这样&…

P3850-[TJOI2007]书架【Splay】

正题 题目链接:https://www.luogu.com.cn/problem/P3850 题目大意 一个书架上有nnn本书&#xff0c;进行mmm次插入操作&#xff0c;然后qqq次询问一个位置上的书。 解题思路 用SplaySplaySplay进行插入操作&#xff0c;然后直接查询即可 codecodecode #include<cstdio&g…

【并查集】家族 (ssl 1896)

家族 ssl 1896 题目大意&#xff1a; 合并一些集合&#xff0c;然后判断某两个点是否在同一个集合内 原题&#xff1a; 题目描述 若某个家族人员过于庞大&#xff0c;要判断两个是否是亲戚&#xff0c;确实还很不容易&#xff0c;现在给出某个亲戚关系图&#xff0c;求任…

模式识别作业

模式识别作业 1.说明判别分类器(如logistic回归)与上述特定类别的高斯朴素贝叶斯分类器之间的关系正是logistic回归所采用的形式。 经过第2问更加普遍的推导过程&#xff1a; 对应参数为&#xff1a; 二次项&#xff1a; v[σ112−σ1022σ112σ102,...,σD12−σD022σD12…

Identity Server 4 - Hybrid Flow - Claims

前一篇 Identity Server 4 - Hybrid Flow - MVC客户端身份验证: https://www.cnblogs.com/cgzl/p/9253667.htmlClaims我不知道怎么样翻译这个词比较好, 所以我一般就不翻译了.在前一篇文章里, MVC客户端配置身份认证的时候有这么一句话(Startup的ConfigureServices):JwtSecurit…

图像处理作业第7次

图像处理作业第7次 1.请根据课本中Z变换的定义&#xff0c;证明如下结论。 (1)若x(n)x(n)x(n)的ZZZ变换为X(z)X(z)X(z)&#xff0c;则(−1)nx(n)(-1)^nx(n)(−1)nx(n)的ZZZ变换为X(−z)X(-z)X(−z) 根据ZZZ变换的定义 X(z)∑x(n)z−n,∑(−1)nx(n)z−n∑x(n)(−z)−nX(−z)X(z…

【prim】【最小生成树】最优布线问题(ssl 1612)

最优布线问题 ssl 1612 题目大意&#xff1a; 求最小生成树 原题&#xff1a; 题目描述 学校有n台计算机&#xff0c;为了方便数据传输&#xff0c;现要将它们用数据线连接起来。两台计算机被连接是指它们之间有数据线连接。由于计算机所处的位置不同&#xff0c;因此不同…

P5304-[GXOI/GZOI2019]旅行者【最短路】

正题 题目链接:https://www.luogu.com.cn/problem/P5304 题目大意 nnn个点mmm条边的一张有向图&#xff0c;有kkk个关键点&#xff0c;求距离最短的一对关键点。 解题思路 我们能够O(nlog⁡n)O(n\log n)O(nlogn)的进行一个起点或多个起点同时的最短路&#xff0c;但是这题显然…

微软宣布ASP.NET Core 2.0正式支持OData标准

近日&#xff0c;OData 团队在微软开发者博客上宣布&#xff0c;ASP.NET Core 2.0 已正式支持 OData 标准&#xff0c;开发者现在可通过包管理器 NuGet 来获取 Microsoft.AspNetCore.OData 包。此软件包包含在使用 ASP.NET Core MVC 时创建 OData v4.0 端点以及支持 Web API 的…

P2710-数列【Splay】

正题 题目链接:https://www.luogu.com.cn/problem/P2710 题目大意 nnn个数&#xff0c;mmm次操作要求支持 插入若干个数删除某个位置开始的连续若干个数翻转一个区间修改一个区间为ttt求区间和输出一个位置的值询问一个区间的最大子段和 解题思路 用SplaySplaySplay维护&…

【并查集】【图论】【最小生成树】剑鱼行动(ssl 1618)

剑鱼行动 ssl 1618 题目大意&#xff1a; 求一个平面直角坐标系中的最小生成树 原题&#xff1a; 题目描述 给出N个点的坐标&#xff0c;对它们建立一个最小生成树&#xff0c;代价就是连接它们的路径的长度&#xff0c;现要求总长度最小。N的值在100以内&#xff0c;坐标…

图像处理作业4

图像处理作业4 1. 第二版课本习题4.21 本质没有区别&#xff0c;只将图片放置在中心&#xff0c;而周围填充0的个数不变时&#xff0c;不会影响结果。因为本质都是进行了周期延拓&#xff0c;使得尾部的信息不会被丢弃掉。相当于滤波前将图像进行了平移。需要注意的是&#x…

[译]ASP.NET Core Web API 中使用Oracle数据库和Dapper看这篇就够了

园子里关于ASP.NET Core Web API的教程很多&#xff0c;但大多都是使用EFMysql或者EFMSSQL的文章。甚至关于ASP.NET Core Web API中使用DapperMysql组合的文章都很少&#xff0c;更别提OracelDapper组合的文章了&#xff0c;那么今天就带着大家一起翻译一篇国外大牛写的关于ASP…

一个c#开发的web绘流系统

本项目为Web版流程图绘图&#xff0c;兼容IE、FF、Chrome等各主流浏览器&#xff0c;提供了各类基础图形&#xff0c;至于如何应用及用来做什么就随各位了&#xff0c;常规的流程图及逻辑辅助、工作流等皆可胜任。本系统虽为开源项目&#xff0c;然精心调配开发测试&#xff0c…

【二进制】17倍

17倍 题目大意&#xff1a; 有一个二进制数&#xff0c;求它的17倍 原题: 题目描述&#xff1a; 在了解做软件开发可能赚很多的钱之后&#xff0c;农夫约翰也开了一家小的软件公司为客户写程序。约翰的第一个任务对他来说看起来相当简单&#xff1a;输入一个数N&#xff0…

图像处理作业第五次

第5次图像处理作业 1. 复习理解课本中最佳陷波滤波器进行图像恢复的过程&#xff0c;请推导出w(x,y)最优解的计算过程. 根据公式: σ21(2a1)(2b1)∑∑[g−wη−(gˉ−wηˉ)]2\sigma ^2 \frac{1}{(2a1)(2b1)}\sum\sum[g-w\eta - (\bar g-w\bar\eta)]^2σ2(2a1)(2b1)1​∑∑[g…

2020牛客国庆集训派对day8G-Shuffle Cards【Splay】

正题 题目链接:https://ac.nowcoder.com/acm/contest/7865/G 题目大意 nnn个数从1∼n1\sim n1∼n&#xff0c;mmm次拿出其中一段放到头部&#xff0c;求最终序列。 解题思路 用SplaySplaySplay拿出一段区间然后丢到头部就好了。 时间复杂度O(nlog⁡n)O(n\log n)O(nlogn) cod…