为不同类型的项目抽象BLL,DLL和BE的最佳实践

时间:2011-08-24 01:00:20

标签: c#

我在单独的类库上使用BLL,DLL和BE(业务实体)进行WCF服务。

我想将上述BLL,DLL和BE用于其他项目类型,例如控制台应用程序,Web应用程序和Azure工作者角色等。原因是所有这些应用程序使用相同的数据源和一些相同的BE。

有人可以建议上述方法是否是最佳使用方式?或者我应该在它自己的每个项目类型上创建单独的BLL和DLL。

谢谢你。

1 个答案:

答案 0 :(得分:0)

有几种方法可以共享逻辑:

直接在其他项目中引用DLL。对于共享的代码,请将输出调整为共享目录。首先编译共享逻辑,然后在需要此逻辑的项目中,只需添加DLL引用。

链接源控制文件。 Visual Studio允许链接其他项目中的源代码控制文件。我已经做了几次,但由于源文件是链接的,它可能会有点混乱。要进行更改,请更新未链接的项目中的源文件,然后在链接到源控制文件时更新所有项目。

通过接口实施合同。每个BLL,DLL,BE不是直接引用代码,而是通过Contract DLL公开接口。然后使用BLL,DLL,BE的项目引用合同DLL(不是直接实际的DLL)并使用该接口。这是一个松散耦合的模型。要使用它,可以使用UNITY或MEF或任何其他类型的框架来帮助将松散耦合的组件绑定在一起。关于这一点的好处是你的代码只是共享界面而不是实际的实现,所以它可以在将来很容易地改变。

我的建议是,如果您的实施经常变化,最好选择松散耦合的系统。如果共享逻辑不会改变,那么请使用前两个选项来选择更紧密的耦合系统。