WCF服務端基於配置的實現

2023-01-16 18:51:02 字數 1512 閱讀 2312

如果說到***,相信大家都不陌生,所有的aop都依賴各種形式的***。為了讓wcf服務端的行為發生變化,這裡要借助***的力量。

問題:wcf裡面如何建立乙個***?

事實上,wcf裡面有很多種***,分別用於攔截不同的資訊。這裡要改變的是方法的實現部分,因此,只要攔截wcf操作就可以達到目的。

那麼,如何攔截操作哪?

如果熟悉wcf的話,那麼,一定知道有這麼乙個介面:ioperationinvoker

這個介面的核心方法為:invoke及其非同步方法

問題:如何把乙個實現ioperationinvoker的例項注入wcf

仔細看一下msdn,或者看reflector,就可以發現,所有實現ioperationinvoker的型別,幾乎都是通過各種operationbeh**ior加入的。

而所有的operationbeh**ior都實現了乙個ioperationbeh**ior介面。

主角和設計約束

主角們在剛才的兩個問題中已經全部登場了:ioperationinvoker和ioperationbeh**ior

剩下來的問題是如何實現這兩位主角。

為了簡化期間,這裡只考慮這樣的情況:所有的操作只有乙個輸入值和乙個輸出值,以及只有同步操作。當然這裡的乙個輸入/輸出是指乙個簡單或複雜值,也就說,需要傳多個值時,使用乙個自定義型別來包裹這多個值。

實現 先說說實現ioperationinvoker,這裡盜用一下mvc的概念,不妨將我們的實現控制器宣告為:controllerinvoker

簡單的示意:

1: internal sealed class controllerinvoker

2ioperationinvoker

3:3839: }

我們的invoker目前什麼好事情也沒做(壞事倒是做了一樁,引入了不支援非同步),別急,這個類還沒完工哪。

再看看beh**ior需要做什麼:

1: [attributeusage( inherited = false, allowmultiple = false)]

2: public sealed class controllerattribute

3attribute, ioperationbeh**ior

4:7:

8void operationdescription, clientoperation clientoperation)

9:10void operationdescription, dispatchoperation dispatchoperation)

11= new controllerinvoker(

1314:

15void operationdescription)

16:17: }

好,攔截的外殼已經準備好了,來乙個例項看看:

1: [servicecontract(namespace="")]

2: public inte***ce itest

3:是不是很簡單?

svn服務端配置

配置svn 服務端及客戶端 win 一 visualsvn server的配置和使用方法 伺服器端 安裝好visualsvn server後 安裝過程看這裡 執行visualsvn server manger,下面是啟動介面 好的,下面我來新增乙個 庫 repository 如下圖 按上圖所示,建立...

基於XFire的Web服務實現

使用xfire編寫乙個簡單的web服務程式以及呼叫該web服務的程式。j a myeclipse 8.5 tomcat 6.0 使用xfire實現了計算矩形面積的程式,輸入長 寬兩個引數計算輸出矩形的面積,並編寫客戶端程式對此web服務進行呼叫。1.配置環境 安裝tomcat 6.0,將其加入到my...

基於LBS雲服務的航跡共享平台設計與實現

作者 王中一王銘浩 華夏地理中文版 2015年第04期 摘要 文章 如何在裝有android作業系統的移動終端來實現自身的定位,航跡的記錄與分享。文章將lbs 雲計算技術融合到了移動gis中,以eclipse為開發平台,在android的移動終端實現對航跡的操作,並用lbs雲來實現對航跡資料的有效管...