中總結了開發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原始碼研究和二次開發,這些一般是大資料平台的設計與開發,...