我们公司向其客户提供音乐服务。该产品包括一个自动mp3播放器和每日更新/更新下载到他们机器的costumers音乐库(mp3歌曲)。到目前为止,我们通过使用GBridge同步服务器和客户端文件夹,为mp3更新使用了一个丑陋的解决方案。这显然是一个缺点,因为我们迫使我们的客户下载我们的整个音乐库(目前25.000首歌曲),而他们中的大多数将永远不会播放我们所有音乐类别(流行音乐,摇滚乐等)的歌曲。最重要的是我们只能提供一个订阅包(我们的整个音乐库),而我们的竞争对手按价格较低的类别提供包。出于这些原因,我们决定转向WCF。
该服务使用PerCall实例化模式并实现两个操作,从具有经典请求 - 回复模式的winform客户端应用程序调用。
第一个操作从数据库中检索允许客户端下载的类别(请求),并将这些类别的列表发送回客户端(回复)。
第二个操作用于下载。客户端首先下载服务器数据库的xml版本。类似的xml位于客户端。客户端应用程序检查从第一个操作返回的每个类别中哪些歌曲在其自己的xml中与服务器的xml文件相比丢失。如果缺少任何文件(xml上的元素),则一次下载一个文件。每次下载后,客户端都会更新他的xml并再次进行相同的比较,直到所有文件(元素)在2 xml中匹配。
长话短说,考虑到服务的实例化模式是出于吞吐量原因的PerCall并且保持低内存消耗,并且我的操作都使用请求 - 回复模式,这意味着确认消息将被发送回客户端来自服务的每个响应,如果连接中出现问题或客户端无法访问服务,我可以在客户端上捕获CommunicationObjectFaultedException,重新构建代理并重试您是否认为我的服务需要可靠的会话实施?如果我在刚刚描述的操作中没有可靠的会话,会出现什么问题?