【发布时间】:2012-05-12 04:32:36
【问题描述】:
我目前正在开发一个 ASP.NET MVC 3 应用程序。我正在实现一个服务层,它包含业务逻辑,并由控制器使用。服务本身利用存储库进行数据访问,而存储库使用实体框架与数据库通信。
所以从上到下是:控制器 > 服务层 > 存储库(每个服务层都依赖于一个可注入的存储库)> 实体框架 > 单个数据库。
我发现自己正在制作诸如 UserService、EventService、PaymentService 等项目。
在服务层,我会有这样的功能:
-
ChargePaymentCard(int cardId, decimal amount)(部分 支付服务) -
ActivateEvent(int eventId)(EventService 的一部分) -
SendValidationEmail(int userId)(用户服务的一部分)
另外,作为我使用它的第二个地方的示例,我有另一个简单的控制台应用程序,它作为计划任务运行,它利用了这些服务中的一个。还有一个即将推出的第二个 Web 应用程序需要使用多个这些服务。
此外,我想让我们对拆分事物(例如我们的单个数据库)保持开放态度,并在未来转向面向服务的架构,并将其中的一些拆分为 Web 服务(甚至可以想象有朝一日被非.NET 应用程序使用)。我一直在睁大眼睛寻找可能使向 SOA 的飞跃在未来变得不那么痛苦的步骤。
我已经开始为每个服务创建一个单独的程序集 (DLL),但我想知道我是否走错了路。我正在尝试保持灵活性并保持松散耦合,但是这条路径对我有任何帮助(朝向 SOA 或一般而言),还是只是增加了复杂性?我应该改为创建一个包含整个服务层的程序集/dll,并在需要使用任何服务的地方使用该单个程序集吗?
我不确定我开始的路径的含义,因此我们将不胜感激!
【问题讨论】:
-
哇,这是一个大问题:) - 需要几个项目:应用程序有多大?您希望看到多少负载?这是什么类型的应用程序?由于很多答案将取决于整个项目的一般信息......
标签: asp.net asp.net-mvc-3 soa service-layer