文章目錄
Beetle提供了基於Silverlight的實現Beetle.SL,由於WP7開發也是提供了Socket的支援所以Beetle.SL是完全可以在WP7下使用。還有ProtoBuf.net同樣也支援WP7,因此可以通過Beetle.SL+ProtoBuf.net就能在WP7下實現基於對象傳輸的TCP通訊應用。
首先建立一個WP項目,分別引用Beetle.WP.DLL,Beetle.WP.ProtoBuf.DLL和protobuf-net.DLL;以上組件分另可以到http://beetlesl.codeplex.com/和http://code.google.com/p/protobuf-net/擷取得到.接下來做個簡單的客戶查詢應用.
介面制定
主要功能是登陸後就可以進行一個客戶資訊查詢,可以輸入需要查詢的客戶名稱。
詳細代碼實現
建立一個基於ProtoBuf的Tcp串連,並在程式載入過程綁定相關事件
private Beetle.ProtoBufAdapter.ProtoBufChannel mChannel = new Beetle.ProtoBufAdapter.ProtoBufChannel(); private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e) { MessageAdapter.LoadMessage(GetType().Assembly); mChannel.Connected += OnConnected; mChannel.Disposed += OnDisposed; mChannel.Receive += OnReceive; mChannel.Error += OnError; }
通過連線按鍵事件進行一個TCP串連,並在串連成功後把查詢按鈕變成可用.
private void cmdConnect_Click(object sender, RoutedEventArgs e) { mChannel.Connect(txtIPAddress.Text, 4520); } private void OnConnected(object sender, EventChannelArges e) { this.Dispatcher.BeginInvoke(() => { cmdConnect.IsEnabled = false; cmdSearch.IsEnabled = true; txtStatus.Text = "Connected"; }); }
在查詢按鈕中進行一個查詢物件查詢,同時在接收事件中進行資料繫結即可。
private void cmdSearch_Click(object sender, RoutedEventArgs e) { Packages.Search search = new Packages.Search(); search.CompanyName = txtCustomerName.Text; MessageAdapter.Send(mChannel, search); } private void OnReceive(object sender, EventChannelReceiveArgs e) { MessageAdapter adapter = (MessageAdapter)e.Message; if (adapter.Message is Packages.SearchResult) { Packages.SearchResult result = (Packages.SearchResult)adapter.Message; this.Dispatcher.BeginInvoke(() => { lstCustomers.ItemsSource = result.Customers; }); } }
這樣一個簡單的使用者查詢就完成了,在windows phone下使用Beetle進行TCP通訊是不是很簡單的事情:)
如果你有需要可以到http://beetlesl.codeplex.com/ 擷取相關代碼