【正文】
ce(string serviceName,Type clientInterface) } 如何使用 Websharp Service Locator ? 定義一個同你需要訪問的服務(wù)一致的接口(當(dāng)然,如果你的服務(wù)是實(shí)現(xiàn)某個接口的,可以直接使用該接口)。接口的方法名和參數(shù)必須同服務(wù)類的方法名和參數(shù)一致。如果你的方法名和服務(wù)的方法名不一致,那么,可以使用ServiceMethodNameAttribute來指明服務(wù)的方法名。 ? 在配置文件按中注冊你需要訪問的服務(wù)。 ? 調(diào)用 ServiceLocator 的 FindService方法 . ? 調(diào)用接口的方法。 Hello World的 LocalAssembly例子 ? 創(chuàng)建一個名為“ EnterpriseClient”的windows console 項(xiàng)目 ,加入 引用。 ? 添加一個類,名為“ HelloWorld” ,然后添加一個名為“ GetHello”的方法,代碼如下: public class HelloWorld { public string GetHello(string hello) { return hello。 } } 添加一個名為 “ IHelloWorld” 的接口 public interface IHelloWorld { string GetHello(string hello)。 [ServiceMethodName(GetHello)] string GetHello2(string hello)。 } 配置文件 Service name=HelloWorld service type=LocalAssembly deploymodel=SSingleton type=,EnterpriseClient / 調(diào)用代碼 public static void Main(string[] args) { IHelloWorld hello= (HelloWorld,typeof(IHelloWorld)) as IHelloWorld。 ((Hello World))。 ((Hello again))。 ()。 } 運(yùn)行結(jié)果 Hello World 的 WebService例子 添加一個接口“ IHello” public interface IHello { string HelloWorld()。 } 配置文件 調(diào)用方法 public static void Main(string[] args) { IHello hello1= (HelloWorldWebService,typeof(IHello)) as IHello。 (())。 ()。 } 運(yùn)行結(jié)果 擴(kuò)展能力 — 只需要擴(kuò)展一個接口 public interface IServiceLocator { object FindService(string serviceName,Type clientInterface)。 } 配置文件 ? 在 configSections節(jié)中 configSections section name= type= ConfigHandler,Websharp / /configSections 配置文件 ? 在 ,注冊不同的服務(wù)定位器。 ServiceTypes ServiceType name=LocalAssembly locator=,Websharp / ServiceType name=WebService locator=,Websharp / ServiceType name=DotNetRemoting locator=,Websharp / /ServiceTypes / 配置文件 WSL的實(shí)現(xiàn)技術(shù) CodeDom 類圖 A b s t r a c t S e r v i c e L o c a t o rL o c a l A s s e m b l y L o c a t o r W e b S e r v i c e L o c a t o rF i n d S e r v i c e ( ) i n t e r f a c e I S e r v i c e L o c a t o rD o t N e t R e m o t i n g L o c a t o r 目前的進(jìn)展 ? Local Assembly Locator ? Web Service Locator ? .Net Remoting Locator 將來目標(biāo) ? 繼續(xù)完善目前已經(jīng)完成的定位器 ? WebService的異步調(diào)用 ? Corba ? 與 Java的互操作,尤其是 J2EE 回顧 ? 目的是提高軟件開發(fā)的效率和軟件質(zhì)量 ? 把不必要的、重復(fù)的和容易出錯的工作交給框架去處理 ? 盡量化無規(guī)律為有規(guī)律 ? 開發(fā)一個輔助工具 ? 不僅僅在于軟件開發(fā)的本身,也是公司知識管理的重要組成部分 參考文章 ? 《利用 .Net框架開發(fā)應(yīng)用系統(tǒng)》 ? 《實(shí)戰(zhàn)揭秘:開發(fā) .Net平臺應(yīng)用系統(tǒng)框架》 ? 《面向?qū)ο蟮膽?yīng)用服務(wù)層設(shè)計(jì) 》