面向服务的架构的最佳实践&建议的最大行数

时间:2015-05-15 15:21:49

标签: architecture application-design

希望这不是个人观点,而是解决同事的争论,而我正在讨论申请的设计。

我们为数据层和服务使用存储库模式来应用业务逻辑。服务可以在其中包含一个或更可能的许多存储库。让我们举一个例子(我不为学校工作,但这是一个简单的例子):

我的存储库可能包括:

SchoolRepository
ClassRepoistory
DepartmentRepository
TutorRepository
TutorDepartmentRepository
TutorSkillsRepository
StudentRepository
StudentClassRepository

所以在我看来,我会有三个服务(我的例子是c#,但这适用于任何语言):

public class SchoolService : ISchoolService
{
    public SchoolService(ISchoolRepository schoolRepository,
                         IClassRepository classRepository,
                         IDepartmentRepository departmentRepository)
    {
        ....
    }
}

public class TutorService : ITutorService
{
    public TutorService(ITutorRepository tutorRepository,
                        ITutorDepartmentRepository tutorDepartmentRepository)
    {
        ....
    }
}

public class StudentService : IStudentService
{
    public StudentService(IStudentRepository studentRepository,
                          IStudentClassRepository studentClassRepository)
    {
        ....
    }
}

现在,在我的示例中,TutorService可能需要来自DepartmentRepository的数据,而StudentService也可能需要来自ClassRepository的数据。我的论点是,如果您需要来自Class的{​​{1}}对象,则应从ClassRepository检索该对象,并且该对象应作为参数传递,如下所示:

SchoolService

我已经在这篇文章的标题上标记了另一个问题以及类的最大大小。我建议这应该不超过500行(包括花括号{},新行使其可读等),因为这使它更易于管理。我是在背后说话,还是在思考中有什么意义?

1 个答案:

答案 0 :(得分:-1)

你把这篇文章命名为SOA问题,但你的设计却不算什么。您有一个紧密耦合的应用程序,其中每个组件都对其他组件有深入的了解。事实上,这些是直接参考的对象。

这不一定是坏事,因为整体是小型系统的可行选择,但它不是SOA。虽然如果我设计了一个上述尺寸的系统,我可能会尝试简化它,因为这里的“分层”带来了很多开销,而且收益很小(因为紧耦合)