Service Layer & Web API Service Layer?



我的应用程序具有用于数据访问,业务和WCF服务的层次。我需要将此WCF层转换为Web API,并且对我是否应该被困:

1)创建两个服务层/项目: - 服务(班级库)-Services.api(WebAPI将曝光和包装通话到服务类库)

2)或创建一个单个WebAPI项目。

我猜我在#2中看到的问题是限制了我如何重复使用库 - 我只能使用REST使用服务。使用#1,我有能力根据需要在网络控制器内部使用类库,并根据需要在客户端/AJAX上使用。我在#1中看到的问题是重复调用服务层类库所需的所有额外代码。

希望这是有道理的。请让我知道您对我可能遵循的好方法和练习的想法,或者因为缺乏理解而尖叫。谢谢

如果您的业务层本身应该是您的服务(类库)层。在您的业务/服务层上,应该是您的前端层,可能是WCF,API或MVC。

ProjectName
 -ProjectName.Core (All poco classes and interfaces)
 -ProjectName.Data (All entity framework stuff)
 -ProjectName.Service (All business logic)
 -ProjectName.Web (All font end logic)

选项1让您拥有更多可重复使用的代码,我认为这几乎总是一件好事。

您的问题不应仅仅从另一个API变化的角度考虑。

我会选择1)。

当系统复杂性提高,API版本控制可能成为问题,在单元测试中等等时,服务与通信部分的分离将提供许多好处。

其他一些想法:调用该层而不是Services.Api,而是对端点类型的类型,通过限制Api层中可用的参考文献来避免关注的可能性,以避免关注的可能性,以避免关注的内容,以避免关注点的可能性当开发人员随着系统的发展而弯曲(即不要访问API项目中可用的存储库,域或DTO模型等)时。

,如果您执行上述操作,我认为代码的重复可能极低。