私のアプリケーションcontroller
と呼ばれるアプリケーションワイドオブジェクトをインスタンス化します。また、私はサーバーを起動しています。冗長性を低く保つため、各リクエストでフロントエンドをcontroller
にインスタンス化したい場合は、controller
へのコピー/参照ですが、追加のpool
プロパティがあり、リクエストワイドオブジェクト/ configsを含み、controller
。追加のコンテキスト固有のプロパティを持つ参照を定義する
var applicationPool = new ObjectPool(); // container for objects
var controller = new Controller(); // application wide instance
var server = http.createServer();
applicationPool.set("myController", controller);
server.on("request",function(req,res){
var requestPool = new ObjectPool();
requestPool.set("request",req);
requestPool.set("response",res);
/*
* pool population
* routing
* controller resolving
* parameter resolving
*/
// frontend specific to current request
var frontend = applicationPool.get("myController").create(requestPool);
// hopefully finishes res
frontend.greetAction(parameters);
/*
* post response actions
*/
}
server.listen(3000);
そしてController
クラス:BaseController
クラスに関する
function Controller(){
BaseController.call(this);
// ...
}
function greetAction(parameters){
var res = this.getObjectPool().get("response"); // defined in BaseController
res.end(format("Greetings, %s!",parameters["name"]));
}
Controller.prototype = Object.create(BaseController.prototype);
Controller.prototype.greetAction = greetAction;
追加私の考え:
function BaseController(){ ... }
function getObjectPool(){
return this.pool;
}
function create(pool){
var frontend = Object.create(this.__proto__, this);
frontend.pool = pool;
return frontend;
}
BaseController.prototype.getObjectPool = getObjectPool;
BaseController.prototype.create = create;
これは、私が行き詰まったです。私がテストしたもののために。 pool
をfrontend
に追加すると、controller
オブジェクトにも適用されます。私は新しいオブジェクトを作成し、controller
のすべてのプロパティを追加することを考えています。私はプロキシを一目で見て、controller
をターゲットとし、get
のトラップをgetObjectPool
としています。
私は修正を知っていますres
は直接悪い習慣です。おそらくstring
/buffer
が返されます。しかし、説明されている問題はそのままです。私は他のコントローラを組み込む予定です。
私は、Controller
クラスとgetContainer
メソッドを持つPHP + Symfonyから来ています。同じことをするコアオブジェクトのショートカットです。
ご迷惑をおかけして申し訳ございません。私はこれを解決しようとしています。
乾杯!