2011-06-20 51 views
3

我有一个名为ServiceLayer的类库,它充当ASP.NET MVC应用程序的存储库此服务层具有对称为ProfileService的WCF服务的引用,该服务包含Profile方法以在数据库上执行CRUD操作等WCF SOA命名约定

我现在需要允许移动设备与我的应用程序通信,所以我创建了另一个称为ProfileService的WCF服务。此服务具有对ServiceLayer类库的引用,并调用它来执行配置文件操作。

现在这很混乱,因为我现在有2个ProfileServices。第一次与我的数据库进行通信等,并将其展示给我的服务层。第二个与我的服务层进行通信并将其展示给移动设备。

什么是在SOA环境中命名您的服务的最佳方式,以避免混淆哪种类型是哪种?尤其是在类型之间映射时。

我可能还想创建另一个服务,作为系统用户的API。我会命名这个服务ProfileAPI?我知道每个ProfileService都在它自己的命名空间中,但是这在创建AutoMapperSettings或执行手动映射时无助于可读性。

因此,如果有人知道在这个环境中命名服务的好方法,那将是非常值得赞赏的。

回答

2

你正在寻找一个Service Facade

你要做一个门面,这仅仅是一个专用接口为您的真正的服务结束。您可以根据需要定义不同的服务(移动设备,用户,数据库)

+0

感谢Nix,这就是我的服务层正在做的事情。它充当应用程序的外观。然而,由于它引用了ProfileService,所以服务的所有DataMembers(即UserRequest/UserResponse对象)都在我的移动设备ProfileService中可见,我也在使用Request/Response设计。为我的服务模式,也有UserRequest/UserResponse对象。 – Cragly

+0

您的服务层正在访问ProfileService?那看起来不正确?它应该是相反的?一个真正的外观应该用通俗的语言说话吗因此,所有外墙都可以利用现有的服务层,并且真正用作服务层 - >客户端的翻译。 – Nix

+0

是的我的服务层使用net.tcp在内部通过Wcf进行调用。因为数据库在不同的服务器上,所以我需要这样灵活一切都引用服务层(或使用IoC在运行时表示它)。然后,我的移动设备服务利用服务层将其调用到系统中。 – Cragly