在前面的文章中提到了本项目的总体结构,将服务器和客户端划分为两个解决方案,同时服务器包括了UI处理(SharpStreamingServer)和核心类库(SharpStreamingServer.Core),客户端包括了UI处理(SharpStreamingClient)和核心类库(SharpStreamingClient.Core)。虽然这样的方案并无非常大的问题,但考虑到代码的重用性,服务器和客户端共用了其中一些代码,如日志记录、配置文件等,因此非常有必要将其中的一些公共代码提取出来。
根据上面所述,将原有的服务器和客户端两个解决方案合并成一个解决方案(SharpStreaming),该解决方案中包括三个类库和两个Windows窗体应用程序。这三个类库和两个Windows窗体应用程序分别为:
1、SharpStreaming.Core。服务器和客户端共用的代码类库,其中包括了日志记录类(Log)、常量类(Constants)、配置文件类(Config)、RtspCommon类、RTP/RTCP相关类等。
2、SharpStreamingServer.Core。服务器核心代码类库,其中包括RtspServer类、ServerSocket类、ClientSession类等。
3、SharpStreamingClient.Core。客户端核心代码类库,其中包括RtspClient类、MediaSession类等。
4、SharpStreamingServer。服务器UI项目,为Windows窗体应用程序,负责与用户的交互等。
5、SharpStreamingClient。客户端UI项目,为Windows窗体应用程序,负责与用户的交互等。
新的解决方案中各子项目的关系如下图所示: