Running concrete5 on top of .NET

Permalink 1 user found helpful
Okay, this might sound a bit wired but I tried, and was partially able, to run concrete5 on .NET. I also started to write an article about it which I'd like to publish some day.

You might wonder why I'm trying to do that. Good question.. First of all I like to do these things, unusual things not everyone cares about ;-) But it's not just that, I think .NET offers some advantages as well.

1. It does have a JIT compiler which in most cases is faster than PHP
2. It does have an application scope which I was able to use as a cache, much like APC but without the need to install an additional module. At the end a default installation of IIS will perform better than a default LAMP installation on Ubuntu.
3. There are still a number of companies that don't like PHP. Marketing..
4. Being able to integrate .NET code offers some features as well.
5. Things like LINQ can be nice as well

It does of course have a lot of disadvantages, it's not officially supported, needs a lot more time to set up, doesn't run on cheap servers etc. etc.

At the end it's more an experiment than anything I intend to use for my projects.

What's the current state:
1. I can run an already installed site on .NET
2. It performs incredibly well
3. Installation process doesn't work (tested 5.5.2.1 and current github master)

I've posted a few specific issues in this discussion:
http://support.devsense.com/viewtopic.php?f=3&t=774&p=3395#...

I just wanted to post this in case anyone else would like to help or just share his ideas.

Remo
 
frz replied on at Permalink Reply
frz
this is strangely intriguing.

best wishes

Franz Maruna
CEO - concrete5.org
http://about.me/frz
Remo replied on at Permalink Reply
Remo
It certainly is (:

But it was just an experiment. I'd like to work on it as the performance improvement is tremendous and by tremendous I don't think about number like 10% or 20% but rather in the region of 50%.

But the issue I have different incompatible method declarations is tricky. It would mean that we have to use stupid parameter names or rewrite certain parts. It would make the concrete5 cleaner as .NET is much stricter than PHP, but it would be a pretty big task without much use.

The major thing I'm stuck with is this:
Concrete5_Model_Page::getByID($cID, $versionOrig = 'RECENT', $class = 'Page') {
Concrete5_Model_SinglePage::getByID($cID, $version = 'RECENT') {


The method declarations don't match but single single page extends page, they should match. This example would be easy to fix and wouldn't introduce very stupid parameter names but there are places where it gets uglier.

If anyone ever has a nice idea on how I could fix this, I'd probably build a .NET based concrete5 version.. Until then I let this thing sleep.
mesuva replied on at Permalink Reply
mesuva
I'm pretty clueless when it comes to .NET, so I don't really get how this works. But out of curiosity?

- So you are talking about running concrete5 on .NET, on IIS? So it's something more than just IIS with PHP installed?
- So how does .NET actually process and parse the concrete5 codebase? - does it have a module/library to process or call PHP, or does it read and convert PHP to .NET?
- How much did you have to configure your .NET setup before you were close to getting things running?
- I just googled a bit and found this:http://www.infoq.com/articles/Phalanger... , are you using something like this to get it working?
- Since you say you enjoy this kind of thing, do you also enjoy root canals, thumb screws, being whipped, etc? I can only assume as much.. :-)
Remo replied on at Permalink Reply
Remo
- So you are talking about running concrete5 on .NET, on IIS? So it's something more than just IIS with PHP installed?

Yes, it runs on IIS, but there's no PHP runtime involved! There's nothing else on the server beside a default IIS installation with an up to date .NET framework.


- So how does .NET actually process and parse the concrete5 codebase? - does it have a module/library to process or call PHP, or does it read and convert PHP to .NET?

It more or less converts PHP to .NET (MSIL). But it's a bit different than compiled C# code because PHP is a loosely typed language. There's some dynamic stuff in the .NET assembly.


- How much did you have to configure your .NET setup before you were close to getting things running?

Nothing, I just published the project and it was running.


- I just googled a bit and found this:http://www.infoq.com/articles/Phalanger... , are you using something like this to get it working?

Yes, I am using Phalanger!


- Since you say you enjoy this kind of thing, do you also enjoy root canals, thumb screws, being whipped, etc? I can only assume as much.. :-)

Almost (-:
kerrymanam replied on at Permalink Reply
.Net framework step by stephttp://vb.net-informations.com/framework/framework_tutorials.htm... .net tutorial

kerry