程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> WF4.0實戰(十五):傷心聊天室

WF4.0實戰(十五):傷心聊天室

編輯:關於.NET

大家都知道,一般能使用WCF的Callback Contract能實現聊天室。這篇文章我將使用WF4.0是實現我的傷心聊天室。先看效果,再講如何 實現和使用WF4.0的優勢,最後總結。界面很簡潔,請見諒。

效果篇:

首先啟動StartAChatRoom項目,開啟傷心聊天室如下圖:

登錄:

聊天主界面:

上圖的左邊有一個復選框,你可以選擇向哪些人發送信息。右上角是離開按鈕。點擊我要離開,就關閉你的聊天室客戶端。

麒麟發送信息:

美女A接受到信息,如下圖:

演示就到這裡,下面講述如何實現。

實現篇:

本文是利用了WF4.0裡面的WCF服務的雙工通信實現的,WF4.0裡面的雙工通信與WCF裡面的實現方法不一樣。詳細見下面兩篇文章:

Workflow 4 Services and duplex communications(譯文)

More Workflow 4 Services and duplex communications(譯文)

說到這裡,你應該很清楚是如何實現的了。對,還是利用了WCF技術。不過我還是要講述一下如何用WF4.0去實現的,這樣也能加深你對 WCF和WF的了解和以及它們之間的區別。

下圖是我的代碼的項目結構圖:

ChatRoomService是WCF Workflow Service Application項目

ChatRoom_Client是WindowsForm項目

StartAChatRoom是控制台應用程序。

下面我就說一下核心的邏輯,其他的部分詳見代碼。

我假設你和我一樣,對WCF稍微有些了解。否者就很難進行下去。:)

看下圖:

上圖可以看到傷心聊天室的邏輯了。它一共有6個方法:

1、開啟聊天室。

2、加入聊天室。

3、離開聊天室。

4、將消息發送給所有人。

5、將消息指定發送給某些人。

6、獲取本聊天室所有人員。

WF4.0的雙工通信的實現部分是在客戶段。

我在傷心聊天室的每個客戶段開啟一個WCF服務,代碼如下:

Random ro = new Random();
int point = ro.Next(8000, 9999);
ChatRoomCallback back = new  ChatRoomCallback();
address = "http://localhost:" + point + "/ServiceCallback";
var serviceCallback = new  ChatRoomCallback();
serviceCallback.MainFrm = this;
back.UISyncContext = SynchronizationContext.Current;
var  host = new ServiceHost(serviceCallback, new Uri(address));
host.Open();

看上面代碼你就知道,我將客戶段的WCF服務的地址當參數傳入服務端。如果你對WF稍微有些了解,你就知道可以用Send活動去調用WCF 服務。

雙擊“加入聊天室”,看下面的截圖:

這樣已經很明白了,我的文章都提供了代碼下載,直接看代碼吧。:)

WF4.0優勢:可視化編程、直觀、簡單、設計時無代碼或者很少量的代碼。

總結:通過使用WF4.0實現了一個簡單的聊天室,我想這個Demo還可以擴展。

本文配套源碼

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved