Advise on enterprize application.
Hi Folks, I was hired to build a simple app here in brazil, I should take care of managing contacts and projects for a small company. As a common practice here in the country, they changed the project as the game was going and now the only thing it doesn't do is to babysit the CEO daughter, but okay, I could cope with the spec changes, it's just a huge db anway. Now the sky has fallen, they want their app to talk to the other franchise apps, meaning theres a company here at Rio de Janeiro, another at Sao Paulo and yet another at Porto Alegre, and they want to exchange data, they want the program to run everywhere and they've got lot's of firewalls since they are inside a university. I was going like this, client app in Rev, MySQL running in a server, everyone access the server. This ain't working They can't open connections to the server running at my ISP, I can, I tested it in three machines on different networks they can't change their firewalls policies and they want to share data I am now thinking in doing the other way, I make the server using my webserver stack and valentina, and they access it by the web, they can pass thru the firewall to do webrequests... but that's ugly I hate deploying apps using web interface. It's just simple DBs with 6 tables and couple joins... should be easy I look forward to some advise for I must deliver this yesterday, and they just phoned to say that the other companies will use the program, that's why I am in a hurry... that's also the money that should take me to malta. And since they are publishing and marketing company they know nothing of IT they think that for them to use an app and for outside-of-lan-ambient people to use the same app is trivial hell! firewalls!!! fake IPs!! anyone here got an advise or idea, I am begining again from the scratch so any advise is good. andre PS: and if I tell I need more time, they just dump me and use another contractant pretty cool ain't it. -- Andre Alves Garzia 2004 Soap Dog Studios - BRAZIL http://studio.soapdog.org ___ use-revolution mailing list [EMAIL PROTECTED] http://lists.runrev.com/mailman/listinfo/use-revolution
Re: Advise on enterprize application.
On Aug 2, 2004, at 1:36 PM, Andre Garzia wrote: I am now thinking in doing the other way, I make the server using my webserver stack and valentina, and they access it by the web, they can pass thru the firewall to do webrequests... but that's ugly I hate deploying apps using web interface. It's just simple DBs with 6 tables and couple joins... should be easy I look forward to some advise for I must deliver this yesterday, and they just phoned to say that the other companies will use the program, that's why I am in a hurry... that's also the money that should take me to malta. And since they are publishing and marketing company they know nothing of IT they think that for them to use an app and for outside-of-lan-ambient people to use the same app is trivial hell! firewalls!!! fake IPs!! anyone here got an advise or idea, I am begining again from the scratch so any advise is good. Here is how I think I would approach it - Client Rev application which makes requests over port 80 to a PHP/Perl/Rev CGI which talks to the central DB (MySQL, Valentina, etc.). The data is returned in a predetermined format. Your app parses returned data and populates the interface as needed. You don't have to redo your interface, just the how the data is obtained. Server PHP/Perl/Rev, etc This will do all the talking to the db. A request might look something like this: http://mycoolserver.com/mycoolapp.php?GetFunnyRecords GetFunnyRecords would run a predefined query and output the data to the client. The data could be like a slimmed down xml - bob 12 or just return one url encoded record per line (with status and error message being lines one and two) depending on your data. Would this work for you? -- Trevor DeVore Blue Mango Multimedia [EMAIL PROTECTED] ___ use-revolution mailing list [EMAIL PROTECTED] http://lists.runrev.com/mailman/listinfo/use-revolution
Re: Advise on enterprize application.
Trevor, thanks to your quick response. I was thinking about it... I was trying to make one app, not two, but I think that's the way to go, the time I'll take to create a HTML interface is bigger thant the one I'll use to modify the current rev interface, now let's build a server... (heck!) Andre On Aug 2, 2004, at 5:52 PM, Trevor DeVore wrote: On Aug 2, 2004, at 1:36 PM, Andre Garzia wrote: I am now thinking in doing the other way, I make the server using my webserver stack and valentina, and they access it by the web, they can pass thru the firewall to do webrequests... but that's ugly I hate deploying apps using web interface. It's just simple DBs with 6 tables and couple joins... should be easy I look forward to some advise for I must deliver this yesterday, and they just phoned to say that the other companies will use the program, that's why I am in a hurry... that's also the money that should take me to malta. And since they are publishing and marketing company they know nothing of IT they think that for them to use an app and for outside-of-lan-ambient people to use the same app is trivial hell! firewalls!!! fake IPs!! anyone here got an advise or idea, I am begining again from the scratch so any advise is good. Here is how I think I would approach it - Client Rev application which makes requests over port 80 to a PHP/Perl/Rev CGI which talks to the central DB (MySQL, Valentina, etc.). The data is returned in a predetermined format. Your app parses returned data and populates the interface as needed. You don't have to redo your interface, just the how the data is obtained. Server PHP/Perl/Rev, etc This will do all the talking to the db. A request might look something like this: http://mycoolserver.com/mycoolapp.php?GetFunnyRecords GetFunnyRecords would run a predefined query and output the data to the client. The data could be like a slimmed down xml - bob 12 or just return one url encoded record per line (with status and error message being lines one and two) depending on your data. Would this work for you? -- Trevor DeVore Blue Mango Multimedia [EMAIL PROTECTED] ___ use-revolution mailing list [EMAIL PROTECTED] http://lists.runrev.com/mailman/listinfo/use-revolution -- Andre Alves Garzia 2004 Soap Dog Studios - BRAZIL http://studio.soapdog.org ___ use-revolution mailing list [EMAIL PROTECTED] http://lists.runrev.com/mailman/listinfo/use-revolution
Re: Advise on enterprize application.
On Aug 2, 2004, at 1:57 PM, Andre Garzia wrote: thanks to your quick response. I was thinking about it... I was trying to make one app, not two, but I think that's the way to go, the time I'll take to create a HTML interface is bigger thant the one I'll use to modify the current rev interface, now let's build a server... (heck!) If you've already written the interface in Rev and depending on how separate your data fetching code is from your interface code then it should be a breeze. I like to have data fetching functions which return arrays that I build the interface from so if I ever do need to change my data source I don't have to modify anything but the data acquisition library. Creating a good application interface using HTML will depress you. If you want to do it right you will have all sorts of browser compatibility issues to deal with and it is difficult to mimic basic functionality available in a desktop app. Writing an DB interface on the server shouldn't take too long. -- Trevor DeVore Blue Mango Multimedia [EMAIL PROTECTED] ___ use-revolution mailing list [EMAIL PROTECTED] http://lists.runrev.com/mailman/listinfo/use-revolution
Re: Advise on enterprize application.
On Aug 2, 2004, at 6:12 PM, Troy Rollins wrote: Just to be clear, the mySQL connection works. If you can't access it, there is some other problem. Sounds like Andre doesn't have a problem with it from his end, but the client's firewall does. I'd look at using port 80... almost all firewalls have to allow that. Just means you need either Rev CGI or PHP to act as an intermediary. Come on Andre - if anybody can make that work, YOU can! ;-) Thanks Troy, the problem is, I can't changing the port of the MySQL server, it's running on my Web Hosting company, and I bet they use the same server for everyone... irgh! I am already making a server with LibCGI and a client with Rev Andre -- Andre Alves Garzia 2004 Soap Dog Studios - BRAZIL http://studio.soapdog.org ___ use-revolution mailing list [EMAIL PROTECTED] http://lists.runrev.com/mailman/listinfo/use-revolution
Re: Advise on enterprize application.
On Aug 2, 2004, at 6:17 PM, Trevor DeVore wrote: If you've already written the interface in Rev and depending on how separate your data fetching code is from your interface code then it should be a breeze. I like to have data fetching functions which return arrays that I build the interface from so if I ever do need to change my data source I don't have to modify anything but the data acquisition library. yes, it's pretty easy to change, almost everything was built by Database Query Builder, just dump the query and write your own. Creating a good application interface using HTML will depress you. If you want to do it right you will have all sorts of browser compatibility issues to deal with and it is difficult to mimic basic functionality available in a desktop app. Writing an DB interface on the server shouldn't take too long. I already begun to write a DB interface using LibCGI as my backend... but I think my engine is missing the database library for I received this error: Object: stack "libCGI" Line: 1 Statement: -- -- Description: Function: error in source expression Value: revOpenDatabase Is there any trick to use MySQL with CGI using linux mc engine? andre -- Andre Alves Garzia 2004 Soap Dog Studios - BRAZIL http://studio.soapdog.org ___ use-revolution mailing list [EMAIL PROTECTED] http://lists.runrev.com/mailman/listinfo/use-revolution
Re: Advise on enterprize application.
Andre- I'd have to agree with Trevor here that a multi-tiered approach is the way to go. I think you'll have an easier time of it than trying to stuff everything into a giant rev app (not to mention an easier time doing maintenance in the long run). -- -Mark Wieder [EMAIL PROTECTED] ___ use-revolution mailing list [EMAIL PROTECTED] http://lists.runrev.com/mailman/listinfo/use-revolution
Re: Advise on enterprize application.
On Aug 2, 2004, at 6:51 PM, Mark Wieder wrote: Andre- I'd have to agree with Trevor here that a multi-tiered approach is the way to go. I think you'll have an easier time of it than trying to stuff everything into a giant rev app (not to mention an easier time doing maintenance in the long run). Mark, Thanks! Already on that path! I just need to know how to make that database library work in the mc engine... it's not there... Andre -- -Mark Wieder [EMAIL PROTECTED] -- Andre Alves Garzia 2004 Soap Dog Studios - BRAZIL http://studio.soapdog.org ___ use-revolution mailing list [EMAIL PROTECTED] http://lists.runrev.com/mailman/listinfo/use-revolution
Re: Advise on enterprize application.
At 19:08 02/08/2004 -0300, Andre Garzia wrote: Mark, Thanks! Already on that path! I just need to know how to make that database library work in the mc engine... it's not there... It kinda hurts to even suggest this, but . if you're using HTTP to send the query / get the response and if the server side is a simple CGI that receives an encoded version of the SQL query and responds with the data returned from mySQL then I'd be tempted to use PHP/mySQL on the server (at least for Beta) -- Alex. ___ use-revolution mailing list [EMAIL PROTECTED] http://lists.runrev.com/mailman/listinfo/use-revolution
Re: Advise on enterprize application.
On Aug 2, 2004, at 7:46 PM, Alex Tweedly wrote: It kinda hurts to even suggest this, but . if you're using HTTP to send the query / get the response and if the server side is a simple CGI that receives an encoded version of the SQL query and responds with the data returned from mySQL then I'd be tempted to use PHP/mySQL on the server (at least for Beta) Alex, That's my first milestone! But there been time since I last programmed in PHP, actually more than three years, I don't trust my PHP skills anymore... I'll do exactly that but in Rev, then I'll try to refine the inteligence of the server, no point having a dumb server, clients are the ones made to be dumb... Andre -- Alex. -- Andre Alves Garzia 2004 BRAZIL http://studio.soapdog.org ___ use-revolution mailing list [EMAIL PROTECTED] http://lists.runrev.com/mailman/listinfo/use-revolution
Re: Advise on enterprize application.
Hello Andre, I will answer to your post tonight. In short, the way is to have all your stuff binded to the standard Apache's 80 port trought sockets translators/listeners able to use the 80 port to provide the requests/replies over the web and to have your server-sided Rev apps connectables to the Apache default port from they own private/protected (> 1024) port. I use, for my own, a 10 lines .PHP script as the sockets translator. You can find it in searching the archives. Because lots to do until 21 PM, more detals tonight :) Best, Le 2 août 04, à 22:36, Andre Garzia a écrit : Hi Folks, I was hired to build a simple app here in brazil, I should take care of managing contacts and projects for a small company. As a common practice here in the country, they changed the project as the game was going and now the only thing it doesn't do is to babysit the CEO daughter, but okay, I could cope with the spec changes, it's just a huge db anway. Now the sky has fallen, they want their app to talk to the other franchise apps, meaning theres a company here at Rio de Janeiro, another at Sao Paulo and yet another at Porto Alegre, and they want to exchange data, they want the program to run everywhere and they've got lot's of firewalls since they are inside a university. I was going like this, client app in Rev, MySQL running in a server, everyone access the server. This ain't working They can't open connections to the server running at my ISP, I can, I tested it in three machines on different networks they can't change their firewalls policies and they want to share data I am now thinking in doing the other way, I make the server using my webserver stack and valentina, and they access it by the web, they can pass thru the firewall to do webrequests... but that's ugly I hate deploying apps using web interface. It's just simple DBs with 6 tables and couple joins... should be easy I look forward to some advise for I must deliver this yesterday, and they just phoned to say that the other companies will use the program, that's why I am in a hurry... that's also the money that should take me to malta. And since they are publishing and marketing company they know nothing of IT they think that for them to use an app and for outside-of-lan-ambient people to use the same app is trivial hell! firewalls!!! fake IPs!! anyone here got an advise or idea, I am begining again from the scratch so any advise is good. andre PS: and if I tell I need more time, they just dump me and use another contractant pretty cool ain't it. -- Andre Alves Garzia 2004 Soap Dog Studios - BRAZIL http://studio.soapdog.org ___ use-revolution mailing list [EMAIL PROTECTED] http://lists.runrev.com/mailman/listinfo/use-revolution -- Bien cordialement, Pierre Sahores 100, rue de Paris F - 77140 Nemours [EMAIL PROTECTED] GSM: +33 6 03 95 77 70 Pro: +33 1 64 45 05 33 Fax: +33 1 64 45 05 33 WEB/EAI services & ACID DB over IP "Mutualiser les deltas de productivité" ___ use-revolution mailing list [EMAIL PROTECTED] http://lists.runrev.com/mailman/listinfo/use-revolution
RE: Advise on enterprize application + clustering
This is getting interesting... A bit of everything to solve your problem (x's famous howitzer approach). The last part may be even more interesting than the first. Remember that enterprise means also redundancy and zero-downtime ;) Unfortunately there is some risks of lock ups if not done carefully... But here are 3 things you could try: 1) In a three tiered cluster strategy, mentioned in a clustering class I had recently, there were three actors client -> server1 -> server2 client -> server2 is not possible because of the firewall. but server1 -> server2 is fine and client -> server1 is ok2 if client cannot use sql but can use client1's ports, and assuming client1 and client2 can do the sql bit... then you need a port configurable client server networking protocol. in brief: RRclient -> RR on Server -> SQLserver between RRclient and RRserver you use whatever protocol (80!) Best is to have your client ask their network administrator to see what is allowed and for what purpose. If you saw the forms we have to fill in for these requests at my office you would scream! 2) For the clustering part now... For a redundant server... but you can have more than one server also... Run two instances of RR. Named RRServer1 and RRS2. Now only one application must work with the port communication at the time but you can imagine either that one is locked up, not responding, or working hard. It would be nice to have RR2 take over the next client's server call... What you do, is create a temporary file called rr1alive where you write a frequent log - the frequency is the timeout for RR2 to kick and start working. There's the case where the RR1alive file is locked by the RR1, which should be working but which should be closing the file. (is there a FileLocked(filepath) function in rr?) You can use the file's date from the extended files function to see the date anyway. So if there is a timeout trying to read that file, RR1 must be locked. Terminate the process RR1. Relaunch RR1 and give it the hand when you finished the current client processing. Note: usage of a different log for operations than the alivelog is worth the trouble. You could keep a log opened in the case of a processing but the alivelog should be kept closed to see when the last alive was logged to prevent a double server taking parts each of the same client's transactions (this can be prevented ez). Since transactions with SQL could take a while and queue up clients you could imagine that another RRx takes over while the other apps finish their transactions. 3) The cherry on the cake Now, if RunRev implemented threading into RR for 3.0, we would have this process written into just one server application. It's one thing that differentiates Java from RR... BUT wait a millisecond, requesting web urls is threaded and could be used also as a transaction protocol for any client over port 80 couldn't it? If well formed, im sure you can send xml or any data embeded into an client-side html-form request on good old port 80! Using mysqlmgr in html, you can send loads of sql data via a form to the server. ;) > -Original Message- > From: [EMAIL PROTECTED] > [mailto:[EMAIL PROTECTED] Behalf Of Andre > Garzia > Sent: Tuesday, August 03, 2004 00:08 > To: How to use Revolution > Subject: Re: Advise on enterprize application. > > > > On Aug 2, 2004, at 6:51 PM, Mark Wieder wrote: > > > Andre- > > > > I'd have to agree with Trevor here that a multi-tiered approach is the > > way to go. I think you'll have an easier time of it than trying to > > stuff everything into a giant rev app (not to mention an easier time > > doing maintenance in the long run). > > > > Mark, > > Thanks! Already on that path! I just need to know how to make that > database library work in the mc engine... it's not there... > > Andre > > > > -- > > -Mark Wieder > > [EMAIL PROTECTED] > > > > > -- > Andre Alves Garzia ð 2004 > Soap Dog Studios - BRAZIL > http://studio.soapdog.org > > ___ > use-revolution mailing list > [EMAIL PROTECTED] > http://lists.runrev.com/mailman/listinfo/use-revolution ___ use-revolution mailing list [EMAIL PROTECTED] http://lists.runrev.com/mailman/listinfo/use-revolution
Re: Advise on enterprize application + clustering
a a form to the server. ;) Cool and very "pedagogique" (as we say so much, there, in France) post ! Thanks, Xavier :D Best, Pierre -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Behalf Of Andre Garzia Sent: Tuesday, August 03, 2004 00:08 To: How to use Revolution Subject: Re: Advise on enterprize application. On Aug 2, 2004, at 6:51 PM, Mark Wieder wrote: Andre- I'd have to agree with Trevor here that a multi-tiered approach is the way to go. I think you'll have an easier time of it than trying to stuff everything into a giant rev app (not to mention an easier time doing maintenance in the long run). Mark, Thanks! Already on that path! I just need to know how to make that database library work in the mc engine... it's not there... Andre -- -Mark Wieder [EMAIL PROTECTED] -- Andre Alves Garzia ð 2004 Soap Dog Studios - BRAZIL http://studio.soapdog.org ___ use-revolution mailing list [EMAIL PROTECTED] http://lists.runrev.com/mailman/listinfo/use-revolution ___ use-revolution mailing list [EMAIL PROTECTED] http://lists.runrev.com/mailman/listinfo/use-revolution -- Bien cordialement, Pierre Sahores 100, rue de Paris F - 77140 Nemours [EMAIL PROTECTED] GSM: +33 6 03 95 77 70 Pro: +33 1 64 45 05 33 Fax: +33 1 64 45 05 33 WEB/EAI services & ACID DB over IP "Mutualiser les deltas de productivité" ___ use-revolution mailing list [EMAIL PROTECTED] http://lists.runrev.com/mailman/listinfo/use-revolution
Re: Advise on enterprize application + clustering
If one could replace the stdin and stout handles with sockets a fork could be executed for redundcy a pipe proxy can be created for the remote process (created via sshd ir what ever sheel system you wish to use). I have been conversing with RR developers about this topic. Kevin -==-=-=-=-=-=-==-=-=-=-=-=-=-=-==-=-=-=-=-=- Disclaimer: Any resemblance between the above views and those of my employer, my terminal, or the view out my window are purely coincidental. Any resemblance between the above and my own views is non-deterministic. The question of the existence of views in the absence of anyone to hold them is left as an exercise for the reader. The question of the existence of the reader is left as an exercise for the second god coefficient. (A discussion of non-orthogonal, non-integral polytheism is beyond the scope of this article.) --- On Wed 08/04, Pierre Sahores < [EMAIL PROTECTED] > wrote: From: Pierre Sahores [mailto: [EMAIL PROTECTED] To: [EMAIL PROTECTED], [EMAIL PROTECTED] Date: Wed, 4 Aug 2004 18:42:38 +0200 Subject: Re: Advise on enterprize application + clustering Grettings, All,Le 3 août 04, à 08:01, MisterX a écrit :> This is getting interesting... A bit of everything to solve> your problem (x's famous howitzer approach). The last part> may be even more interesting than the first. Remember that> enterprise means also redundancy and zero-downtime ;)!!! --> Always have this in mind (aka : only ACID compliant RDBMS back-ends are eligibles there). In respecting this basis, the applications server will always be cleanly designed (with, sorry for the possibles Java's addicts reading us, to the end, Tomcat, JBoss no more suitables at all than Metacard or Revolution...).> Unfortunately there is some risks of lock ups if not done> carefully... But here are 3 things you could try:>> 1)>> In a three tiered cluster strategy, mentioned in a clustering> class I had recently, there were three actors>> client -> server1 -> server2>> client -> server2 is not possible because of the firewall.>> but server1 -> server2 is fine and client -> server1 is ok2An usefull ports translation strategy, always very suitable, even in about proxying / firewalling applications servers...>> if client cannot use sql but can use client1's ports,> and assuming client1 and client2 can do the sql bit...>> then you need a port configurable client server networking> protocol.>> in brief:> RRclient -> RR on Server -> SQLserver>> between RRclient and RRserver you use whatever protocol (80!)> Best is to have your client ask their network administrator> to see what is allowed and for what purpose.>> If you saw the forms we have to fill in for these requests> at my office you would scream!For sure very cool and secure from the cluster administrator's point of view...>> 2)>> For the clustering part now... For a redundant server...> but you can have more than one server also...>> Run two instances of RR. Named RRServer1 and RRS2.> Now only one application must work with the port communication> at the time but you can imagine either that one is locked up,> not responding, or working hard. It would be nice to have RR2> take over the next client's server call...>> What you do, is create a temporary file called rr1alive where> you write a frequent log - the frequency is the timeout for RR2> to kick and start working.>> There's the case where the RR1alive file is locked by the RR1,> which should be working but which should be closing the file.>> (is there a FileLocked(filepath) function in rr?)> You can use the file's date from the extended files function to> see the date anyway.>> So if there is a timeout trying to read that file, RR1 must be> locked. Terminate the proces s RR1. Relaunch RR1 and give it the> hand when you finished the current client processing.>> Note: usage of a different log for operations than the alivelog> is worth the trouble. You could keep a log opened in the case of> a processing but the alivelog should be kept closed to see when> the last alive was logged to prevent a double server taking parts> each of the same client's transactions (this can be prevented ez).>> Since transactions with SQL could take a while and queue up clients> you could imagine that another RRx takes over while the other> apps finish their transactions.Hum ! I like your proposal design, Xavier but why would we have to reinvent the wheel of the "transactions manager concept" when we can let Apache (on the in/out to public/VPN internet side) and the ACID-DB transactions managers handle tthat all for our Rev's appli