There are couple of things I would like to add to these comments.

First, I think PHP is more of a programming language, and less of a scripting language in terms of its methodology and abilities. It is a script language only in that it doesn't compile, but allows you to program at a very low level, like you would with Java, VB, C#, and the like. I use PHP the most, but I use all of these languages regularly.

Second, I would agree about some of the limitations of php, like load balancing and such. But that is why I have always tried to be careful to mention and compare witango to Zend/PHP, or more specifically the Zend Platform. The zend platform is an amazing server platform for PHP that gives it the robust enterprise level qualities and features. For instance, it allows for clustering of servers very simply. It is not only easier to setup than witango, but more more robust and reliable.

So first, I would like to make my position clear, that when I refer to the benefits of PHP, I am referring to PHP 5 and the Zend Platform together. I was never fond of PHP 4, and adhere to PHP 5 OOP methods as much as possible.

I remember a couple of years ago, fielding a question on this list, regarding whether witango was ready for the enterprise. I defended it at the time, with its load balancing techniques. However, now that I have put witango under very heavy loads, I wouldn't make the same defense. I would also not say that PHP on its own is enterprise ready. However, I believe Zend/PHP 5 is well suited for the enterprise, and here is my reasoning. This is not complete, and you may have other comparisons.

Load balancing: Witango load balancing and Zend/PHP (zphp) are very similar, but the zphp system is much more robust, and reliable. Witango load balancing is not configurable other than setting up the servers in the group. ZPHP has some very cool features, one of them being the ability to save session data onto disk, instead of memory, for better reliability than memory. Witango, stores session data in memory, and dumps to disk on restart. And we all know, this is one of the things you have to be careful to delete when the system crashes. ZPHP can work the same way, or it can instead save the session data to disk. There are even 2 choices with that. One is more secure, it writes to disk, and the process waits while it is written, another is it threads writing the process to disk, and it is in memory, until it gets the chance to right to disk. So you have 3 choices, just memory, combination of memory and disk, and just disk. I have found the middle to be just as fast as the memory version, and very secure. Even if the cluster daemon crashes, the session data is still in tact on the disk. There are also additional features to the ZPHP load balancing system, that make it far superior to witango. Session data shared among servers, more EFFICIENT load balancing: When a witango web server receives a request, witango gives it a sessionid which is encoded with which server in the load group this request belongs to. So this means, that this session/user, will stay on the SAME witango server during the entire session. Even if a subsequent request comes into a different webserver, the sessionid will dictate it to go to the same witango server. There are 2 problems with this. First, it doesn't distribute load effectively, when 1 session may be performing very intensive tasks, and others may not be. Also, servers crash, especially witango servers. They are not stable with complex applications under heavy load. When a server crashes, all subsequent requests from that crashed server, will hang. They contain a session id, and so the witango plugin will force it to a server that is dead. Client plug in error insert here. The user may close the browser, lose session id, but then they come back, and will get a working witango server but all session data is lost. Also, witango is SUPPOSED TO not send requests to a crashed witango server, but witango many times enters a crash state, where it responds to the plugin, so the plugin thinks it can take requests, but it just hangs. ZPHP also assigns a session id to the first request, and the zphp server that receives the request, OWNS the session data for this session/user. However, on subsequent requests, the request may come into any other zphp server in the cluster. If the server that receives this subsequent request is NOT the owning server, it communicates in the background and receives the session data from the owning server. This means that requests into a zphp cluster, are truly distributed by REQUEST, and not SESSION, which is much more efficient. This arrangement seemed more complex, and slower. However, after using it for 2 years, it has never failed, and even under severe load. HIGH AVAILABILITY: This is an additional feature, that you can turn on. As already explained zphp servers share session data with each other constantly. However, one server OWNS one or more sessions, many sessions spread across cluster, however the owning server is always updated with the session data it owns. High availability makes sure that each session is owned on one server, and fully backed up in real time on at least ONE other server. This means, that is a zphp has a disk failure or something, nothing is missed, nothing is lossed. The backup zphp server for that session, is now the owning server for that session. The above 2 features seems very complex, and resource hogging. But it works, and is extremely fast and transparent. In 18 months, I have not seen a failure. Also, I have yet to see a zphp server crash for anything other than a hardware failure. Also, setup is very easy in install wizard, and then there is the ZendPHP dashboard. Remember when witango had a web based config utility, that worked? The Zend PHP dashboard allows you to change all of these settings, add servers, and it works well. You can even edit php.ini settings, and then copy them to the rest of your group of servers. Reliablity: Witango servers crash, my zend php servers don't, ever. Also, I have 3 large sites, that were first witango sites, and now zphp sites, so I am comparing apples to apples. Team Development: First, the zend php development system is completely integrated with either subversion or CVS, witango still is not. This is a huge issue for the enterprise, as team development is a must. There is another hinderance to team dev, which I didn't realize until digging in. Its the TAF file structure. SVN and CVS work really well with text files, like PHP files and html, but not tafs and tcfs. They work, but its like dealing with binaries in SVN. Allow me to esplain. One of the benefits of svn, is if 2 people work on the same file, it can show you the differences, so that you can merge the work of both programmers. This does NOT work in a taf, and is a pain in the butt. Also, with php, you tend to use many files, and lots of includes, which is VERY SVN friendly, and keeps people from stepping on toes. However, how many tafs do you have, that have become ginormous, that would be like 50 seperate html pages or php files? I have a few. In a team environment, the taf/tcf file structure is not an assett, but a liability. Debugging: This is huge, and honestly, I didn't even realize it, until I had it. .NET also has line by line step debugging, which is SO VERY necessary and helpful. But zphp has something for team development, called REMOTE DEBUGGING. In a witango team environment, you have to do one of two things. You have a single staging server, that everyone commits code to, or everyone has their own witango personal dev server. I have found that most witango devs like the latter, and its a nightmare to administrate. Because for an app to be properly tested, it must be tested on a server, setup IDENTICAL to production. And so you have to setup multiple personal witango servers identically. Not so tough with simple apps. But what about when you have com objects? JDBC? Java Beans? External objects? etc. So you setup one central witango server, and you have to commit, test, commit, test, and you can't step, debugging and testing is SLOW AND PAINFUL. I have found that a lot of witango devs, will dev on there own personal servers, then commit to the BigHead staging server to test. Just prolonging the process further. Then if the witango code actually crashes the staging server, everybody has to stop and figure out what is going on. With zphp remote debugging you setup a single zphp server, identically to your production system. You setup each zend dev studio to talk to the zphp server. The dev studios comm to the server securely, and debug over a tunnel, and results show in your firefox browser as you step line by line. Processing being handled by the centrally configured server for consistency, but the ability to test code locally without committing. And if you code crashes the server, or does an infinite loop or something, no worries, its just a single thread of httpd, and doesn't take down the zphp server, and everyone just keeps working. Don't let me understate this, IT IS FRICKING UNBELIEVABLY BEAUTIFUL. Its not a vapor feature either, it really works with the zend studio and a zend provided firefox plugin. Zend Optimization/Precompiling: It is true that zphp is NOT compiled code, and compiled code is faster. But the zend platform includes the zend optimizer, which does something called precompiling. I gotta be honest here, this is one of the features, I have not dived into, and don't thoroughly understand. However, I don't have to understand to reap its benefits. While zphp code is not compiled, and not as fast as compiled code, zphp code runs circles around witango code. This is extremely noticeable with any data processing within loops. zphp can sometimes rival compiled code in the zend optimizer. I have created many tests and have done the pepsi challenges. I think I posted results on this before. Dynamic Data Caching: This is another feature, that allows you to incredibly effect performance of everyday operations, with just a few clicks. First a simple example. Think of a css drop down menu on a site, that is built dynamically from a database. Every time a page on the site is called, the code hits the db, loops through menus and builds the css. On witango, you would start by trying to build a system where the data is cached in domain variables, then optimize the processing and such. On zphp, just go to your zend dashboard, and find this page under "Dynamic Content Caching" and check it. Set its refresh time to 5 minutes, or 5 hours, whatever you want. zphp will automatically cache the OUTPUT of the script on the first hit, and then just return the cached output on subsequent hits. This is dream to guys like me monitoring traffic, server load, programming hours, etc. Now here is the real cool part. This feature is VERY smart. You can specify get arguments, or even server variables that can be looked at to cache different results. So for instance, /products.php? sku=abc123 and /products.php?sku=ghj789 will cache as seperate output files. This allows you to code quick, and easily gain huge levels of performance, and never needing to compile. Go HERE to see a demo.

There are other features that I could add, but these are one that really tip the scale in my opinion. Kinda turn the scale up on its head. The last piece, is that zend sales and service/support has been wonderful. I called them direct, and they allowed me to have a 6 month trial of a 3 server cluster so that I could fully evaluate the system before purchasing. They had to give me special keys and everything. After I purchased, I can call or email, or use support tickets, all responsive and wonderful. After almost 2 years, not once crash. Witango crashes in the thousands.

For the record, someone from this list had asked me to make this comparison, and I had been working on it, and planned to send to them. But this topic made me pull it out, finish, and just post here.

--

Robert Garcia
President - BigHead Technology
VP Application Development - eventpix.com
13653 West Park Dr
Magalia, Ca 95954
ph: 530.645.4040 x222 fax: 530.645.4040
[EMAIL PROTECTED] - [EMAIL PROTECTED]
http://bighead.net/ - http://eventpix.com/

On Jan 28, 2008, at 10:07 AM, Rick Sanders wrote:

Those are some really good points Scott.

PhP though in my opinion isn't as robust of a language, at least on Windows. It needs constant attention, load-balancing isn't available, and it has far too many security holes which makes it easily hackable. If you use PhP, I suggest using on Linux with Apache, that's what it was built for in the first place!

Needless to say, I love Witango and it is by far the best development language for rapid application development. However, looking at Visual Studio 2008, and Dreamweaver CS3, the WiTango editor is light-years behind these development platforms. The integration between code and design layers just isn't there. Typically I would build the application, then plug-in the design with a series of include files, then build any additional WiTango app functionality in the include files. TCF's are great, but is it me or when the TCF's get too large they tend to not function as well, and bog-down the server? I don't have any issues when using cfc's with Cold Fusion. And, I build my CSS in dreamweaver because it's so easy to do. It doesn't make sense today to use 5 programs to develop an application.

ASP.NET is a tough language to learn if you are new to it. However, the control you have over the code and options you have for developing are phenomenal. It ties into the operating system extremely well, and you can build web applications that talk to active directory, and even go to the extent of installing a network printer and defining permissions right from a web application without any external components! Building CSS in Visual Studio 2008 is also a breeze. Unforunately, Mac users can't take advantage of Visual Studio, or host ASP.NET applications on a Mac.

Cold Fusion is a faster development language, and I would say it's as fast as WiTango if you are familiar with Dreamweaver. Dreamweaver will build the SQL just like WiTango, and integrating it with the design layer is a snap! Cold fusion 8 has alot of new features built- in, like uploading a picture and resizing it on the fly like image magic. If you use flash alot for applications, video and such, then Flex is the ultimate design tool for developing a graphic layer around Cold Fusion.

Converting WiTango code to Cold Fusion is fairly easy. I've converted many apps, and they work just as well.

Customers are getting smarter and more educated about web programming and database platforms, which makes it increasingly difficult to suggest WiTango as a language. Very few people host it, and have heard of it. I know that Pervasive is a dirty word to alot of you, but they did do alot of marketing and promotion of the product to gain awareness, and they did make the product into XML instead of binary code.


Rick Sanders
Webenergy
Canada: 902-401-7689
USA:       919-799-9076
Canada: www.webenergy.ca
USA:       www.webenergyusa.com

-----Original Message-----
From: Scott Cadillac [mailto:[EMAIL PROTECTED]
Sent: January-28-08 12:38 PM
To: [email protected]
Subject: RE: Witango-Talk: Re: is witango alive?

Hi Stefan,

That's an interesting observation. I did the opposite. I was actually doing ColdFusion prior to starting in Tango, which I found was one of the reason I found Tango so easy to learn. The syntax and tag methodologies are very similar.

PHP is not too dissimilar as well I think, given that all three are interpreted languages.

I guess the difference with PHP is that additional architecture features have been bolted on to PHP since its original design, and of course many serious developers want to take advantage of that. I think PHP apps can even be compiled now if I'm not mistaken, but maybe I have that wrong?

With ASP.NET for example, it's not an interpreted language (classic ASP was), it's compiled. And given that it's integrated with IIS to create a real application server, the underlying architecture that handles the code execution is very different than ColdFusion, Tango or PHP. Java is also in this class of architecture, to a degree. This makes the transition from Tango to ASP.NET much more challenging.

I've converted many Tango apps to ASP.NET for myself and other folks, and as long as you know both languages well, the transposing of the code is reasonably painless.

I guess the key is, depending on where you're heading, is to learn your new platform first before the conversion, and just don't assume as you start out that it'll be just like Tango.

For those not interested in PHP, I would checkout the conversion tool in Witango that compiles to Java. I haven't used it myself, but I bet that would fast track anybody's learning curve to a deeper application architecture very much.

When Phil first proposed the Java compiler apparently there was plans for a .NET compiler too, but it never materialized unfortunately. Oh well.


Scott,


On Monday, January 28, 2008 11:36am, Stefan Gonick <[EMAIL PROTECTED] > said:

Hi Everyone,

I'm here and continuing to program in Witango for my existing clients.

I found it very interesting to read how hard it is to convert a
Witango application
to PHP since I don't know PHP. Years ago I learned ColdFusion and converted
a Witango application back then.

I found it extremely easy to do the conversion. The two languages were very compatible in how they did things. In fact, mostly all I did was promote the
html result actions into their own pages and substitute equivalent CF
tags for the
Witango ones. Obviously, I had to add the sql query at the top of the page, but I even used the View SQL command of the search action to get a head start on
that. It was very quick and easy.

I later did a CF application from scratch but actually found development to go
faster by using the search and new record builders in the Witango
editor and then
convert the results to CF!  Pretty cool. :)  Anyway, I just thought
that I would share
my experience of the compatibility between CF and Witango.

I appreciate this thread. I've been wondering if Witango is alive
lately myself. A major
part of what has been making me wonder about the viability of Witango
is the lack of
news from With. It would be great if they would chip in at some point...

Best to all,
Stefan

=====================================================
Database WebWorks: Dynamic web sites through database integration
http://www.DatabaseWebWorks.com

________________________________________________________________________
TO UNSUBSCRIBE: Go to http://www.witango.com/developer/maillist.taf



________________________________________________________________________
TO UNSUBSCRIBE: Go to http://www.witango.com/developer/maillist.taf




________________________________________________________________________
TO UNSUBSCRIBE: Go to http://www.witango.com/developer/maillist.taf



________________________________________________________________________
TO UNSUBSCRIBE: Go to http://www.witango.com/developer/maillist.taf

Reply via email to