一个C++实现消息分发功能架构设计的问题
有一个系统,主要是消息分发,然后根据接收到的不同消息类型,构造响应报文,然后回报文。通常实现,我们做个消息分发器,根据收到的不同消息,写不同消息的处理回调函数,在回调函数里返回回报。
这个系统能否做成插件式的?整个消息的类型可能以后还会扩展,有更多新的类型加进来,并且消息回报的处理方式也可能不相同,这样可否我提供消息分发器,然后回报处理让使用者(客户)自己实现?
弄一个回调函数Map,根据请求消息不同的ID,调用不同的回掉函数指针;另一头,客户将回调函数数组进行赋值,赋值成自己实现的回调处理函数,编译成DLL,和整个消息分发器结合使用?
另一方面,还有种做法,做一个通用的消息处理函数负责消息的回报。不同的回报消息利用配置文件配置,配置的主要内容是告诉这个通用的处理函数,回报消息体里各个字段分别取自哪里(请求消息、数据库、Or另行计算得到等等)。
我个人觉得如果第一种方式能够实现的话,后续可以将该系统的开发交与客户,进行后续的多次开发,可以根据自己的需求定制,我们只需要将主程序(消息分发器)实现好并提供即可。第二种方式看似对于客户省事了,客户只需要配置新的消息配置文件即可,但是由于新业务的不确定性,想做通用的消息回报函数很困难,新的业务加进来,难免会调整或增加新的处理,修改现有函数。并且通过配置文件来做这个事,也增加了异常处理的工作量,引入各种异常导致程序崩溃的可能性大增。
大家有什么好的建议?多谢!