Y, they used to post on the site. First, I agree. I HATED having to leave witango. It pissed me off to even have to consider, and I am sure that attitude has come through in the past. ;-) It was VERY hard, and took me almost 18 months of research and testing. PHP 4 was def not the answer, PHP 5 was OOP, but the enterprise level features, were all over the map. Look at sites like DIGG and stuff, and its full of roll your own clustering and hacks and stuff. The Zend Platform is what pulled it all together for me, and gave me all I needed and more.

First, license is subscription, not perpetual, but I have found cost of ownership to me much less than witango, especially when you consider how they treat multicore processor and x64 arch. I pay approximately $1000/yr per each single CPU server. This includes one year of FULL and COMPLETE support, with 24 hour response time, with unlimited upgrades during that time. I am talking about the high end zend platform, I Think they call it the enterprise version or something. Now, I paid less, I got a bundle deal with 4 dev studios, for like $7k or something like that. The dev studios are perpetual, but include one year of upgrades for $299. The cost of the studio is made up with the remote debugging alone.

I also forgot to mention, the zend platform has a full JAVA bridge. Any java compiled code, can be loaded into class path, and called right from php script. Here is an example of a PHP function that uses the payflowpro JAVA class.

<pre>
private function pfp_authorize($ParmList,$istest=true,$CertPath="/data/ websites/phpws/certs",$Timeout=30){
        $pfp = new java("com.Verisign.payment.PFProAPI");
        if ($istest){
                $HostAddress = "test-payflow.verisign.com";
        }else{
                $HostAddress = "payflow.verisign.com";
        }
        $HostPort = (int)443;
        $ProxyAddress = (string)"";
        $ProxyPort = (int)0;
        $ProxyLogon = (string)"";
        $ProxyPassword = (string)"";
        
        $pfp->SetCertPath($CertPath);
$pfp->CreateContext($HostAddress,$HostPort,$Timeout,$ProxyAddress, $ProxyPort,$ProxyLogon,$ProxyPassword);
        $res = $pfp->SubmitTransaction($ParmList);
        return $res;
}
</pre>

by callign this:

$pfp = new java("com.Verisign.payment.PFProAPI");

you then can call the java methods and such, as if were a PHP class. Also, in the studio, if you load the java class in the studio, you have full code autocompletion and introspection in the code editor. So this also adds to the dynamic caching, and the optimizer, to give you the best of any world, all the way to complete compiled code, if you wish. Just roll a java class. And unlike witango, the java class doesn't have to meet the crazy exact spec, they just work.

In fairness, the first time I setup the java bridge, it was a bitch to set up. ;-)

--

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 1:07 PM, Scott Cadillac wrote:

Hi Robert,

Thank you, a very comprehensive break down of the development features. You should publish that in a blog post or something.

PHP is sounding all grow'd up. It has almost as many features of ASP.NET and Visual Studio ;-) But of course I'm curious what a Zend Server (Platform?) license costs (the website just say to contact sales).

Scott,


On Monday, January 28, 2008 3:47pm, Robert Garcia <[EMAIL PROTECTED]> said:

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

________________________________________________________________________
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