我有一个我目前正在开发的 ASP.NET MVC 3 应用程序。我正在实现一个服务层,它包含业务逻辑,并由控制器使用。服务本身使用存储库进行数据访问,存储库使用实体框架与数据库通信。
所以从上到下是:控制器 > 服务层 > 存储库(每个服务层都依赖于一个可注入的存储库)> 实体框架 > 单个数据库。
我发现自己正在制作诸如 UserService、EventService、PaymentService 等项目。
在服务层,我将有如下功能:
ChargePaymentCard(int cardId, decimal amount)
(支付服务的一部分)ActivateEvent(int eventId)
(事件服务的一部分)SendValidationEmail(int userId)
(用户服务的一部分)
此外,作为我使用它的第二个地方的示例,我有另一个简单的控制台应用程序,它作为计划任务运行,它利用这些服务之一。还有一个即将推出的第二个 Web 应用程序需要使用其中的多个服务。
此外,我想让我们对拆分事物(例如我们的单个数据库)保持开放态度,并在未来转向面向服务的架构,并将其中的一些分解为 Web 服务(甚至可能被非-.NET 应用程序有一天)。我一直在睁大眼睛寻找可能使向 SOA 的飞跃在未来不那么痛苦的步骤。
我已经开始为每个服务创建一个单独的程序集 (DLL),但我想知道我是否开始走错了路。我正在尝试保持灵活性并保持松散耦合,但这条路径对我有任何帮助(朝向 SOA 或一般来说),还是只是增加了复杂性?我是否应该创建一个包含整个服务层的单个程序集/dll,并在需要使用任何服务的地方使用该单个程序集?
我不确定我开始的路径的含义,所以对此的任何帮助将不胜感激!