实现请求响应设计
问题描述:
我正在尝试实现请求/响应客户端。这是它的基本实现。实现请求响应设计
Class Request
{
prepareRequest1();
prepareRequest2();
}
Class Response
{
processResponse1();
processResponse2();
}
Class Client
{
connect();
sendRequest();
}
myrequest = new Request();
client = new Client (myserver);
my $rawResponse1 = client.sendRequest (myrequest.prepareRequest1());
myresponse = new Response();
myresponse.processResponse1 ($rawResponse1);
我有三个类 - 即请求,响应和客户端。请求类包含特定于请求的功能。这些请求是XML请求。除了少数初始标签(例如sessionid等)之外,XML请求没有任何共同之处。所有其他XML参数都是特定于请求类型的。所以,目前我正在通过为每个请求创建一个单独的函数来处理它。我明白它有一个可扩展性问题,但请建议我可以在此处应用的其他最佳方法。
与请求类似,对每个请求的响应都需要特定的处理。所以我有一个单独的功能,特定于每种类型的响应我期待。通常,您可以假设请求和响应之间存在1:1映射。
最后是手持连接的客户端类。
我有近50个这样的请求和响应,我打算用这种方法来实现。由于我处于开发的初始阶段,请为我推荐一些改进/最佳实践来实施此类请求/响应。
答
如果您在代码之外保留请求和响应的映射,那么它最好。更易于管理。保留一个xml配置文件,其中存储了与特定类型的xml消息绑定的请求和响应的类名。然后,您可以获取类名并转到该类来处理您的请求和响应。最好有独立的类来处理这些消息,而不是单独的方法。这更具可扩展性。确保你有所有你的请求类的接口,并且你的响应类也是一样的。这将可以很容易地通过修改XML配置文件方便地更换您的请求响应类..
希望你得到它:)
我几乎50多个不同类型的消息(请求/响应)。有50个班,每个留言一个班是好的。 – rpg
只要你觉得易于管理,上课就不算犯罪。但这又是我的看法。但是,如果你不想管理这些类,并且在请求和类之间有一个1-1映射,就像我建议的那样,你可以总是试着将'请求'一起聚合在一起,并使用同一个类来服务它们,但是它最好保留这个映射到哪个xml请求 - >映射到哪个类 - >映射到xml配置文件中的代码之外的哪个方法。这给你最大的灵活性。你将实例化你的类并通过反射调用方法 – sethu
谢谢sethu,这看起来更有希望。 – rpg