用服務定位器 SL 完成服務的多種實現的統一呼叫

2021-09-21 04:56:31 字數 2113 閱讀 3941

前面的文章

服務定位器(sl)與agileeas.net中的實現

介紹了服務定位器的一些概念、應用場景與agileeas.net平台中sl的實現,本文是這騙檔案的乙個例子與demo,詳細的演示sl在應用開發中的使用。

下面我說開始例子,假設有這麼乙個應用場景,我們需求乙個hello服務,並且需要在xml webservice、.net remoting和本地同程序中三種不同環境的應用,也就是說,這個服務可能會有三中實現,具體使用那乙個,在應用過程中決定,我先貼個簡單的類圖:

現在我們來開始幹活,一步一步實現這個應用,首先定義服務介面,建乙個名稱為hello.inte***ce的類庫專案,定義乙個ihello介面:

public

inte***ce ihello

接著我們做webservice實現,新增乙個hello.webservice的asp.net web服務應用程式並引用hello.inte***ce,新增乙個helloservice的webservice:

[webservice(namespace = "")]

[webservicebinding(conformsto = wsiprofiles.basicprofile1_1)]

[toolboxitem(false)]

public

class hellowebservice : system.web.services.webservice,hello.inte***ce.ihello

}

實現.net remoting和localcomponent,新增乙個名稱為hello.service類庫專案,新增乙個類hello: 

public

string sayhello(string name)

實現乙個簡單的.net remoting的執行環境,建乙個名稱為hello.serviceconsole的控制台專案:

class program

}

最後完成我們的呼叫客戶端,建一控制台專案hello.client,引用hello.inte***ce專案和eas.ioccontainer.dll、eas.servicelocator.dll程式組,定義服務消費者helloclient:

class helloclient

public ihello hello

}

}

控制台程式入口program :

class program

}

eas.services" 

type="eas.servicelocators.serviceconfighandler,eas.servicelocator" />

eas.objects"

type="eas.objects.confighandler,eas.ioccontainer"/>

type="hello.service.helloservice,hello.service" />

helloservice" service-type="dotnetremoting"

singleton="true" url="tcp://localhost:9001/hello"/>

執行客戶段,可以看到如下的輸入截圖:

是不是很簡單,在實際應用中,對於這種服務執行環境的未知性,我們可以通過這種簡單的方法進行處理,服務消費者只需求知道介面,而無需知道具體的實現,開發人員可以根據客戶的不同應用場景而做出不同的實現,上例中的服務定義配置項中,我注釋了dotnetremoting和localcomponent兩種方式的hello服務,大家可以釋放放開其中的乙個而注釋另外兩個用於配置執行。

hello.example.rar。

qq群:120661978,125643764

agileeas.net應用開發平台介紹

agileeas.net之敏捷並行開發方法

敏捷軟體工程實驗室

安裝完成伺服器進行優化

這裡由ubuntu 14.04 為例 vim etc ssh sshd config permitrootlogin yes 最後一行新增 usedns no儲存退出後,重啟ssh服務 service ssh restart退出重新登入即可 ifconfig a檢視所有網絡卡,根據伺服器上網線插入的...

php實現設計模式 之服務定位器模式

什麼是服務定位器 服務定位器 service locator 他知道如何定位 建立或者獲取 乙個應用所需要的服務,服務使用者在實際使用中無需關心服務的實際實現。有什麼作用 實現服務使用者和服務的解耦,無需改變 而只是通過簡單配置更服服務實現。uml圖示 示例 class servicelocator...

PHP 依賴注入,注入容器和服務定位器

考慮乙個問題,如果乙個web應用需要乙個日誌服務,日誌服務可以是文字,資料庫或者郵件的形式,而且日誌需要將獲取的資訊格式化指定的形式。應用可以根據需要,任意切換日誌服務是文字還是數 據庫還是郵件。如果以傳統的方式,日誌記錄的 類似下面的形式 class logger public function ...