六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

使用Websharp Service Locator簡化分布式系統開發

[摘要]使用Websharp Service Locator簡化分布式系統開發什么是Websharp Service Locator對于多層的應用系統來說,我們通常把它們劃分成客戶端、應用服務層和數據庫。在...
使用Websharp Service Locator

簡化分布式系統開發

什么是Websharp Service Locator
對于多層的應用系統來說,我們通常把它們劃分成客戶端、應用服務層和數據庫。在應用服務層,我們需要考慮至少兩個方面的問題:

ü 如何實現業務邏輯

ü 如何向客戶端提供服務。

我們可能使用多種技術來實現服務的提供:Webservice、.Net Remoting、甚至EJB等。如此多的實現技術,帶來的很大的靈活性,但同時也帶來了問題,其中一個就是,有多少種服務端技術,就得有多少種相應的客戶端訪問技術。甚至,在某些分布式應用系統中,應用邏輯使用不同的技術開發,存在于不同的機器上,有的存在于客戶機本機,有的使用.Net Remoting開發,存在于局域網內,有的使用因特網上的Web Service,有的時候,我們希望相同的業務邏輯能夠支持不同的客戶端。

在這種情況下,我們需要一個一致的服務訪問編程模型,以統合不同的服務訪問模式,簡化系統的開發和部署。Websharp Service Locator(以下簡稱WSL)提供了這樣一種能力,開發人員只需要定義服務訪問接口,就可以使用一致的方式透明的訪問這些服務,而不用理會這些服務之間的不同點。框架會自動生成訪問遠程服務需要的代理。

Websharp是sourceforge上的一個新的開源項目,目標是提供一個.Net環境下的輕量級的應用系統框架,它包含了三個主要內容:一個O/R Mapping框架,一個AOP框架,以及一個Service Locator。Service Locator目前還只完成本地程序集定位器、WebService定位器和.Net Remoting定位器的初步開發,但是,我們已經可以使用它提供的框架功能來為我們的開發提供助力。Websharp Service Locator下面的目標是實現對J2EE的訪問。可以從 http://www.sourceforge.net/projects/websharp/ 下載所有源代碼。

Websharp Service Locator的主要接口
WSL是一個輕量級的框架,非常易于使用和擴展。如果想使用WSL,那么只有一個類需要打交道:ServiceLocator,它的定義如下:

public abstract class ServiceLocator

{

public static object FindService(string serviceName,Type clientInterface)

}


如果你想用自己的定位器擴展這個框架,那么,只有一個接口需要擴展:IServiceLocator。這個接口非常簡單,只有一個方法:

public interface IServiceLocator

{

object FindService(string serviceName,Type clientInterface);

}


Websharp Service Locator的配置文件
需要在三個地方配置WSL。

首先,在configSections節中,注冊WSL配置文件處理類的的相關信息,配置方法如下:

<configSections>

<section name="Websharp.Enterprise"

type="Websharp.Enterprise.EnterpriseConfigHandler,Websharp" />

configSections>


然后,在Websharp.Enterprise節中,注冊不同的服務定位器。如果你自己擴展了這個框架,添加了新的服務定位器,也在這里注冊。其中,locator屬性的格式是:“類全名,Assembly名”。 服務定位器都是Singleton的。下面是目前WSL支持的服務定位器的注冊的信息:

<Websharp.Enterprise>

<ServiceTypes>

<ServiceType name="LocalAssembly"

locator="Websharp.Enterprise.LocalAssemblyLocator,Websharp" />

<ServiceType name="WebService"

locator="Websharp.Enterprise.WebServiceLocator,Websharp" />

<ServiceType name="DotNetRemoting"

locator="Websharp.Enterprise.DotNetRemotingLocator,Websharp" />

ServiceTypes>

Websharp.Enterprise>


最后,在Websharp.Enterprise下的Services節中,注冊每個服務。每個Service需要的屬性取決于不同的Locator的實現,但是,name、service-type 和deploy-model是必須的。對于deploy-model,可以有兩種屬性值:Singleton和MultiInstance。

下面是一個例子:

<Websharp.Enterprise>

<ServiceTypes>

<ServiceType name="LocalAssembly"

locator="Websharp.Enterprise.LocalAssemblyLocator,Websharp" />

<ServiceType name="WebService"

locator="Websharp.Enterprise.WebServiceLocator,Websharp" />

<ServiceType name="DotNetRemoting"

locator="Websharp.Enterprise.DotNetRemotingLocator,Websharp" />

ServiceTypes>

<Services>

<Service name="HelloWorld" service-type="LocalAssembly" deploy-model="Singleton"

type="EnterpriseClient.HelloWorld,EnterpriseClient" />

<Service name="HelloWorldWebService" service-type="WebService"

deploy-model="Singleton"

url="http://localhost/webservicetest/hello.asmx"

namespace="http://www.websharp.org/webservices/" />

Services>

Websharp.Enterprise>


注:對于配置文件,在Web項目中,可以是web.config文件,對于Windows項目,可以自己為項目添加一個app.config配置文件。關于.net項目配置文件的更多內容,請參考MSDN的相關文檔。

如何使用Websharp Service Locator?
使用WSL,一般的方法是這樣的:

1. 定義一個同你需要訪問的服務一致的接口(當然,如果你的服務是實現某個接口的,可以直接使用該接口)。接口的方法名和參數必須同服務類的方法名和參數一致。如果你的方法名和服務的方法名不一致,那么,可以使用ServiceMethodNameAttribute來指明服務的方法名。

2. 在配置文件按中注冊你需要訪問的服務。

3. 調用ServiceLocator 的FindService方法.

4. 調用接口的方法。.

下面是一些例子,這些例子使用visual studio.net 2003開發,同樣可以從sourceforge下載。

LocalAssemblyLocator 的Hello World例子
按照以下步驟進行:

1. 創建一個名為“EnterpriseClient”的windows console 項目,加入Websharp.dll的引用。

2. 添加一個類,名為“HelloWorld” ,然后添加一個名為“GetHello”的方法,代碼如下:

public class HelloWorld

{

public string GetHello(string hello)

{

return hello;

}

}


3. 添加一個名為 “IHelloWorld” 的接口,代碼如下:

public interface IHelloWorld

{

string GetHello(string hello);



[ServiceMethodName("GetHello")]

string GetHello2(string hello);

}


4. 填寫配置文件

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

<configuration>

<configSections>

<section name="Websharp.Enterprise"

type="Websharp.Enterprise.EnterpriseConfigHandler,Websharp" />

configSections>



<Websharp.Enterprise>

<ServiceTypes>

<ServiceType name="LocalAssembly"

locator="Websharp.Enterprise.LocalAssemblyLocator,Websharp" />

<ServiceType name="WebService"

locator="Websharp.Enterprise.WebServiceLocator,Websharp" />

ServiceTypes>



<Services>

<Service name="HelloWorld" service-type="LocalAssembly"

deploy-model="Singleton"

type="EnterpriseClient.HelloWorld,EnterpriseClient" />

Services>

Websharp.Enterprise>

configuration>


5. 在Main方法中添加如下代碼:

public static void Main(string[] args)

{

IHelloWorld hello= ServiceLocator.FindService("HelloWorld",typeof(IHelloWorld)) as IHelloWorld;

Console.WriteLine(hello.GetHello("Hello World"));

Console.WriteLine(hello.GetHello2("Hello again"));

Console.ReadLine();

}


6. 運行程序,就能夠得到下面的結果:



Hello World 的WebServiceLocator例子
按照以下步驟進行:

1. 新建一個webservice 項目,名為“WebserviceTest”。

2. 新建一個webservice 類,名為“Hello” ,并添加一個“HelloWorld”方法,代碼如下:

[WebService(Namespace="http://www.websharp.org/webservices/")]

public class Hello : System.Web.Services.WebService

{

[WebMethod]

public string HelloWorld()

{

return "Hello World";

}

}


3. 使用上面我們創建的“EnterpriseClient”項目,添加一個接口“IHello” ,代碼如下:

public interface IHello

{

string HelloWorld();

}


4. 填寫配置文件

<Service name="HelloWorldWebService" service-type="WebService" deploy-model="Singleton"

url="http://localhost/webservicetest/hello.asmx"

namespace="http://www.websharp.org/webservices/" />


5. 在Main方法中添加下面的代碼:

public static void Main(string[] args)

{

IHello hello1= ServiceLocator.FindService

("HelloWorldWebService",typeof(IHello)) as IHello;

Console.WriteLine(hello1.HelloWorld());

Console.ReadLine();

}


6. 運行程序,能夠得到下面的結果:




小結
使用WSL,我們可以使用一致的編程模型訪問不同類型的服務,從而簡化軟件的開發和部署。例如,我們可以在開始的時候,使用本地Assembly的方式開發軟件,然后,能夠很容易的改成使用Webservice來發布服務,將軟件變成多層應用。我們也可以使用WSL來讓相同的服務能夠支持不同的客戶端,而所有的客戶端都使用相同的編程模型。

Websharp是一個還處于開發階段的框架,但是,因為他是開放源代碼的,我們可以直接使用他來進行進一步的開發。目前WSL支持的服務還不是很多,實現也還比較簡單,但是,他提供了一個很好的框架和構建分布式應用的方案,將來,他將提供越來越多的功能。





主站蜘蛛池模板: 天天干夜夜草 | 午夜国产精品福利在线观看 | 日日摸人人看97人人澡 | 特黄特黄aaaa级毛片免费看 | 日韩欧美国产三级 | 青青草狠狠操 | 亚洲国产日韩综合久久精品 | 午夜性爽视频男人的天堂在线 | 亚洲九九色 | 青青草一区国产97 | 日韩黄色一级大片 | 天堂综合 | 在线观看亚洲欧美 | 一级做a爰 | 婷婷网五月天天综合天天爱 | 日本一二三区高清 | 午夜网站在线观看免费网址免费 | 色噜噜狠狠狠狠色综合久不 | 日韩中文字幕在线观看视频 | 天堂资源中文官网 | 亚洲国产成人精品久久 | 午夜不卡福利 | 天天躁日日躁狠狠躁黑人躁 | 欧美亚洲国产专区在线app | 青青草a国产免费观看 | 亚洲视频黄色 | 探花视频观看在线视频 | 日本老年人精品久久中文字幕 | 日本高清视频在线的 | 天天噜日日噜 | 综合久久久久6亚洲综合 | 亚洲免费色 | 亚洲精品综合 | 中文字幕日韩一区二区不卡 | 一二三四在线观看高清在线观看一 | 中文国产成人精品久久96 | 日本国产在线观看 | 伊人久久大 | 欧美亚洲综合一区 | 五月激情综合网 | 又硬又粗又长又爽免费看 |