开源倾情奉献:基于.NET打造IP智能网络视频监控系统(四)服务端介绍
本文为 Dennis Gao 原创技术文章,发表于博客园博客,未经作者本人允许禁止任何形式的转载。
开源倾情奉献系列链接
- 开源倾情奉献:基于.NET打造IP智能网络视频监控系统(一)开放源代码
- 开源倾情奉献:基于.NET打造IP智能网络视频监控系统(二)基础类库介绍
- 开源倾情奉献:基于.NET打造IP智能网络视频监控系统(三)命令行工具集
- 开源倾情奉献:基于.NET打造IP智能网络视频监控系统(四)服务端介绍
- 开源倾情奉献:基于.NET打造IP智能网络视频监控系统(五)客户端介绍
服务端介绍
目前在服务端实现了 4 个 WCF 服务:
- ServiceDiscovery(简称 SVD)
- DeviceConnector(简称 DVC)
- DeviceProfile(简称 DPS)
- MediaPublisher(简称 MPS)
服务建议启动顺序
- SVD - 服务发现目前有时后启动不太稳定,暂时没有调试这个问题。
- DVC
- DPS
- MPS
Service Discovery Service
SVD 服务实现 WCF Discovery ,当有服务上线时接收注册,并通过服务接口实现向外提供检索指定类型服务的功能。
1 [ServiceContract(SessionMode = SessionMode.Allowed)] 2 [ManagedServiceContract] 3 public interface IServiceDiscoveryService 4 { 5 [FaultContract(typeof(ServiceDiscoveryServiceFault))] 6 [OperationContract] 7 GetServicesResponse GetServices(GetServicesRequest request); 8 }
Device Connector Service
DVC 服务负责提供接口创建、连接、保活摄像机设备。
- 使用 Gimela.Data.MagpieDatabase 文档数据库进行本地数据存取。
- 使用 Gimela.Media.Video 进行媒体流数据的建立。
- 使用 Gimela.Net.Rtp 进行媒体流的封装。
- 使用 Gimela.Net.Sockets 进行媒体流的传输。
1 [ManagedServiceContractAttribute] 2 [ServiceContract(SessionMode = SessionMode.Allowed, CallbackContract = typeof(IDeviceConnectorCallbackService))] 3 public interface IDeviceConnectorService 4 { 5 /// <summary> 6 /// 获取摄像机源列表 7 /// </summary> 8 /// <param name="request"></param> 9 /// <returns></returns> 10 [OperationContract] 11 [FaultContract(typeof(DeviceConnectorServiceFault))] 12 GetCameraFiltersResponse GetCameraFilters(GetCameraFiltersRequest request); 13 14 /// <summary> 15 /// 获取桌面源列表 16 /// </summary> 17 /// <param name="request"></param> 18 /// <returns></returns> 19 [OperationContract] 20 [FaultContract(typeof(DeviceConnectorServiceFault))] 21 GetDesktopFiltersResponse GetDesktopFilters(GetDesktopFiltersRequest request); 22 23 /// <summary> 24 /// 获取指定的摄像机 25 /// </summary> 26 /// <param name="request"></param> 27 /// <returns></returns> 28 [OperationContract] 29 [FaultContract(typeof(DeviceConnectorServiceFault))] 30 GetCameraResponse GetCamera(GetCameraRequest request); 31 32 /// <summary> 33 /// 获取全部的摄像机 34 /// </summary> 35 /// <param name="request"></param> 36 /// <returns></returns> 37 [OperationContract] 38 [FaultContract(typeof(DeviceConnectorServiceFault))] 39 GetCamerasResponse GetCameras(GetCamerasRequest request); 40 41 /// <summary> 42 /// 创建摄像机 43 /// </summary> 44 /// <param name="request"></param> 45 /// <returns></returns> 46 [OperationContract] 47 [FaultContract(typeof(DeviceConnectorServiceFault))] 48 CreateCameraResponse CreateCamera(CreateCameraRequest request); 49 50 /// <summary> 51 /// 修改摄像机 52 /// </summary> 53 /// <param name="request"></param> 54 /// <returns></returns> 55 [OperationContract] 56 [FaultContract(typeof(DeviceConnectorServiceFault))] 57 UpdateCameraResponse UpdateCamera(UpdateCameraRequest request); 58 59 /// <summary> 60 /// 删除摄像机 61 /// </summary> 62 /// <param name="request"></param> 63 /// <returns></returns> 64 [OperationContract] 65 [FaultContract(typeof(DeviceConnectorServiceFault))] 66 DeleteCameraResponse DeleteCamera(DeleteCameraRequest request); 67 68 /// <summary> 69 /// 检测摄像机 70 /// </summary> 71 /// <param name="request"></param> 72 /// <returns></returns> 73 [OperationContract] 74 [FaultContract(typeof(DeviceConnectorServiceFault))] 75 PingCameraResponse PingCamera(PingCameraRequest request); 76 77 /// <summary> 78 /// 获取摄像机最新的快照图像 79 /// </summary> 80 /// <param name="request"></param> 81 /// <returns></returns> 82 [OperationContract] 83 [FaultContract(typeof(DeviceConnectorServiceFault))] 84 GetCameraSnapshotResponse GetCameraSnapshot(GetCameraSnapshotRequest request); 85 86 /// <summary> 87 /// 获取已发布摄像机的信息 88 /// </summary> 89 /// <param name="request"></param> 90 /// <returns></returns> 91 [OperationContract] 92 [FaultContract(typeof(DeviceConnectorServiceFault))] 93 GetPublishedCamerasResponse GetPublishedCameras(GetPublishedCamerasRequest request); 94 95 /// <summary> 96 /// 发布摄像机视频流至指定接收器 97 /// </summary> 98 /// <param name="request"></param> 99 /// <returns></returns> 100 [OperationContract] 101 [FaultContract(typeof(DeviceConnectorServiceFault))] 102 PublishCameraResponse PublishCamera(PublishCameraRequest request); 103 104 /// <summary> 105 /// 取消发布摄像机视频流 106 /// </summary> 107 /// <param name="request"></param> 108 /// <returns></returns> 109 [OperationContract] 110 [FaultContract(typeof(DeviceConnectorServiceFault))] 111 UnpublishCameraResponse UnpublishCamera(UnpublishCameraRequest request); 112 113 /// <summary> 114 /// 发布的摄像机保活机制 115 /// </summary> 116 /// <param name="request">摄像机保活机制请求消息</param> 117 /// <returns>摄像机保活机制响应消息</returns> 118 [OperationContract] 119 [FaultContract(typeof(DeviceConnectorServiceFault))] 120 KeepPublishedCameraAliveResponse KeepPublishedCameraAlive(KeepPublishedCameraAliveRequest request); 121 }
View Code
Device Profile Service
DPS 服务暴露简洁的接口,对外提供摄像机的基本信息,主要用以屏蔽或代理 DVC 服务。
1 /// <summary> 2 /// 设备信息服务接口 3 /// </summary> 4 [ManagedServiceContractAttribute] 5 [ServiceContract(SessionMode = SessionMode.Allowed)] 6 public interface IDeviceProfileService 7 { 8 /// <summary> 9 /// 获取全部摄像机的信息 10 /// </summary> 11 /// <param name="request">获取全部摄像机的请求信息</param> 12 /// <returns>全部摄像机的响应信息</returns> 13 [OperationContract] 14 [FaultContract(typeof(DeviceProfileServiceFault))] 15 GetCamerasResponse GetCameras(GetCamerasRequest request); 16 17 /// <summary> 18 /// 获取摄像机的信息 19 /// </summary> 20 /// <param name="request">获取摄像机的请求信息</param> 21 /// <returns>摄像机的响应信息</returns> 22 [OperationContract] 23 [FaultContract(typeof(DeviceProfileServiceFault))] 24 GetCameraResponse GetCamera(GetCameraRequest request); 25 }
View Code
Media Publisher Service
MPS 服务负责配置摄像机的媒体流的发布。
1 [ManagedServiceContractAttribute] 2 [ServiceContract(SessionMode = SessionMode.Allowed)] 3 public interface IMediaPublisherService 4 { 5 /// <summary> 6 /// 获取已发布摄像机的信息 7 /// </summary> 8 /// <param name="request"></param> 9 /// <returns></returns> 10 [OperationContract] 11 [FaultContract(typeof(MediaPublisherServiceFault))] 12 GetPublishedCamerasResponse GetPublishedCameras(GetPublishedCamerasRequest request); 13 14 /// <summary> 15 /// 发布摄像机视频流至指定接收器 16 /// </summary> 17 /// <param name="request"></param> 18 /// <returns></returns> 19 [OperationContract] 20 [FaultContract(typeof(MediaPublisherServiceFault))] 21 PublishCameraResponse PublishCamera(PublishCameraRequest request); 22 23 /// <summary> 24 /// 取消发布摄像机视频流 25 /// </summary> 26 /// <param name="request"></param> 27 /// <returns></returns> 28 [OperationContract] 29 [FaultContract(typeof(MediaPublisherServiceFault))] 30 UnpublishCameraResponse UnpublishCamera(UnpublishCameraRequest request); 31 }
本文为 Dennis Gao 原创技术文章,发表于博客园博客,未经作者本人允许禁止任何形式的转载。
转载于:https://www.cnblogs.com/gaochundong/p/opensource_ip_video_surveillance_system_part_4_service_side.html
开源倾情奉献:基于.NET打造IP智能网络视频监控系统(四)服务端介绍相关推荐
- 开源倾情奉献:基于.NET打造IP智能网络视频监控系统(五)客户端介绍
开源倾情奉献系列链接 开源倾情奉献:基于.NET打造IP智能网络视频监控系统(一)开放源代码 开源倾情奉献:基于.NET打造IP智能网络视频监控系统(二)基础类库介绍 开源倾情奉献:基于.NET打造I ...
- 开源倾情奉献:基于.NET打造IP智能网络视频监控系统(一)开放源代码
本文为 Dennis Gao 原创技术文章,发表于博客园博客,未经作者本人允许禁止任何形式的转载. 开源倾情奉献系列链接 开源倾情奉献:基于.NET打造IP智能网络视频监控系统(一)开放源代码 开源倾 ...
- 开源倾情奉献:基于.NET打造IP智能网络视频监控系统
转载自 http://www.cnblogs.com/gaochundong/p/opensource_ip_video_surveillance_system_part_1_introduction ...
- QT: 基于QT和嵌入式的视频监控系统
[摘 要]为了降低视频监控系统的成本,提高系统布防的简易性,使其具有较好的稳定性和实时性,利用QT 设计了一款基于嵌入式视频服务器的监控系统.系统采用三星公司的S3C2440 微处理器芯片为核心的AR ...
- 基于ARM的嵌入式无线视频监控系统
http://in.eccn.com/tech_260_2011031014214013.htm 赵晓军 任明伟苏海霞 曹建坤 王飞 陈雷 国内外市场上主要推出的是数字控制的模拟视频监控和数字视频监控 ...
- android同时预览多个监控,基于VLC的Android多路视频监控系统.pdf
2013年12月15日 现代电子技术 Dec.2013 第36卷第24期 ModernElectronicsTechnique Vol.36No.24 63 63 基于VLC 的Android 多路视 ...
- 基于ARM11+Linux的无线视频监控系统
转自:http://www.eccn.com/design_2012081614530361.htm 1 引言 随着无线网络的普及,ARM处理器运算的能力不断地增强以及计算机处理图像的技术不断地提高, ...
- 基于嵌入式技术的网络视频监控系统
随着计算机技术及网络技术的迅猛发展,世界掀起一股强大的数字化.网络化浪潮,对于公安.安防行业的发展,必须经历模拟数字混合的阶段,但是最终的趋势必然是全面数字化,即视频在前端进行数字化.网络化,采用嵌入 ...
- 【解决方案】SkeyeVSS视频云打造智慧景区视频监控系统促进智慧旅游产业发展
与传统景区的管理模式不同,智慧景区高度依赖智慧化手段,借用视频监控系统实现传统旅游管理方式向现代管理方式转变,提高景区的综合管理和运营能力,提升旅游服务品质,从而保障游客的人身安全和财产安全,提升景区 ...
最新文章
- Datawhale组队学习 Task04:队列(2天)
- SerialPort实现对串口COM的操作(有些纠结)
- 计算机主板的工作原理,计算机主板的工作原理.doc
- 服务器ip被网站屏蔽,各位,服务器IP被别人域名解析如何屏蔽
- 多线程与高并发(五):强软弱虚四种引用以及ThreadLocal的原理与源码
- [Codeforces702F]T-Shirts——非旋转treap+贪心
- oracle rac em cluster name,ORACLE 11G RAC重建EM问题
- 父组件访问子组件中的数据(父子组件通信案例:父组件访问子组件$refs[‘子组件‘],子组件传递数据给父组件(父组件中使用v-model))
- python ping利用线程池获取在线设备
- 【AI视野·今日NLP 自然语言处理论文速览 第十四期】Thu, 24 Jun 2021
- Python3 协程 + 正则 批量爬取斗鱼美女图片
- golang基础02
- 深度学习——最优化的学习笔记
- 案例研究:浮动静态路由
- 实用的摩斯编码(二)
- qt 读取mysql数据库_qt 读取mysql数据库
- mysql中data后面加什么_mysql中data_format用法
- 葫芦娃手游服务器未响应,葫芦娃混服S453无动于衷开服时间表_葫芦娃新区开服预告_第一手游网手游开服表...
- 基于igv.js的一个小工具
- 炼数成金(dataguru)IT技能修炼
热门文章
- WebSocket - 一篇文章读懂websocket
- 计算机老师开学第一堂课,开学第一堂课作文(精选8篇)
- python01python的基础知识点(一)
- 员工到管理者的四点转变|智测优测总结
- This application failed to start because no Qt platform plugin could be initialized. 报错解决方法
- [UOJ]#36. 【清华集训2014】玛里苟斯 线性基+分类讨论
- bzoj 3811: 玛里苟斯【线性基+期望dp】
- 左倾红黑树的原理及简单实现
- 总结下花了大约半年的时间从零开始的unity游戏开发(1)
- 做Web自动化前,你必会的几个技能