ESFramework應用示例 可復用的FS

2021-08-22 03:46:12 字數 4235 閱讀 5020

有很多朋友要求給出乙個應用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的鉤子機制可以看作是乙個訊息中轉站,控制系統發出訊息的處理和傳遞,利用鉤子,我們可以截獲系統發給應用程式的訊息,經過處理後決定是否將訊息再發給下乙個應用程式。利用鉤子的這一特性,我們可以建立乙個...