開發WCF Silverlight須知

2021-09-05 05:47:28 字數 1723 閱讀 2202

中總結了開發wcf/silverlight的注意事項,這樣的經驗之談字字千鈞,可以讓後來的開發者少走許多彎路。

繫結的選擇

毫無疑問,我們應該選擇basichttpbinding,這也是silverlight僅僅支援的一種繫結。

wcf異常的處理

silverlight無法獲取wcf異常(例如:faultexception)。如果wcf服務丟擲wcf異常,在客戶端應用程式只能夠獲得 http 404錯誤。無疑,這會干擾呼叫者對異常的捕捉,同時也無法獲知真正的異常資訊。一種好的做法是在服務方法中定義乙個out引數,在該引數中包含http status以及異常資訊。可以定義乙個返回資訊的資料契約,例如:

[datacontract]

public

class

callresult

[datamember]

public

int statuscode

[datamember]

public

string statusmessage

[datamember]

public

string exceptiondetails

} 編寫服務方法時,可以採用如下方式:

public

double convert(

string from,

string to,

out callresult status)

trycatch (exception ex)

return 0;

} wcf服務的部署

在將wcf服務部署在web伺服器上時,最好在配置檔案中為wcf服務新增乙個基位址。如果未來需要修改wcf服務的部署位址,僅僅需要修改配置檔案的基位址即可,其餘位置不需要做任何修改。

""/>

此外,至關重要的一點是要讓服務跨域邊界可用。silverlight 在預設情況下只允許源站點通訊。若要允許 silverlight 控制項訪問其他域上的服務,該服務必須明確選擇允許跨域訪問。通過選擇,服務宣告它公開的操作可以由 silverlight 控制項安全地呼叫,而不會對該服務儲存的資料造成具有潛在危害的結果。silverlight 2.0 支援兩種不同的機制供服務選擇跨域訪問:

(1)在承載服務的域的根目錄中放置乙個 clientaccesspolicy.xml 檔案,以配置服務允許跨域訪問。

(2)在承載服務的域的根目錄中放置乙個有效的 crossdomain.xml 檔案。該檔案必須將整個域標記為 public。

例如,建立如下的clientaccesspolicy.xml檔案:

<?xml version="1.0" encoding="utf-8"?>

"*">

"*"/>

"/" include-subpaths=

"true"/>

如果只允許從其他域中的乙個進行訪問(例如 應當包含以下配置:

<?xml version="1.0" encoding="utf-8"?>

"*">

""/>

"/" include-subpaths=

"true"/>

然後再將該檔案儲存到託管該服務的域的根目錄中。例如,如果該服務在 上承載,則檔案必須位於 /clientaccesspolicy.xml。

如果進行如上的配置,在silverlight跨域訪問時,就會出現乙個安全錯誤。

mac開發 ios開發

但是,任何乙個作業系統上,只使用開發語言就去開發程式是不行的。還需要有介面庫。尤其是支援object c的介面庫。mac上使用oc開發應用程式,都會使用xcode這個ide,整合開發工具,xcode中整合了gui介面庫。可以直接拖動控制項到介面上。objective c是一門語言,而cocoa 是這...

Quartz開發 基礎開發

開發環境.net 4.5.1 quartz.dll v2.4.1.0 依賴下面的dll common.loggin.dll v3.3.1.0 依賴下面的dll common.loggin.core.dll v3.3.1.0 本次教程只介紹基於quartz jobs.xml配置檔案方式的開發,這也是簡...

Spark開發 開發總覽

spark 的層次 開發視角多涉及兩種層面。1.一種是spark自身的開發,這類開發涉及到j a和sala以及一些底層的原始碼。了解這些內容,主要用於底層框架的開發以及針對spark的二次開發,也就是spark架構設計與實現。要求深入spark原始碼研究和二次開發,這些一般是大資料平台的設計與開發,...