发布wordpress for .net monosys,及monosys带来的更好的虚机+paas选型

简介: 关键字:wordpress dotnet,phalanger wordpress,phalanger on mono,mono xsp4 hang,mono xsp4 didnt response,asp.net空间当主机用,asp.net空间上安装新语言, web空间走socket/websocket,web空间部署c/s服务器程序,跨bs/cs。

关键字:wordpress dotnet,phalanger wordpress,phalanger on mono,mono xsp4 hang,mono xsp4 didnt response,asp.net空间当主机用,asp.net空间上安装新语言, web空间走socket/websocket,web空间部署c/s服务器程序,跨bs/cs。

在上一篇《monosys as 1ddlang + 1ddcodebase》中,我们谈到phalanger是mono下对php5.4规范的实现,本文将接着那文的技术介绍如何将php和php应用融入monosys,及继续进一步探讨mono下绿化应用,免.net打包的问题:

php for monosys : phalanger

为什么php总是一种不可或缺的语言呢?实际上它也的确得到了广泛的应用。

因为php是最接近C系语法的,如果没有python,且php一开始的定位是一门系统脚本语言的话,那么或许由c++转通用动态脚本最早的那批应该转的是php。而且它在发布级别的现代语言特性:考虑进并支持了组件,— 这点无一不与delphi一脉相承。。然而组件始终是单语言内二进制级的复用手段 — 它没有像.net组件一样的跨语言性。当然,不止php,其它native版本cruntime backends的langsys其缺陷其实还有更多。。

所以,php显然需要更进一步,比如将它加进一体化后端的mono中,使之真正成为多语言生态中的一员,可以免binding进行多语言融合开发。使之更为强大。这是生态各自为政的单语言无法比较得到的。

phalanger即是这样一种方案,并保持了与zend c php的高度兼容。甚至可以最小修地运行wordpress.

绿化的monodeveloper下编译phalanger wordpress,及部署到asp.net和xps4下

首先是编译,选用的源码版本是github上Phalanger-920e736fff73350757cbbe41bba4a97d8196ff62,wp版本是WpDotNet-4.6.1_Alpha,通过上文中绿色monodevloper.bat启动的IDE即是默认以mono-3.12.0-gtksharp-2.12.26-win32-1为编译后端的IDE环境,这套源码组合在.net4和mono3.12下都能进行编译,在asp.net4+iis下和xsp4下都能运行,但是虽然.mono跟.net宣称高度兼容,(你还要是编译时运行时/sdk并非程序要发布到运行的目标.net/mono版本)

mono 2.8之后实现了完全的.net4.0,自 Mono 1.9 以来,ASP.Net 也能通过 Mono 的 fastcgi-mono-server2 在 FastCGI 下运行了,我发现很奇怪的一点: 它们各各在内部门的版本不兼容,比如.net4,.net4.5只是高度兼容,如果你的程序在.net4下编译,发布到.net4.5不一定能运行。同样地,mono内部高低版本也不甚兼容。但是同版本的它们在外部99%兼容,以下是使用IDE编译需要注意的地方:

0,仅需要生成三个文件,即phpnetcore,phpnetparsers,phpnetclasslibary,phpnetmysql(源码中的MySql.Data.dll默认的6.4.7.7不行要换成6.4.4.0否则运行数据库一直无法连接但用探针链接是可以的),wpdotnet.dll

1,工程文件中的改动:
去掉project options中use msbuild build engine及compiler ignore warnings非数字的字母(或整个去掉)

2,源码文件中的改动(处理运行时会出现的phalangerversion exception):
SourceCoreScriptContext.CLR.cs:

_constants.Add(“PHALANGER”, “4”, false);
SourceCoreHttpHeaders.CLR.cs:
private static readonly string/*!*/PoweredByHeader = “phalanger” + ” ” + “4”;

我以为仅改动各dll的AssemblyFileVersion为4.0.0.0但是不行

3,运行时会提示找不到assembly载入异常等,配置文件web.config:

PhpNetCore, Version=0.0.0.0
<add assembly=”PhpNetClassLibrary, Version=0.0.0.0, Culture=neutral, PublicKeyToken=4af37afe3cde05fb” section=”bcl” />

其它不用改成0.0.0.0

当运行时为.net4时,且发布到asp.net下这没有什么可讲的了,结果也算在预期之内,也没有什么要注意的地方,基于生成的wordpress能正常运行,就是wordpress上传附件什么的你可能需要除mysql外再额外编译一个gd2扩展。

如果放在mono runtime下运行情况就复杂多了,让mono xps运行编译结果phalanger wordpress的过程和处理方法:

要放到mono中,把下面注释去掉

<!– <httpHandlers>
<add path=”*.php” verb=”*” type=”PHP.Core.RequestHandler, PhpNetCore, Version=0.0.0.0, Culture=neutral, PublicKeyToken=0a8e8c4c76728c71″ />
</httpHandlers> –>

下面的问题尤其严重:

没有现成的可用的xsp4和mono-fastcgi让你用,mono-3.12.0-gtksharp-2.12.26-win32-1中的xsp4是运行不起来的,打开localhost:8080一直不响应用,官方mono repos->windows installer中全是有问题的,会出现不响应的情况,google半天也没好方案。

说实话我也没能鼓起勇气从源码编译mono的xsp支持。我选择的是mono-3.0.2-gtksharp-2.12.11-win32-0,它能运行起编译后的wordpress,不过小问题还是有的:虽然wordpress即使能运行,但是各种小问题(比如卡卡的,后台能打开,前台不能,贴子永久链能打开,主页不能)都存在。换言之,这个wp如果不需要经常动它,跟zend php下的wp是基本一样的,但是需要二次开发的话,还是需要处理一些大或小的问题的。

.net空间 vs 传统单语言虚机空间或paas的优势

一般的虚机服务商会推出二个平台,windows配置.net/iis,而linux配置php/apache等,但在虚机选型方面,其实我觉得与windows系列.net空间相比,linux系应该全系java,然后jphp,jpython,这才是二个平衡的对比。

可自定语言及扩展:

因为.net,jvm有统一后端特性可作http request handler。虚机也就有了用户扩展性,可以组件方式以放置方式安装新语言,不需要获取虚机所在root,自己为语言编译扩展。以支持新程序或新应用特性。

而其实有了jvm,clr这样的后端,传统直接架构在机器环境上的php程序,反而会因为经过预编译之后,变得更快,打包成组件之后,也不需要iconcube这样的加密工具。不直接调用原生DLL,也会少一点内存泄漏。
vs 全功能云主机相比的优势:

如果是.net4.5,支持websocket长链接程序或异步web程序,可以开一个端口,那么基本这个空间算是“小云主机”,“容器”,可以像集成语言一样,将socket/websocket网络支持部件和cs服务器部件也集进来呢,做成真正的跨bs/cs程序的空间。这样的好处多了去了:1,比如网站需答配一个长链接的chatroom可以不用80网页request/respone方式更易实现,2,为网站准备一个更通用的长链服务器程序构建的文件后端什么的,比如websocket版owncloud之于wordpress,3,,游戏服务器,,,, 10000: balala…

在管理上,虚机大环境可由ISP管理。用户完全不必租云主机。一方面避免了自己搭环境,也减少了维护,及费用。

好了,就说到这。

提供下载:至少数据库你自己安装一个wp4.6.1,自己生成。

wpdotnet.rar


(此处不设回复,扫码到微信参与留言,或直接点击到原文)

qrcode.png

相关文章
|
2月前
|
SQL 关系型数据库 数据库
七天.NET 8操作SQLite入门到实战详细教程(选型、开发、发布、部署)
七天.NET 8操作SQLite入门到实战详细教程(选型、开发、发布、部署)
|
C++ 开发框架 Java
.net(偏web) vs j2ee的一些框架选型
带链接的完整版本: http://files.cnblogs.com/lovecindywang/.net.pdf http://files.cnblogs.com/lovecindywang/j2ee.pdf   开源和非开源(当然,现在微软很多产品也开源了)平台的很大不同在于: 开源的好东西确实是多,但质量也是参差参差不齐的,各个不同产品在不同版本的兼容性也是问题。
700 0
|
开发工具 虚拟化 iOS开发
[.NET] 在Windows系统中搭建基于.NET的iPhone应用程序虚机开发环境
看了这个标题,也许很多朋友认为我是标题党,很多人都没听说过.NET开发iPhone,今天就我就来证实了这一点,而且我已经亲身体会了这一点。 在正式开始教程之前,先陈述一下环境搭建的步骤及要点,本环境搭建共需要四个步骤,分别如下: 1. 安装VMWare虚拟环境(你也可以用VBox); 2. 安装Mac OS X(雪豹)操作系统; 3. 安装Xcode和iOS SDK; 4. 安装MonoFramework等.NET iPhone开发框架及工具。
1111 0
|
2月前
|
开发框架 前端开发 JavaScript
ASP.NET MVC 教程
ASP.NET 是一个使用 HTML、CSS、JavaScript 和服务器脚本创建网页和网站的开发框架。
37 7
|
2月前
|
存储 开发框架 前端开发
ASP.NET MVC 迅速集成 SignalR
ASP.NET MVC 迅速集成 SignalR
52 0
|
3月前
|
开发框架 前端开发 .NET
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
ASP.NET MVC WebApi 接口返回 JOSN 日期格式化 date format
45 0
|
3月前
|
开发框架 前端开发 安全
ASP.NET MVC 如何使用 Form Authentication?
ASP.NET MVC 如何使用 Form Authentication?
|
3月前
|
开发框架 .NET
Asp.Net Core 使用X.PagedList.Mvc.Core分页 & 搜索
Asp.Net Core 使用X.PagedList.Mvc.Core分页 & 搜索
118 0
|
6月前
|
开发框架 前端开发 .NET
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
184 0
|
6月前
|
开发框架 前端开发 JavaScript
JavaScript云LIS系统源码ASP.NET CORE 3.1 MVC + SQLserver + Redis医院实验室信息系统源码 医院云LIS系统源码
实验室信息系统(Laboratory Information System,缩写LIS)是一类用来处理实验室过程信息的软件,云LIS系统围绕临床,云LIS系统将与云HIS系统建立起高度的业务整合,以体现“以病人为中心”的设计理念,优化就诊流程,方便患者就医。
75 0