201--12-15 04:02
1,TrackerClient与Tracker服务器一一对应,工厂模式创建
2,每个种子任务,只能从TrackerClient工厂里面选择一个Client来发信息,而一个Client收到的信息,可能同时到达多个种子任务处理程序
2010-12-01 19:32
1,命令服务器是CommandServer,业务代码可以直接在该实例上挂接事件处理方法,以处理各种消息的请求。需要返回消息给请求方时,直接序列化消息然后写入事件参数的数据流中即可。
2,命令客户端是CommandClient,需要配置参数NewLife.PeerToPeer.CommandServer以指定命令服务器地址。客户端采用WebClient同步收发消息,注意阻塞。
3,命令服务器托管于网站,可以在Web.config中配置HttpHandler,指向NewLife.IO.StreamHttpHandler,名称必须是Message.ashx,因为数据流工厂使用文件名作为总线名,而消息模型向总线注册的名字是Message。
4,Tracker跟踪服务器可以使用Tcp或者Udp,对应于网络服务NewLife.Net.Application中的TcpStreamServer类和UdpStreamServer类,启动服务前必须指定它们的StreamHandlerFactoryName为Message,原因同上。
5,所有数据将由数据总线汇聚于StreamHandlerFactory,消息模型自己注册了一个工厂,用于把数据流转换成为消息,但是消息模型自身无法处理消息,所以得通过消息工厂注册消息处理器来处理消息。然而消息模型尚不成熟稳定,目前暂时采用事件的方式通知业务层有关消息的到达,事件位于Message.Received。当前程序集的MessageServer封装了其使用方法。
6,在服务端,只需要针对CommandServer和TrackerServer挂接事件进行处理即可!(服务端框架搭建完成)
7,P2P客户端比较麻烦,既是数据发送方,又是接收方,可以考虑使用UdpServer。为了便于消息处理,把MessageServer的代码混合进去,如果觉得太大,也可以分开,主类处理消息,辅类处理通讯。
8,目前最大的问题在于客户端!
|