使用WCF实现SOA面向服务编程—— 架构设计

  SOA本身就是一种面向企业级服务的系统架构,简单来说,SOA就是一种进行系统开发的新的体系架构,在基于SOA架构的系统中,具体应用程序的功能是由一些松耦合并且具有统一接口定义方式的组件(也就是service)组合构建起来的。因此,基于SOA的架构也一定是从企业的具体需求开始构建的。但是,SOA和其它企业架构的不同之处就在于SOA提供的业务灵活性。业务灵活性是指企业能对业务变更快速和有效地进行响应、并且利用业务变更来得到竞争优势的能力。对企业级架构设计师来说,创建一个业务灵活的架构意味着创建一个可以满足当前还未知的业务需求的IT架构。使用WCF实现SOA,正好可以利用WCF的灵活性,把业务层封装,发布为Web服务。这样可以降低系统的耦合度,加大对未知业务的扩展性。

  Web服务本来就是没有区分代码的,在这个例子里在下多开发了一个Service Interface目的是为了使系统更易于管理。在开发期间,Service是不断更改的,如果在UI层上直接调用服务层,那更改将会是频密的,所以在这里在下开发一个Service Interface层目的是为了把WSDL集成在同一个DLL程序集里面,进行统一修改。最后UI层只要直接调用Service Interface,就可以对系统直接进行操作。要以不同开发工具来实现Service Interface,这个的代价并不大,开销是可以承担的。下面附上最简单的例子,希望有经验的高手给予点评,有不妥的地方请多加指教。

//实现Ucsmy.Portal.BLL层
namespace Ucsmy.Portal.BLL
{
public class ExampleManager
{
public IList<Example> GetList(int workers)
{
IExampleDAL examleDAL
= DataAccess.CreateExampleDAL();
return examleDAL.GetList(workers);
}
}
}

//在Ucsmy.Portal.Service层里使用WCF直接调用BLL层里面的方法
namespace Ucsmy.Portal.Service
{
[ServiceContract(Namespace
="Ucsmy.Portal.Service")]
public interface IExampleService
{
[OperationContract]
IList
<Example> GetData(int workers);
// TODO: 在此添加您的服务操作

}

public class ExampleService : IExampleService
{
public ExampleManager exampleManager;

public ExampleService()
{
exampleManager
= new ExampleManager();
}

public IList<Example> GetData(int workers)
{
IList
<Example> exampleList = exampleManager.GetList(workers);
if (exampleList != null)
return exampleList;
else
return new List<Example>();
}
}
}

NET技术使用WCF实现SOA面向服务编程—— 架构设计,转载需保留来源!

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。