关于Web程序框架的思考概览如下。
base /------------------\ / args[] \ / +-----+ \ / | | \ http://www.site.com/subsite/c-021/app/subapp/arg1/arg2?q=qstring \___________/\______/\____/\_________/\________/ \_______/ server root |realm app argv[] | qstring |_________________________| path ============================ $env[] ============================== +----------+ +----------+ +-------------+ | Client | | Server | | HttpApp | |----------| |----------| |-------------| | | HttpRequest | | | | | cookie +--------------> Session | | | | .css | | Auth +------> dispatch() | | .js <--------------+ | | | | | HttpResponse | | | | | | | | | | +----------+ +----------+ +-----+-------+ | $env[] | +---------------------+ | | +---------------+ +-----v-------+ +--------------+ | HttpPageModel | | HttpPage | | HttpPageView | | --------------| |-------------| |--------------| | | | $env[] | | | | | | $argc | | | | +------> $argv[] +------> | | | | $args[] | | | | | | | | | | | | | | | +------^--------+ +-----^-------+ +-------^------+ | | | | | | | | | +------+---------------------+----------------------+------+ | Helper & Model | |----------------------------------------------------------| | DbUtil Paginator | | | +----------------------------------------------------------+
所有的一切从一个客户端(Client)发出的URL请求开始。这个URL在服务器端(Server)被解析并映射到一个特定的程序(HttpPage)。
这个HttpPage调用各种资源,生成响应返回给客户端。