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