文章出處
View Code
View Code
文章列表
本文為 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 }
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 }
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 原創技術文章,發表于博客園博客,未經作者本人允許禁止任何形式的轉載。
文章列表
全站熱搜