2012-02-23 98 views
2

我需要一些建議,以便如何接近我準備開始的項目。WCF或Windows服務建議需要

我們有一個windows應用程序包含20個圖表控件的用戶界面,每個圖表控件都有自己的選項卡控件。

這些圖表顯示零件在工廠中通過輸送線時的數據。

每張圖表顯示來自傳送帶不同區域的不同傳感器的數據。

傳感器全部與黑匣子接口通信,然後發送一個字節[]流。

我連接到服務器上的套接字連接的字節流,並將數據讀入我的程序。

連接到該套接字時,字節流會發送最後100條記錄來更新圖表。

第一個最初的100個記錄之後,字節流只發送更新的數據。

該字節流不斷變化,每隔幾秒鐘。

我無法對字節流的工作方式進行任何更改。

windows應用程序中,我將該字節流分開,將其翻譯成可讀數據並將該信息存儲到內存中的表中。

只有最後100條記錄存儲在表中。

使用後臺工作者,我不斷地讀取字節流並更新表格 ,並從那裏更新圖表。

所有這些工作都在窗口應用程序完成。

我想創建一個服務來完成所有這些工作英寸

我想有服務發送剛序列化的圖表數據,並創建一個圖形用戶界面,將在圖表閱讀客戶端結束並向用戶更新圖表。

我必須有能力更新客戶端的服務器從字節流更新。所以所有更新都必須通過服務器啓動。

我曾看過WCF,但似乎使用背景工作是皺眉。

但是,僅僅使用windows服務看起來很可能,但客戶端必須定期發起一個回調服務,並且不會實時進行。

我想過這兩者的混合物,但這似乎是矯枉過正,但也許不是 - 這就是爲什麼我在這裏尋求建議!

任何幫助或建議,將不勝感激!謝謝!

回答

2

我會做這樣的:

[黑盒子] - > [ - > [運行] - > [數據存儲] - > [WCF服務] - > [您的應用程序]

主要架構:

  • 窗口服務[服務]定期拉從框數據
  • [服務]抓住它在本地存儲中的某個地方數據並存儲:數據庫,時間序列,平面文件
  • [服務]也封裝了黑匣子,其餘的基礎設施不再與[黑匣子]交談,只與您的wcf服務對話。這很好,因爲您可以根據需要製作接口。
  • [wcf服務]是您應用程序數據需求的唯一接口,它通常託管在其他方面:您的應用程序,Windows服務或iis。 Iis是最簡單的選擇。
  • [你的應用]是來自wcf服務數據的最終用戶,它不知道有關黑匣子的任何信息。
+0

好的!這是我最初的想法。只是想確定它不是一個矯枉過正的解決方案,或者是維護的噩夢。感謝您的輸入。 – 2012-02-23 15:50:40

+0

聽起來合理。我唯一的觀點,也許取決於黑盒數據的歷史需求,可能是用寫入/加載界面隔離同一個[wcf服務]後面的[數據存儲]。 – kenny 2012-02-23 16:44:37

+0

@kenny合理的建議。然而,由於wcf工作只是將數據以其自己的格式呈現給其他用戶,並且對所有wcf內部數據轉換的績效徵稅,我會將「實時」數據直接寫入數據存儲。 – b0rg 2012-02-23 17:00:04