有很多朋友要求給出乙個應用esframework的demo,在前面介紹esframework支援的4層架構中(回顧),有as、fs、iras,其中fs的功能需求最簡單,所以本文就給出乙個fs實現示例。
fs主要用於管理功能外掛程式,並且將所有的功能性請求都**給對應的功能外掛程式處理,不需要關心使用者(由as管理)、不用關心具體的業務需求(由對應的功能外掛程式處理),所以fs非常的單純,基本上是與應用無關的,可以在任何應用中復用同乙個fs。(但是as和iras就很難復用了,因為不同的應用對as、iras的需求的差別可能非常大)。
實際上,fs的實現自己只包含4個cs檔案,絕大多數元件都由esframework提供了。下面是fs專案中檔案的結構圖:
其中,mainform是主介面,fsconfiguration是fs的配置,下面馬上會講到的是functionserver這個fs中的核心類。
我們已經知道,fs通過tcp發布服務給as使用,即as通過與fs之間的tcp連線池來使用fs提供的服務,所以會使用到esframework提供的itcp元件。
其次,fs需要管理所有的功能外掛程式,所以它需要使用esframework提供的iaddinmanagement元件。
在理解了這兩點的基礎上,我們可以定義functionserver這個類了,它很簡單,所有方法及實現如下所示:
public
void
loadaddins()
public
void
start()
public
void
stop()
public
void
readytoexit()
各個方法的含義和成員變數的含義相信大家已經非常的明白了,由必要解釋一下serverperformancemonitor,它用於監控本伺服器的效能狀態,並將效能資料通過事件發布。如果你讀過前面的文章,你會知道,這些效能資料將被傳送給as,然後as根據這些效能資料在多個fs上進行負載均衡排程。asremotingserviceaccesser用於訪問as發布的遠端服務,比如fs啟動或退出時通知as。
fs核心的類functionserver就這些功能。你一定非常想知道,itcp、itcpstreamdispatcher等是如何與functionserver裝配起來的,謎底馬上揭曉。相對於使用4個cs檔案就實現了fs來說,fs的元件裝配就稍微複雜些(as則更複雜)。我採用spring.net來完成元件裝配。
我們先看itcp元件的裝配:
<
object
name="
agiletcp
"type="
esframework.network.tcp.agiletcp,esframework
"init
-method="
initialize
">
<
propertyname="
port
">
<
object
type="
spring.objects.factory.config.propertyretrievingfactoryobject,spring.core
">
<
propertyname="
targetobject
"ref="
fsconfiguration
"/>
<
propertyname="
targetproperty
"value="
tcpport
"/>
object
>
property
>
<
propertyname="
maxmessagesize
"value="
2000000
"/>
<
propertyname="
dispatcher
"ref="
tcpstreamdispatcher
"/>
<
propertyname="
contracthelper
"ref="
contracthelper
"/>
<
propertyname="
bufferpool
">
<
object
type="
esframework.network.tcp.******bufferpool,esframework
"/>
property
>
object
>
如果你研究過agiletcp元件,上面的配置非常容易理解,最主要的,agiletcp使用的分派器元件,分配器元件的裝配如下:
<
object
name="
tcpstreamdispatcher
"type="
esframework.network.tcp.tcpstreamdispatcher,esframework
">
<
propertyname="
contracthelper
"ref="
contracthelper
"/>
<
propertyname="
tcpclientscontroller
"ref="
agiletcp
"/>
<
propertyname="
requestdeale***ctory
">
<
object
type="
esframework.network.funaddindeale***ctory,esframework
">
<
propertyname="
addinmanagement
"ref="
addinmanagement
"/>
object
>
property
>
object
>
非常需要說明一點的是,訊息分派器使用的處理器工廠是esframework.network.funaddindeale***ctory,因為它只需要處理功能請求,並且這些功能請求是由功能外掛程式處理的,所以使用esframework.network.funaddindeale***ctory就可以了,而不需要使用功能全面的esbrequestdeale***ctory,esbrequestdeale***ctory通常由as使用。
最後乙個重要元件的裝配--functionserver:
<
object
name="
functionserver
"type="
functionserversystem.server.functionserver,functionserversystem
">
<
propertyname="
agiletcp
"ref="
agiletcp
"/>
<
propertyname="
addinmanagement
"ref="
addinmanagement
"/>
<
propertyname="
serverperformancemonitor
"ref="
serverperformancemonitor
"/>
<
propertyname="
asremotingserviceaccesser
"ref="
asremotingserviceaccesser
"/>
object
>
毫無秘密可言!
還有就是主介面mainform的裝配,就不羅列了,大家看原始碼就知道了。這是fs的乙個例子,如果你需要看到客戶端的例子,
agileim的原始碼是乙個選擇,不過agileim稍微複雜了些,過段時間我會給出乙個簡單的建立在esframework上的客戶端實現。
下面是fs執行時的截圖:
轉到:esframework 可復用的通訊框架(序)
ESFramework應用示例 可復用的FS
有很多朋友要求給出乙個應用esframework的demo,在前面介紹esframework支援的4層架構中 回顧 有as fs iras,其中fs的功能需求最簡單,所以本文就給出乙個fs實現示例。fs主要用於管理功能外掛程式,並且將所有的功能性請求都 給對應的功能外掛程式處理,不需要關心使用者 由...
ESFramework 通訊框架
esframework 是一套效能卓越 穩定可靠 強大易用的跨平台通訊框架,支援應用伺服器集群。其內建了 等功能。基於esframework,您可以方便快捷地開發出各種優秀的網路通訊應用。此外,我們在長期實踐中所積累的豐富經驗,更將成為您強大的技術保障,從開發到上線直至後續運維,全程為您保駕護航,讓...
HOOK應用示例
我們知道,windows系統是建立在訊息傳遞機制基礎上的,幾乎所有的程式活動都由訊息來驅動。windows的鉤子機制可以看作是乙個訊息中轉站,控制系統發出訊息的處理和傳遞,利用鉤子,我們可以截獲系統發給應用程式的訊息,經過處理後決定是否將訊息再發給下乙個應用程式。利用鉤子的這一特性,我們可以建立乙個...