monosys as 1ddlang语言选型+1ddcodebase实践选型绿色monodevelope集成常见多语言

简介: 本文关键字:.net上 都有什么语言,最后一个支持xp的mono,绿色版monodevelop,绿色xamrin studio,mingwsys vs monosys,gtk#绿色版,让monodevelop在mono下启动,以mono为运行时启动,green mono,绿色打包mono应用免.netfx发布

本文关键字:.net上 都有什么语言,最后一个支持xp的mono,绿色版monodevelop,绿色xamrin studio,mingwsys vs monosys,gtk#绿色版,让monodevelop在mono下启动,以mono为运行时启动,green mono,绿色打包mono应用免.netfx发布

接《1ddlang》->《编程语言选型简史》《编程实践选型简史》,这是继1ddlang之后第五种语言方案和实践方案。

.net最大的特色就是提出了clr,继承了从delphi开始鲜明的组件支持到.net一统语言CLR,使之基本上变成了“langone”: ———- 能将任何现行语言免binding纳入开发发布的语言生态系统,且视一切为组件,开发发布一体,源码即组件库,语言服务也是组件。.net支持多种常见语言,如果将它独立出来,很容易得到一种“langone”发布包,如题目所指的那样,可以作为1ddlang,1ddcodebase的一种明确的参考实现。可惜官方的.netfx发布包很紧不易另行定制发布。

而mono作为.net的变体,与.net生态不同的是,它最适合拿来定制和集成,且与.net高度兼容,且有monodevelop,xsp这样的完善工具生态支持,其多种语言如ironpy,ironruby实现都在mono/lib下。就像msyscuione/mingwsys/opt下的一堆语言一样。mingwsys中的全是本地语言如cpy,zend cphp。是一套没有显式化的“langsys” — 实则是分散的,而.net下的这些语言是统一的。

接下来谈如何绿色IDE开始讨论整合mono为独立“langone”的技术 — 我们将得到的结果称为monosys。再来谈具体语言,使之成为just another mingwsys。

绿化monodevelop,使之全程不依赖.net的方法

monodevelop现在叫xamarin了。默认安装的时候需要.net,现在让它从mono运行时下启动,同时绿化xamarin ide。

我需要的是最底兼容.net4的,我选择了能广泛下载到的5.0.1.3,毕竟从5.0起,NuGet Support in Xamarin Studio 5.0(由addin变到了lib/mono),最新的xamarin studio都是依赖msbuild安装的。而这个不需要,是相对来说比较可用且易集成的版本。

再确定要找的mono版本,网上难找到.net与mono的版本对应关系了,这个也要最好最低兼容.net4.0的,我最初选择的是Mono 2.10.8(相当于NET with asp.net 4.0?),官网能下载的mono历史版本名字中gtk指明的是使用的gtk版本,你还得另外安装那个版本的gtk来支持xamarin的运行。为了省事不自己编译,我偏向直接下载,结果发现从Mono 2.10.8起大都以gtksharp2.12.11为基础(这就与上面的IDE选择矛盾了因为它至少要2.12.22),我只能找往下的版本,结果一路下来有好多不提供windows installer版本中的,我最终选择了mono-3.12.0-gtksharp-2.12.26-win32-1,它能满足2.12.22的最低要求。

归纳一下流程:先安装.net4,把mono,gtksharp,monodeveloper先安装一次,中途需要安装vc runtime 2013 12.0.30501,然后拷出文件夹,再卸载掉.net,用mono尝试启动它。

gtk-sharp 2.12.25 最新绿化方法(网上的过时):

我是放到d:|monodev|GtkSharp|2.12中测试的,注意以上有||的地方千W不要少了一个|。要全部是||:

Windows Registry Editor Version 5.00
 
[HKEY_LOCAL_MACHINE|SOFTWARE|Xamarin]
[HKEY_LOCAL_MACHINE|SOFTWARE|Xamarin|GtkSharp]
[HKEY_LOCAL_MACHINE|SOFTWARE|Xamarin|GtkSharp|InstallFolder]
@=”D:||monodev||GtkSharp||2.12||”
[HKEY_LOCAL_MACHINE|SOFTWARE|Xamarin|GtkSharp|Version]
@=”2.12.25″
[HKEY_LOCAL_MACHINE|SOFTWARE|Microsoft|.NETFramework|v4.0.30319]
[HKEY_LOCAL_MACHINE|SOFTWARE|Microsoft|.NETFramework|v4.0.30319|AssemblyFoldersEx]
[HKEY_LOCAL_MACHINE|SOFTWARE|Microsoft|.NETFramework|v4.0.30319|AssemblyFoldersEx|GtkSharp]
@=”D:||monodev||GtkSharp||2.12||lib||gtk-sharp-2.0″
[HKEY_LOCAL_MACHINE|SOFTWARE|Microsoft|.NETFramework|v4.0.30319|AssemblyFoldersEx|MonoCairo]
@=”D:||monodev||GtkSharp||2.12||lib||Mono.Cairo”
[HKEY_LOCAL_MACHINE|SOFTWARE|Microsoft|.NETFramework|v4.0.30319|AssemblyFoldersEx|MonoPosix]
@=”D:||monodev||GtkSharp||2.12||lib||Mono.Posix”
[HKEY_LOCAL_MACHINE|SOFTWARE|Microsoft|.NETFramework|v4.0.30319|SKUs]
[HKEY_LOCAL_MACHINE|SOFTWARE|Microsoft|.NETFramework|v4.0.30319|SKUs|.NETFramework,Version=v4.0]
[HKEY_LOCAL_MACHINE|SOFTWARE|Microsoft|.NETFramework|v4.0.30319|SKUs|.NETFramework,Version=v4.0,Profile=Client]
[HKEY_LOCAL_MACHINE|SOFTWARE|Microsoft|.NETFramework|v4.0.30319|SKUs|Client]
[HKEY_LOCAL_MACHINE|SOFTWARE|Microsoft|.NETFramework|v4.0.30319|SKUs|Default]
还有:加个环境变量,GTK_BASEPATH = d:|monodev|GtkSharp|2.12|

mono绿色调用monodevelop方法:

直接启动会弹出.net找不到,因为已被卸载,参照mono/bin下的ipy.bat等,将ide拷到mono/lib下,并作出如下.bat调用。

@echo off
“%~dp0mono.exe” %MONO_OPTIONS% “%~dp0..lib|mono|..|Xamarin Studio|bin|XamarinStudio.exe” %*

执行,成功!

我没有深入测试只是验证xamarin能否绿色作一个原型测试。当然不能排除这个绿色的原型还有更多未发现的BUG

一般mono应用绿色

其实monodeveloper是大型的mono应用,一般的mono应用也可通过类似的方法在mono下直接运行。并额外得到精简。

让我们来说一下微软开发环境和.net的变迁:

据说.netfx开源跨平台变成.net core了,从.netfx大包发布模式到社区包管理/包贡献模式,IDE也变成了vs code,从厂商为政到用户为政,除了OS不开源,微软终于开源了它最珍贵的语言套件,这绝非为了拥抱移殖化必须开源,不如说开源其实是微不足道的,其最终正是为了实现.net真正的使命 —- 组件化语言不需要太复杂的语言级整包打包(因此.netcore),需要的是包管理海量的应用组件+用户贡献(因此nuget),而每个应用涉及到的包可能只是特定的几个包(因此不需要附带某个整个一次性发布包) —-见《实践选型简史》结尾应该谈到的demolet engine>langsys as engine但却没谈到的那些,这些在《demoasengine xxx》系列未尾中谈到过。

其实mono可以完成通过mkbundle或精简某个应用不需要的assembly部件,来达到.net core同样的效果(绿色发布.net应用而不需要附带宠大的.netfx托管运行时)。

对于php的支持

上述绿化过程中仅假设要求.net4层次的green mono,也是为了迎合这个green mono将来要整合Phalanger 4的需求,它是php5.4规范。wordpress可以稍作修改在其上运行。

Phalanger完全可以做成跟ironpy,ironruby一样,变成mono/lib下的语言组件。

这是以后的话题了。

下载地址:

monosys.rar


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

qrcode.png

相关文章
|
2月前
|
存储 缓存 NoSQL
深入理解Django与Redis的集成实践
深入理解Django与Redis的集成实践
77 0
|
1月前
|
机器学习/深度学习 人工智能 jenkins
软件测试中的自动化与持续集成实践
在快速迭代的软件开发过程中,自动化测试和持续集成(CI)是确保代码质量和加速产品上市的关键。本文探讨了自动化测试的重要性、常见的自动化测试工具以及如何将自动化测试整合到持续集成流程中,以提高软件测试的效率和可靠性。通过案例分析,展示了自动化测试和持续集成在实际项目中的应用效果,并提供了实施建议。
|
1月前
|
jenkins Devops Java
DevOps实践:Jenkins在持续集成与持续部署中的价值
【10月更文挑战第27天】在快速发展的软件开发领域,DevOps实践日益重要。Jenkins作为一款流行的开源自动化服务器,在持续集成(CI)和持续部署(CD)中扮演关键角色。本文通过案例分析,探讨Jenkins在Java项目中的应用,展示其自动化构建、测试和部署的能力,提高开发效率和软件质量。
58 2
|
2月前
|
运维 Devops jenkins
DevOps实践:自动化部署与持续集成的实现之旅
本文旨在通过一个实际案例,向读者展示如何将DevOps理念融入日常工作中,实现自动化部署和持续集成。我们将从DevOps的基础概念出发,逐步深入到工具的选择、环境的搭建,以及流程的优化,最终实现一个简单而高效的自动化部署流程。文章不仅提供代码示例,更注重于实践中的思考和问题解决,帮助团队提高软件开发和运维的效率。
|
9天前
|
DataWorks 数据挖掘 大数据
方案实践测评 | DataWorks集成Hologres构建一站式高性能的OLAP数据分析
DataWorks在任务开发便捷性、任务运行速度、产品使用门槛等方面都表现出色。在数据处理场景方面仍有改进和扩展的空间,通过引入更多的智能技术、扩展数据源支持、优化任务调度和可视化功能以及提升团队协作效率,DataWorks将能够为企业提供更全面、更高效的数据处理解决方案。
|
2月前
|
运维 监控 Devops
DevOps实践:自动化部署与持续集成的融合之旅
【10月更文挑战第7天】在软件开发领域,DevOps已成为一种文化和实践,它倡导开发(Dev)与运维(Ops)之间的协作与整合。本文将引导读者了解如何通过自动化部署和持续集成(CI)的实践来提升软件交付的速度和质量。我们将探讨一些实用的工具和技术,以及它们是如何帮助团队高效地管理代码变更、测试和部署的。文章将不包含代码示例,但会详细解释概念和流程,确保内容的通俗易懂和条理性。
145 62
|
27天前
|
缓存 监控 前端开发
Go 语言中如何集成 WebSocket 与 Socket.IO,实现高效、灵活的实时通信
本文探讨了在 Go 语言中如何集成 WebSocket 与 Socket.IO,实现高效、灵活的实时通信。首先介绍了 WebSocket 和 Socket.IO 的基本概念及其优势,接着详细讲解了 Go 语言中 WebSocket 的实现方法,以及二者集成的重要意义和具体步骤。文章还讨论了集成过程中需要注意的问题,如协议兼容性、消息格式、并发处理等,并提供了实时聊天、数据监控和在线协作工具等应用案例,最后提出了性能优化策略,包括数据压缩、缓存策略和连接管理优化。旨在帮助开发者更好地理解并应用这些技术。
43 3
|
29天前
|
运维 Devops jenkins
DevOps实践:持续集成与持续部署在现代软件开发中的作用
【10月更文挑战第42天】在快节奏的软件开发世界里,DevOps已经成为一种提升效率、确保质量和加速交付的重要方法。本文将深入探讨DevOps的核心组成部分—持续集成(CI)和持续部署(CD)—并展示它们如何通过自动化流程优化开发周期。我们将从基础概念讲起,逐步过渡到实际操作,最终通过一个简单代码示例来演示这一过程。文章旨在为读者提供清晰的指导,帮助他们理解和实现CI/CD流程,从而在软件开发领域取得竞争优势。
|
1月前
|
Devops jenkins 测试技术
DevOps实践:自动化部署与持续集成的融合之旅
【10月更文挑战第41天】在软件开发的世界中,快速迭代和高效交付是企业竞争力的关键。本文将带你走进DevOps的核心实践——自动化部署与持续集成,揭示如何通过它们提升开发流程的效率与质量。我们将从DevOps的基本理念出发,逐步深入到具体的技术实现,最终展示一个实际的代码示例,让理论与实践相结合,为你的开发旅程提供清晰的指引。
36 4
|
1月前
|
存储 监控 Devops
DevOps实践:持续集成/持续部署(CI/CD)的实战指南
DevOps实践:持续集成/持续部署(CI/CD)的实战指南

热门文章

最新文章

下一篇
DataWorks