473,405 Members | 2,185 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,405 software developers and data experts.

app-server....


Okay, most of my career has been spent doing linguistics or
hardcore math, and letting other people write the interfaces
to it. Now I'm up for something a little different and I
need to expand my repertoire into network programming.
So I'm asking for basic pointers and help.

I need to write an application server. Fairly standard stuff,
and I was hoping that people here could recommend examples
and articles to me. Common Lisp, Scheme, or C sources are
especially welcome, as I can easily see what's going on in
those languages. If it's available under a BSD or similar
style license, that would be a plus, but mostly I'm looking
for examples of the process and process-management rather
than library code to actually use. Please let's have no
language or license flamewars.

Here's what I want to do: there is an application I've written
which behaves differently with different configurations. The
app server presents a "virtual" application to each customer,
with separate configurations in each "virtual" application.
These "virtual" applications are then available to users who
interact directly with the app, and customers who both interact
with and configure the app.

Basically there are three types of people who will be
interfacing with this software, and each of them has to have
an HTTP interface.

The "Admin" has priveleges (and interface) to stop and start
the app server, manage customer accounts, do basic (app-wide)
configuration, etc. This is probably going to be restricted
in such a way that it only accepts logins from a particular
IP address, possibly only from localhost, or with hard-core
encryption. Admin actions are not necessarily stateful; each
operation the admin needs to do can be an atomic operation.
Admin actions are also synchronous; there should be no problem
with doing them in the same thread as the main appserver. As
an aside, the admin interface could be in a terminal session
(command line or ncurses) if need be.

The "customer" is accountable to the Admin, but each customer
has their own app configuration information (ranging probably
from 0.5 to 5.5 megabytes or so, which sort of rules out CGI
as an appropriate technology) and their own set of user
information. Customers manage their own user accounts (or
leave their sites in "promiscuous" mode to accept connections
from anyone) and there is a type of interactive session the
app needs to do with customers to give them the ability to
update their configuration info. This also requires substantial
state, as the app has to track progress through stored logfiles
of user interactions. Customer sites and priveleges need to
be password-protected for customer access, but the admin
should be able to get to the customer screen in order to
investigate complaints or do contract work if the customers
don't want to do configuration themselves.

Each customer site may be using a separate ISO character set;
As far as the app is concerned, characters in the 127-256 range
are just letters, and the webpage templates in use are adequate
to give them the semantics of particular ISO characters on the
user's browsers. I believe that this approach will even work
fine with UTF8 Unicode, although I do sort of rely on the
ASCII space as a word separator.

Miscellaneous other customer priveleges include downloading
their config information (a binary blob) and uploading it
again so they can save versions of their site, causing the
system to write named versions of their config info to disk
or read from disk locally (on the server) so they can make
edits, create different versions, do some simplified form
of change control, etc, downloading and erasing logfiles
of customer interactions with "their" app, etc, all subject
to disk-space-per-customer limitations enforced by the app.

"Users" can load up the site with the configuration of a
particular "Customer" and interact with the app as though
configured according to that particular customer's config
information. This requires the preservation of about a
kilobyte of state from one interaction to the next; it
might be simplest or most robust to route it through a
hidden field in the webpage.

I figure one base URL plus 3 or 4 subpages for the site
admin (or possibly an ssh session and no HTTP interface),
one URL plus 3 or 4 subpages per customer interface (probably
password protected or encrypted) and one URL per customer
for user interface.

Assuming the app logic is already done and the page-building
template engine is mostly done, and I've coded CGI applications
before but know that's not adequate here, what resources will
seriously help me?

Bear

Nov 15 '05 #1
2 1785
"Ray Dillinger" <be**@sonic.net> wrote in message
news:yJ***************@typhoon.sonic.net...
I need to write an application server.


This is off topic for comp.lang.c.
Alex
Nov 15 '05 #2
["Followup-To:" header set to comp.unix.programmer.]

Ray Dillinger <be**@sonic.net> wrote:
Okay, most of my career has been spent doing linguistics or hardcore
math, and letting other people write the interfaces to it. Now I'm up
for something a little different and I need to expand my repertoire
into network programming. So I'm asking for basic pointers and help.

I need to write an application server. Fairly standard stuff, and I
was hoping that people here could recommend examples and articles to
me. Common Lisp, Scheme, or C sources are especially welcome, as I
can easily see what's going on in those languages. If it's available
under a BSD or similar style license, that would be a plus, but mostly
I'm looking for examples of the process and process-management rather
than library code to actually use ....


I learned network programming mainly from "UNIX Network Programming" by
Stevens, which I highly recommend. His "TCP/IP Illustrated" series is
also helpful, but the UNIX book is more practical and to-the-point.
IIRC, there was a later edition of the book with a different name; it's
been a long time since I've done network programming, and I haven't kept
up. Anyway, I'd generally recommend anything on networking by Stevens.

For Scheme, I'd recommend subscribing to the PLT Scheme mailing list (if
you're not already on it) and asking for pointers there. The list covers
networking topics quite often, and a lot of folks have created Web
servers and Web apps with MzScheme.

By the way, I'm not a regular at comp.unix.programmer, so that may not
be the right place to ask either. However, a Google search showed that
the more polite members of CLC typically direct network programming
questions over there.
--
Bradd W. Szonye
http://www.szonye.com/bradd
Nov 15 '05 #3

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

9
by: Buddy Ackerman | last post by:
I need to create a utility to shutdown another running application. I know you can get a Process object and execute the Exit method but that only works for apps that have a main window, mine does...
3
by: Brad Burke | last post by:
From a windows .Net app, I need to 1) check if MSAccess is already open to a certain Access application. If so, then open a form and find a certain record. 2) If not open, then open MSAccess and...
14
by: Salad | last post by:
On the computer side of the businees there is me, the developer. Another person's role is that of the idea man...the person that knows the business and requirements and issues for the business. ...
3
by: John Dalberg | last post by:
I am setting the HttpContext.Current.User in the Application_AuthenticateRequest event in global.asax.cs. When I use the IsInRole function in a web page, it works fine. So far so good. (Note that...
5
by: George | last post by:
VB.net 2003 standard, XP windows home edition. Installed first application OK today. When I removed the application via Control Panel, there were no problems and the app folders were deleted. ...
4
by: Mario | last post by:
I have a C# app that runs script files. The app is launched using a command line argument to indicate which script should run. Most scripts are run indefinitely in a loop and periodically perform...
3
by: smay | last post by:
I'm writing an app that is launched by right-clicking on an XML file and choosing Open With - My App. My App launches another 3rd-party desktop app to import the XML file into. However, before...
12
by: dbuchanan | last post by:
Hello, (Is this the proper newsgroup?) === Background === I am building a solution with two projects. One project is my data access layer which contains my DataSet as an xsd file. The XSD...
12
by: Dilip | last post by:
Hi All I have a server based C# console application. This application must hide its console window when its launched out on the field. So I dutifully P/Invoke'd FindWindow/ShowWindow...
9
by: AGP | last post by:
I have a VB6 application that has an OLE container with an embedded Excel chart. Our office updated to Excel 2007 and now although the app works the charts looks like crap. Since the app is fairly...
0
by: emmanuelkatto | last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud. Please let me know. Thanks! Emmanuel
0
BarryA
by: BarryA | last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
0
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
0
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers,...
0
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing,...
0
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.