实践中面向对象建模困难

看了很多关于 bang 的文章,感觉也很不错,但是待到实践之时,却又难以下手,思维从以数据库建模转化为面向对象方式遇到很大的障碍。现在有个很简单的问题想要问下,希望能够给予启迪,大恩言谢了。:-)

现有 服务请求方 和 服务应答方 两方
其中采用HTTP , “请求-应答机制”

首先是
服务请求方 POST 待处理文件 -> 服务应答方
服务应答方 检查 待处理文件 返回RESPONSE

然后
服务应答方 对文件进行处理
处理完成 服务应答方 POST 处理完成结果文件 -> 服务请求方

自我解析:
照意思,该交互分为两步,其中包括一个处理过程
如果服务应答方并发量比较大,
以任务的形式来实现 即(处理任务)(POST处理完成结果文件任务)
检查待处理文件通过 生成 处理任务
处理完成 POST处理完成结果文件任务

但是这些任务该如何启动呢?
如何知道任务生成了

谢谢


把自己注册到任务当中去,线程通信大概常用这法子。

能说的详细些吗?

继续关于题目的分析:
可不可以是一个任务,两个阶段的处理过程
任务进行到 处理阶段
任务进行到 POST结果阶段

如果这样,如何把任务注册到通信线程去呢,谢谢

异步,在检查 待处理文件同时,启动一个新的任务,进行对文件处理,而当前任务继续返回RESPONSE。

我好像看错了,这个问题好像不需要通知任务过程当中的细节,所以不必把调用者注册进去,只要在run当中启动另一个线程就行了,关键是最后的“处理完成 服务应答方 POST 处理完成结果文件 -> 服务请求方”这个在web环境里不是很好办,虽然有Comet什么的也不是那么好,我试过只回传一个字符串,在本机的client也需要等上一阵子。

异步处理之时,启动新的任务执行文件处理,当前任务返回RESPONSE。是任务的第一步,可是第二步,文件处理结束,如何执行下一步下一步操作呢?freebox老师(呵呵,暂时这么称呼哈)点道德是我很想知道的,如何在web环境进行第二个任务启动后的反馈呢,谢谢!

多个任务之间相互独立,如果采用线程将产生高昂代价,需要管理和保存,如何可以将任务从线程中分离处理,线程应该是驱动任务的具体机制 是吗,想问下OO的思想如何贯穿的到这个问题上面来呢。迷茫中。。。

线程太底层,一般不是任务实现的首选机制。
观察者模式 事件reactor等模式都是可选方案,还有JMS架构等。
这些都是OO思想的体现。也就是说,提了需求以后,别立即想着用什么具体技术,而是从架构设计层面来看如何实现。

其实swing里的事件机制就是这样的形式,seam里的观察者实现也可以在某部分通知其它类的方法调用。


class Client{
public void sendFile(File file){
CheckServer server=new CheckServer(this);
server.check(file);
}
public void showState(String state){
debug("state is :"+staste);
}
}
class CheckServer{
private Client client;
CheckServer(Client client){
this.client=client;
}
public void check(File file){
//check file
//fileName last with .rar
client.showState("checking is ok");
//use other task
new RarServer(client).rar(file);
}
}
class RarServer{
private Client client;
RarServer(Client client){
this.client=client;
}
void rar(File file){
//rar file
client.showState("rarFile is ok");
}
}

至于我最后说的那个Comet可以参考一下dwr里面的demo,服务器推方式,连接太长以至于连接多的时候非常不良。

谢谢两位老师,思想有所觉悟了。
顺便提个小建议给版主吧,为什么论坛发言的底部没有回复按钮呢,有点不方便哟,特别是对于电脑慢的我来说。:-)