2009-10-28 60 views
8

我的问题不是关于界面的使用,而是更多的项目组织性质。接口应该在一个单独的项目中吗?

注:我在多层应用程序中使用VisualStudio。

我的Interface文件应该与其实现中的单独项目存在吗?我最初的想法是,将我所有的服务接口分离出来放到他们自己的项目(和我最初实现的一个项目)中是很有用的,这样在实施/具体项目可能会被移除并替换为新的项目必要。

用一个例子来说明:假设我有一个名为IBusinessService的业务层接口,它存在于MyApp.Business.Services名称空间中。我的实现FooBusinessService将存在于相同的命名空间中,但在VisualStudio中是一个不同的项目。如果稍后需要重新实现实现,则开发人员可以删除对FooService.proj的引用,并将其替换为对BarService.proj的引用。

这看起来像是通过允许您仅使用接口引用项目而不需要获取具体实现(可能已过时或对您无用),但是我错过了某些东西,这会消化应用程序解决方案?

+0

可能的重复[我应该有一个单独的接口程序集?](http://stackoverflow.com/questions/3363312/should-i-have-a-separate-assembly-for-interfaces) – nawfal 2014-06-10 13:25:18

回答

10

我和你在一起。我更喜欢把我的接口放在一个单独的项目中,并放在不同的命名空间中。典型的例子是数据访问类。您希望能够编写MSSQL版本和MySQL版本,两者都实现相同的接口。因此,我更喜欢将接口定义放在单独的程序集/项目中。下面是我如何布局组件和命名空间的例子:

  • Elder.DataAccess.Core - 包含接口和常用工具
  • Elder.DataAccess.MSSQL - 接口
  • 长老的具体MSSQL实现。 DataAccess.MySQL - 接口的特定MySQL实现

这使我可以在不触及包含接口定义的项目的情况下修改实现。这也帮助我进行版本控制和更改跟踪。有可能有其他方法来剥皮这只猫,所以我会渴望看到其他人的答案。

+1

谢谢斯科特。这是我现在使用的结构,我只是想确认一下它是否合理,并且我没有错过任何东西。除非有人指出缺陷 - 我会继续为我的界面。 – 2009-10-30 12:02:36

相关问题