.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/:

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

它包含三个部分:

  • 编译器(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写成的:

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

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

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

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

.Net Core开发日志——Peachpie相关推荐

  1. .NET Core开发日志——WCF Client

    WCF作为.NET Framework3.0就被引入的用于构建面向服务的框架在众多项目中发挥着重大作用.时至今日,虽然已有更新的技术可以替代它,但对于那些既存项目或产品,使用新框架重构的代价未必能找到 ...

  2. .NET Core开发日志——HttpClientFactory

    当需要向某特定URL地址发送HTTP请求并得到相应响应时,通常会用到HttpClient类.该类包含了众多有用的方法,可以满足绝大多数的需求.但是如果对其使用不当时,可能会出现意想不到的事情. 博客园 ...

  3. .NET Core开发日志——从ASP.NET Core Module到KestrelServer

    ASP.NET Core程序现在变得如同控制台(Console)程序一般,同样通过Main方法启动整个应用.而Main方法要做的事情很简单,创建一个WebHostBuilder类,调用其Build方法 ...

  4. .NET Core开发日志——Runtime IDentifier

    .NET Core对于传统.NET开发人员而言是既熟悉又陌生的新平台,所以有时遇上出乎意料的事情也纯属正常情况.这时只需点耐心,多查查资料,努力找到原因,也未尝不是件有意义的体验. 比如当建完一个最简 ...

  5. .NET Core开发日志——配置

    .NET Core开发日志--配置 原文:.NET Core开发日志--配置 熟悉ASP.NET的开发者一定对web.config文件不陌生.在ASP.NET环境中,要想添加配置参数,一般也都会在此文 ...

  6. .NET Core开发日志——RequestDelegate

    本文主要是对.NET Core开发日志--Middleware的补遗,但是会从看起来平平无奇的RequestDelegate开始叙述,所以以其作为标题,也是合情合理. RequestDelegate是 ...

  7. mysql odata_.NET Core开发日志之OData(Open Data Protocol)

    简述 OData,即Open Data Protocol,是由微软在2007年推出的一款开放协议,旨在通过简单.标准的方式创建和使用查询式及交互式RESTful API. 类库 在.NET Core中 ...

  8. .NET Core开发日志——结构化日志

    在.NET生态圈中,最早被广泛使用的日志库可能是派生自Java世界里的Apache log4net.而其后来者,莫过于NLog.Nlog与log4net相比,有一项较显著的优势,它支持结构化日志. 结 ...

  9. .NET Core开发日志——Linux版本的SQL Server

    SQL Server 2017版本已经可以在Linux系统上安装,但我在尝试.NET Core跨平台开发的时候使用的是Mac系统,所以这里记录了在Mac上安装SQL Server的过程. 最新的SQL ...

最新文章

  1. Fade 数字切换动效
  2. linux下signal()函数超详细介绍
  3. python——类和对象之__dict__属性的使用
  4. linux之网络编程ICMP校验算法
  5. 技术动态 | ACL 2019 知识图谱的全方位总结
  6. ubuntu mysql 5.7_Ubuntu 16.04 上安装 MySQL 5.7 教程
  7. Android studio 4.0 Layout Inspector查看当前Activity
  8. 学了python的感悟_初学python之感悟
  9. 音乐节奏提取matlab,音乐旋律提取算法 附可执行demo
  10. EI 和 SCI 检索号查询
  11. Word文档如何压缩
  12. PLC通过DDE通讯——基于Codesys和组态王7.5进行数据采集
  13. 计算机组成原理试题无答案,计算机组成原理试题及答案
  14. 梦幻可以在2个服务器无限转吗,梦幻西游手游:从iOS到双平台,转区竟然能转成了全服第一?...
  15. 最新多目标跟踪算法综述-2020年08月23日
  16. 金蝶新建生产领料单,单据编号不能自动填写
  17. 中科大计算机考研录取分数线_2017计算机专业学校考研难度排行榜,计算机考研难度排名...
  18. 新宜中国携手fone,踏上预算管理新征程
  19. Matlab裁剪图像
  20. NRF24L01+模块实现双向通信(带ACK payload)

热门文章

  1. 狐狸文│区块链发展的正路
  2. IOS开发CAKeyframeAnimation的基本使用与keypath的列举
  3. 第十周项目1-程序填空与阅读(一)
  4. 彻底搞定C指针-函数名与函数指针[转]
  5. Mysql 常用函数总结
  6. C++程序运行时内存布局之--无继承情况下的虚函数
  7. 使用.Net6中的System.Text.Json遇到几个常见问题及解决方案
  8. 如何评价一个开源项目——价值流网络
  9. C# 无意间写了一段线程死锁的代码
  10. 小米 华为都要造车?.NET高薪潮来了!(附招聘链接)