关于服务端的设计...请大家指教 ( 积分: 200 )

  • 主题发起人 zhoulingj
  • 开始时间
Z

zhoulingj

Unregistered / Unconfirmed
GUEST, unregistred user!
我现在希望自己的服务端可以做成这个样子
首先服务端本身是一个系统服务...
然后服务端的一样功能,都做成DLL,然后可以动态的添加删除功能,并且可以单独的启动某一个DLL.
但做起来完全没有思路.请大家指教
我不懂的是,我一个服务里如何动态的将一个功能DLL加入并启动(停止并删除),
 
Z

zhoulingj

Unregistered / Unconfirmed
GUEST, unregistred user!
各位大哥.如果我说的不清楚请大哥们言明一下.不要不回答嘛!我很急的!!1
 
Z

zhoulingj

Unregistered / Unconfirmed
GUEST, unregistred user!
倒啊.居然还是没有人???自己顶一下....
 
Z

zhoulingj

Unregistered / Unconfirmed
GUEST, unregistred user!
走过的路过的朋友们,请帮忙顶一下也是好的嘛!
我再详细描述下我的问题吧.
程序分为客户端和服务端二部分,客户端会往服务端发送一些数据包,而服务端会根据包的类型作出相应的处理.而现在我的做法是,所有包的处理都写在程序里,如果添加一些功能的话我就只有改服务端的程序.这种做法的坏处就是如果我只是要添加一个很小的功能,我也得把服务端进行重启(呵,请不要建议我把功能积累起来后一起更新服务端)
所以我希望把服务端中对数据包的处理部分,写成一个一个的DLL,我可以任意的添加删除,这样,当然需要添加功能的时候只用添加一个DLL进去,那么这个功能也就可以被使用了.我需要更改已有的一个功能时,也只用把那个DLL先停止掉.然后删除,再添加一个更新过的DLL,并启动就可以了.
想请教,想实在这样的服务端应该如何做呢?
 
J

jlutt-sadan

Unregistered / Unconfirmed
GUEST, unregistred user!
接口啊,在协议包头先描述功能的字符串,服务端根据该字符串调用相应的接口DLL进行处理。
类似下面的接口
IFuncExecute = interface
function GetVersion: string;
function Execute(Param): Boolean;
end;
每个DLL返回一个实现上面接口的实例类即可
 
Z

zhoulingj

Unregistered / Unconfirmed
GUEST, unregistred user!
老大们.能不能多给点提示啊?
 
L

ljmxy

Unregistered / Unconfirmed
GUEST, unregistred user!
用插件管理的形式应该可以做得到吧.
 
Z

zhoulingj

Unregistered / Unconfirmed
GUEST, unregistred user!
问题就在于这个插件管理了哦!
有没有示例或者资料呢?
 
D

delphfans

Unregistered / Unconfirmed
GUEST, unregistred user!
就是接口 和通信等数据的传输 函数指针的 传来传去 。我也在做这个东西 qq:729974631
 
M

muhx

Unregistered / Unconfirmed
GUEST, unregistred user!
动态加载DLL就可以了

关闭:释放DLL
开启:动态加载DLL
这样就不需要关闭服务端了
 
Z

zhoulingj

Unregistered / Unconfirmed
GUEST, unregistred user!
汗~~~
其实我也知道肯定是动态的加载释放DLL.问题在于我不知道整个框架应该如何搭...
希望得到大家的帮助
 
B

barton

Unregistered / Unconfirmed
GUEST, unregistred user!
最好的插件管理体系就是COM了。你定义一个公共的接口,然后在配置中添加接口的实现器。如果你不愿意用COM的话,你可以定义成一组函数,然后在每个DLL中实现这些函数。服务器主进程只需要管理这些DLL即可。一般来讲,插件体系中比较困难的是你如何定义这些函数,因为你基本上没有机会修改这些函数。相反,管理这些DLL是非常简单的。你可以利用一个配置文件,在配置文件中列出了每个DLL的路径。你可以根据配置文件的指引将这些DLL一个个地装入并启动。如果你愿意,你可以加入一种机制,可以自动侦测某个目录中内容的变化来确定是否需要重新装入配置,从而重启服务器进程。
COM的好处是你一旦需要修改接口,你可以添加接口的新版本,在原来的基础上添加新的功能而不影响以前的功能。
 
Z

zhoulingj

Unregistered / Unconfirmed
GUEST, unregistred user!
自己顶一下
 
Z

zhoulingj

Unregistered / Unconfirmed
GUEST, unregistred user!
多人接受答案了。
 
顶部