Time of Update: 2018-12-07
Silverlight雖然提供了socket功能,但僅僅資料接收和發送的基礎功能,你必須還要息制定協議和處理煩腦的粘包問題才能更好地進行資訊處理.這裡介紹如何通過Beetle.SL這個基於Silverlight socket實現的開源組件如何方便地解決這些問題.下面通過組件在Silverlight下實現一個聊天室程式.聊天室的功能主要是登陸,擷取當前其他使用者和資訊轉寄.
Time of Update: 2018-12-07
在編寫網路通訊的時候我們經常需要把一些資料存放區到byte[]中然後再發送出去,數值則是我們經常處理的資料成員。發越少的東西意味著使用更少的IO和頻寬 ,所以對傳輸資料進行壓縮也是件非常重要的事情。接下來提到的就是一種基於數字儲存的方式在大多數情況下可以節省數值儲存空間。 Varint 是一種緊湊的表示數位方法。它用一個或多個位元組來表示一個數字,值越小的數字使用越少的位元組數。這能減少用來表示數位位元組數。比如對於 int32 類型的數字,一般需要 4 個 byte
Time of Update: 2018-12-07
組件發送的對象都必須實現IMessage介面,通過實現介面來描述一個對象的序列化過程;自訂讀寫流的好處就是可以得到更好的效能,但缺點也相對明顯的就是工作量比較多.在很多應用場合下所追求的並不是效能第一,而是希望省下這些煩鎖的工作,為了應付這種需要組件可以實現一個簡單的訊息適配器來完成這樣的功能.下面通過擴充的方式來實現組件對.net二進位序列化對象轉輸的支援.定義協議格式在TCP下進行資料互動通訊首先是要制定一個通訊的應用協議,由於組件提供基於結束符和頭大小描述的基礎分析器,可以從這基礎分析協中
Time of Update: 2018-12-07
文章目錄 功能簡介發送資料定義測試結果 一般在寫一些網路服務應用的時候都比較關注服務在網路同時讀寫的能力,為了方便對這方面應用的測試所以寫了這樣一個測試的工具。工具的主要作用可以通過不同的串連數來對一個服務應用進行一個讀寫壓力請求,並即時查看當前IO的讀寫次數和每次請求的延時情況等。為大家介紹的這個工具是第二版,相對於第一版主要引入了beetle
Time of Update: 2018-12-07
Beetle Agent是基於Beetle開發的代理服務軟體,其主要目的是接收使用者請求並根據實際請求的資訊進行一個負載處理,它可以靈活地把請求分發到不同的應用伺服器並把應用伺服器處理的結果返回給具體的使用者。 Beetle
Time of Update: 2018-12-07
如果不是編寫網路通訊應用相信對串連池接觸比較少,其實我們是經常用到的特別是使用ado.net訪問資料庫的時候,預設情況就開啟了串連池功能.串連池的主要功能是對N個串連循還複用,而不是每次使用都建立一個次的串連,通過減少串連建立達到一個更好效能的網路吞吐處理.
Time of Update: 2018-12-07
之前的章節裡已經講述了Beetle對不同應用協議的擴充和處理,在這章會講解Beetle實現一個比較通用的應用協議HTTP擴充.組件對於HTTP協 議的擴充也是一件非常簡單的事情,同時也能得到組件出色的效能和穩定性所支援.不過在實現之前必須對HTTP協議組成部分有個大概的瞭解.HTTP協議主 要由兩大部分組件分別是訊息頭和訊息體,訊息頭是必須的有於描述擷取相關內容和附帶的一些屬性如:GET /images/logo.gif
Time of Update: 2018-12-07
最近在用Silverligh做一個網路檔案管理程式,但用在設計介面的時候覺得Silverligh預設的button樣式太福士化了,所以就產生了自己定義按鈕樣式的念頭.在網路一找的確有很多這方面的文章,但都有一個問題就是只定義了按鈕的預設狀態的樣式.對於mouseover等基本都沒有的.還好後來在msdn裡找到詳細協助描述.以下就詳細講述Silverligh中定義一個按鈕各種狀態的樣式.
Time of Update: 2018-12-07
在資料設計的時候會針對一些欄位設定預設的值,Smark.Data同樣支援這樣的功能,組件通過在屬性中描述一個Value屬性來告訴組件這個值如果在沒有設定的情況應該提供怎樣的值。組件提供一個描述的基類,使用者可以根據實際情況的需要擴充出具體的預設值描述,以下是值描述基礎類: [AttributeUsage(AttributeTargets.Property)] public abstract class ValueAttribute:Attribute {
Time of Update: 2018-12-07
文章目錄 單一對象應答列表對象應答高串連並發 MS給.NET的socket非同步提供了IOCP的支援,對於IOCP這個模型來說相信做過網路應用的朋友都清楚他的效能。但經過.NET的封裝後他的效能又是怎樣呢?以下是.NET Socket的吞吐能力測試結果。測試服務端的配置為Core E4300 1.8g 2g記憶體win2003sp2,配置似乎有點舊,但這樣更容易體現.NET
Time of Update: 2018-12-07
由於Silverlight可以進行Socket Tcp通訊,所以就產生了一個想法用Silverlight製作一個網盤,而服務端則使用Beetle.網盤大致功能已經實現,不過由於基於瀏覽器的方式有檔案訪問安全問題所以不能實現斷點傳輸功能,如果把Silverlight程式設定在瀏覽器外運行則有更大的檔案讀寫權限.所以上傳和下載還在設計中相容兩種情況.以下是現有功能圖,除了上傳和下載其他準系統已經完成基礎功能示範 sl.henryfan.net
Time of Update: 2018-12-07
當寫完一個TCP服務的時候,是不是很想馬上測試一下這個服務的效能,它到底能應付怎樣的請求處理,其效能又是怎樣呢.相信以下這個小工具能幫到你的小忙,它是基於Beetle實現的一個小工具只需要設定一下參數就能對一個TCP服務進行一個簡單的吞吐效能測試.這個小工具可以設定發送的資料內容,串連的數量.其測試流程是串連先向伺服器發送指定的資料,等服務回應後進入下一次請求.工具可以看到每個串連的簡單資訊,包括:上一次請求應答延時,最大延時,最小延時和接收發送位元組數.工具狀態列下面是一個總體處理情況.如果工
Time of Update: 2018-12-07
最近在做網站應用程式的最佳化那自然就涉及到緩衝方面的處理,實際應用中不可能針對所有資料進行緩衝,所以那些資料要優先緩衝則變得非常重要.在.net提供一些緩衝功能如緩衝多長時間或依賴性緩衝,但這種緩衝方式都很有局限制,並不能達到緩衝高命中率的資料.為了實現這點在開始設計緩衝的時候採用了LRU演算法.這種演算法的主要作用是儲存最近使用的資料,可以簡單地使用一個雙向連結結合雜湊表來實現.當添加緩衝或使用時候把對應的項移至鏈表頭,通過一個計時器對鏈表尾進行掃描,把最後活動的資料進行清除.但這種設計似乎並
Time of Update: 2018-12-07
文章目錄 ProtoBuf.net的測試代碼BinaryFormatter的測試代碼ProtoBuf.net 的記憶體使用量情況BinaryFormatter的記憶體使用量情況 最近在做組件對象寫入流的最佳化,因此對一些.net下序列化組件做了一些測試,分別針對ProtoBuf.net
Time of Update: 2018-12-07
Protobuf.net是Protobuf協議在.net平台下的實現,它支援源生的.net程式,Silverlight和window phon7的二進位序列化功能.在這裡主要講述在Silverlight
Time of Update: 2018-12-07
藉助於擴充方法的功能,這一版本的改進可以讓資料庫操作變得更簡單方便,在資料庫操作相關會給你一種全新的體驗.主要改進有以下幾點:條件運算式可以直接和string進行組合,從而更靈活地建立複雜的查詢條件擴充Load_方法,可以直接在值對象的基礎上擷取相關ID資料對象擴充一系的查詢方法,可直接在string的sql上進行資料操作,包括查詢擷取查詢對象資料.在操作過程完全不需要藉助於其他對象來處理.擴充可以直接在預存程序對象進行執行操作以上的一系列擴充都是直接能操作資料,而不再需引用相關條件對象或資料庫
Time of Update: 2018-12-07
當一個aspx頁面請求處理包括大量的IO工作,而這些IO資源又非常有限的情況下,那這個頁面在對面大量請求的時候就有可能導致大量線程等待處理,從而使應用程式線程開銷過多影響整體的處理效能.在這種情況我們更希望通過一個隊列的機制控制處理線程的開銷來實現更高效的處理效能.因此.net提供IHttpAsyncHandler來解決這些事情,但有個問題就是實現一個IHttpAsyncHandler意味著要自己要實現自己的處理過程,並不能對已經實現功能的.aspx進行控制.但通過反編譯.net代碼來看可以實現
Time of Update: 2018-12-07
Razor在文法上的確不錯,用起來非常方便。除了在asp.net
Time of Update: 2018-12-07
Thread.Sleep的主要功能是讓線程掛起一段時間,而指定的時候可以是毫秒為單位,由於windows操作並不是即時作業系統,所以當Thread.Sleep指定的毫秒數少於15以下那基本是不太可能在這個時間內恢複線程到工作狀態。既然是這樣那在設計隊列的時候就不得不面對一個處理延時的問題,首先看下以下代碼:public virtual void Run() { while (!mDispose) {
Time of Update: 2018-12-07
有此時候我們需要大概計算一些過程在1秒中處理的數量,.net雖然提供了一些計時方法如Stopwatch計算代碼運行所損耗的時間,但並沒有提供每秒執行的計數.為了方便解決這種需要因此實現了一個簡單秒計數器來完成這些功能,也順便分享這樣一個小小的類.使用秒計數器假設我們現在有兩個線程處理方法,而方法裡是不停地去處理一些東西,我們需要計算每個方法每秒處理的數量是多少可以這樣做. mCounter = new SecondCounter(); mTest1 =