文章出處

本文為 Dennis Gao 原創技術文章,發表于博客園博客,未經作者本人允許禁止任何形式的轉載。

開源傾情奉獻系列鏈接

服務端介紹

目前在服務端實現了 4 個 WCF 服務:

  • ServiceDiscovery(簡稱 SVD)
  • DeviceConnector(簡稱 DVC)
  • DeviceProfile(簡稱 DPS)
  • MediaPublisher(簡稱 MPS)

服務建議啟動順序

  1. SVD - 服務發現目前有時后啟動不太穩定,暫時沒有調試這個問題。
  2. DVC
  3. DPS
  4. 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 服務負責提供接口創建、連接、保活攝像機設備。

  1. 使用 Gimela.Data.MagpieDatabase 文檔數據庫進行本地數據存取。
  2. 使用 Gimela.Media.Video 進行媒體流數據的建立。
  3. 使用 Gimela.Net.Rtp 進行媒體流的封裝。
  4. 使用 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 原創技術文章,發表于博客園博客,未經作者本人允許禁止任何形式的轉載。


文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜

    大師兄 發表在 痞客邦 留言(0) 人氣()