Subsections
CherryPyはコンパイラとアプリケーションの中間に位置します。
- コンパイラのように、入力されたファイルを読み込み実行ファイルを生成します。実行ファイルはウェブサイトを実行するための全て(HTTPサーバも)を含んでいます。
- アプリケーションサーバのように、他のリソース(例えばデータベース)をリンクすることができる高度に動的なウェブサイトを提供します。
CherryPyによって生成されたサーバ内では、クライアント(例えばURLをリクエストするブラウザ)からの各リクエストはクラスのメソッドの呼び出しに変換されます。クライアントによって送られたパラメータはその関数の引数になります。
CherryPyを使えば、ウェブサイトの開発者は単にこれらのクラスとそのメソッドを実装すればいいだけです。パラメータがGETを使って送られたのか、POSTを使って送られたかを気にする必要がありませんし、またこれらが短い文字列であるかアップロードされた大きなファイルであるかも気にする必要がありません。これらは全て通常のpythonの文字列に変換され、メソッドへの引数として引き渡されます。これは開発者にとって全て透過的です。
CherryPyの入力ファイルはPython言語のエクステンションを使って記述されています。このエクステンションはCherryClass と呼ばれるいくつかの特別なクラスを定義します。これはCherryClass内で、以下のそれぞれ異なる型も定義します:
- function: これはいくつかのデータを処理するために使われます。これは通常のPythonで記述します。Functionは特徴として、なんらかのデータを入力として受け取り、なんらかのデータ(これはHTMLを返すmaskとは対照的です)を出力として返します(訳者:要は普通の関数だと思います)。
- mask: これはいくつかのデータを出力画面に表示するために使われます。これらはCHTLもしくはCGTL(これらはCherryPyのテンプレート言語です)で記述します。これら Maskは特徴として何らかのデータを入力として受け取り、HTML(もしくはXML; Javascript, ...)を出力として返します。
- view: viewは通常のPythonによって記述します。Viewは2つの異なる方法で使われます:
- これらはmaskのように、すなわちデ−タを画面に表示するために使われます。この場合、masksとの違いは記述される言語だけです。例えば、たくさんの静的データと小量の動的データを使ったページはmask(CHTLかCGTLで記述)としてコーディングするのがベストでしょう。たくさんの動的データと2、3の静的データを使ったページの場合はview(Pythonで記述)としてコーディングするのがベストだと思います。
- これらはfunctionとmaskをリンクするためとして使うことができます。この場合、特徴としてviewのコードは:
このmaskはfunctionの結果に適用されます (訳者:maskからの入力データをviewがいったん受け取って入力チェックなどを行った後、viewがfunctionを呼び出してデータを渡し、functionから返ってきた値をhtmlに表示しやすいように加工してからmaskに渡すということでしょうか。表示部分であるmaskが直接関数functionを呼び出すことはせず、いったんviewが仲介するということだと思います)。
CherryClassesで使われるfunctions, masks, viewsのこのコンセプトはCherryPyの主な特徴の一つです。CherryClassはデータを処理し結果を表示するための全ての情報を含むことができ、それが簡単に再利用したりサブクラス化できる内蔵モジュールになります。
CherryPyを使った強力なコンセプトのいくつかを見て来ました。それ以上のコンセプトは後で説明しますが、私達の最初のウェブサイトを作成する時が来たわけです。。。
Debian User
2003-10-13