下面我说开始例子,假设有这么一个应用场景,我们需求一个Hello服务,并且需要在XML WebService、.NET Remoting和本地同进程中三种不同环境的应用,也就是说,这个服务可能会有三中实现,具体使用那一个,在应用过程中决定,我先贴个简单的类图:
<a href="http://images.cnblogs.com/cnblogs_com/eastjade/WindowsLiveWriter/SL_13CFC/wps_clip_image-20776_2.png"></a>
现在我们来开始干活,一步一步实现这个应用,首先定义服务接口,建一个名称为Hello.Interface的类库项目,定义一个IHello接口:
接着我们做WebService实现,添加一个Hello.WebService的ASP.NET Web服务应用程序并引用Hello.Interface,添加一个HelloService的WebService:
实现.NET Remoting和LocalComponent,添加一个名称为Hello.Service类库项目,添加一个类Hello:
实现一个简单的.NET Remoting的运行环境,建一个名称为Hello.ServiceConsole的控制台项目:
最后完成我们的调用客户端,建一控制台项目Hello.Client,引用Hello.Interface项目和EAS.IOCContainer.dll、EAS.ServiceLocator.dll程序组,定义服务消费者HelloClient:
控制台程序入口Program :
定义配置文件App.config :
运行客户段,可以看到如下的输入截图:
<a href="http://images.cnblogs.com/cnblogs_com/eastjade/WindowsLiveWriter/SL_13CFC/wps_clip_image-23084_2.png"></a>
是不是很简单,在实际应用中,对于这种服务运行环境的未知性,我们可以通过这种简单的方法进行处理,服务消费者只需求知道接口,而无需知道具体的实现,开发人员可以根据客户的不同应用场景而做出不同的实现,上例中的服务定义配置项中,我注释了DotNetRemoting和LocalComponent两种方式的Hello服务,大家可以释放放开其中的一个而注释另外两个用于配置运行。
QQ群:120661978,125643764
<a href="http://www.cnblogs.com/eastjade/archive/2010/04/19/1715662.html">AgileEAS.NET之敏捷并行开发方法</a>
<a href="http://www.agilelab.cn/">敏捷软件工程实验室</a>
本文转自 agilelab 51CTO博客,原文链接:http://blog.51cto.com/agilelab/561923