簡體   English   中英

Windows Service with WCF

[英]Windows Service With WCF

我需要構建一個在后台運行的應用程序,並在Windows啟動后立即啟動。 我需要第二個應用程序,它必須是Windows窗體,它向主應用程序提供狀態的表示和一些控件。

首先,我開始將Windows Service作為主要應用程序,將Windows Forms作為輔助應用程序,但是發現了一個嚴重的問題。 他們如何互相交流。 因此,TCP是我的第一個想法,但是防火牆阻止了我。

我研究並找到了WCF。 顯然,使用WCF可以在兩個應用程序之間進行通信,而不會造成太多麻煩,但是我從未使用過WCF,並且有兩點讓我感到煩惱。

WCF的防火牆有問題嗎? 使用Windows服務<=> WCF <=> Windows窗體是一種好方法,我的意思是,這不是一個壞習慣嗎?

請幫助我,我很失落。

使用WCF在Windows服務和前端應用程序之間進行通信是一種完美的方法。 我過去曾成功使用過這種方法。

WCF基本上是圍繞傳輸機制的抽象層。 您定義哪些數據需要交換; WCF負責如何交換數據。 關於WCF的真正好處是,它將您的數據交換變成了形式化的方法調用。 從您的角度來看,從Windows服務向應用程序發送狀態消息就像進行方法調用一樣簡單。 在幕后,WCF對消息進行序列化,將其發送到遠程端點,並在交換完成后將控制權還給您。

WCF在同一台計算機上或在多台計算機上都能很好地工作。 如果您在同一台計算機上,則可能要使用NetNamedPipeBinding 對於跨計算機通信,可以選擇多種選項,包括NetTcpBinding 我發現此流程圖在選擇綁定時很有用。

WCF綁定選擇流程圖

為了完全公開,出於以下三個原因,我對WCF感到沮喪:

  1. 與WCF相關的陡峭學習曲線。
  2. 缺少與Visual Studio IDE的無縫集成。
  3. 性能。

學習曲線是一次性的成本,但它可能是巨大的。 大約3年前,當我上一次使用WCF時,Visual Studio並沒有使其易於使用,這只會加劇我的學習難度。 今天,Visual Studio可能使它變得非常簡單。 我不確定。 不過,我真正的沮喪是表現。 以我的經驗,第一次調用方法時,WCF速度很慢,此后幾乎是瞬時的。 我的軟件的用戶多次對性能發表了評論,因此我今天使用的是基於TCP的解決方案,它可以緩解該問題。

對於您的特定問題,如果您的服務和應用程序在同一系統上運行,則防火牆應該不是問題。 只要確保使用本地主機地址(127.0.0.1)。 如果它們位於不同的系統上,則WCF可以通過http綁定之一幫助緩解防火牆問題。

我希望這有幫助。

我以前使用WCF在客戶端和服務器之間進行通信。 我認為沒有理由為什么您不能對兩個本地應用程序執行此操作。 不過,您應該查看這兩個鏈接。 他們可能會對您有很大幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM