C# 将API拆分为两个DLL,其中一个包含类型和接口,另一个包含实际实现,这样可以吗?

C# 将API拆分为两个DLL,其中一个包含类型和接口,另一个包含实际实现,这样可以吗?,c#,.net,wcf,dll,C#,.net,Wcf,Dll,我正在开发一个API,用于通过网络远程控制类似打印机的设备。API的客户端部分将提供给我们的客户,以便客户能够将其集成到其过程控制软件中 我正在使用WCF执行此任务,需要在服务器DLL和客户端DLL之间传递数据。在我当前的实现/设置中,我被迫将相应的类型放入一个单独的库中,以避免项目之间的循环依赖 由于我对API设计一无所知,我现在的问题是: 将客户端DLL使用的类型(即其依赖项)放入一个单独的DLL中,以便API的使用者需要引用两个DLL,这是否可以接受(例如,符合“最佳实践”) 如果是这样的

我正在开发一个API,用于通过网络远程控制类似打印机的设备。API的客户端部分将提供给我们的客户,以便客户能够将其集成到其过程控制软件中

我正在使用WCF执行此任务,需要在服务器DLL和客户端DLL之间传递数据。在我当前的实现/设置中,我被迫将相应的类型放入一个单独的库中,以避免项目之间的循环依赖

由于我对API设计一无所知,我现在的问题是: 将客户端DLL使用的类型(即其依赖项)放入一个单独的DLL中,以便API的使用者需要引用两个DLL,这是否可以接受(例如,符合“最佳实践”)


如果是这样的话,我还会在DLL中为我的客户机添加接口,以便于单元测试。你认为这有什么问题吗?

对我来说听起来是个不错的模式——它有助于单元测试这一事实也说明了这一点。如果您使用WCF远程控制设备,您可能只需要客户端上的接口/数据类型DLL(至少在远程处理中是这样),尽管我想这取决于实现DLL中的数量。是的,这是完全可以接受的。我们有一个跨多个层工作的大型应用程序,我们将所有服务契约(接口)放入一个单独的程序集中(实际上是两个),然后服务和客户机都引用实现所需的程序集。是的!查看更多提示和提示。快乐编码!对我来说,这听起来是一个很好的模式——它有助于单元测试这一事实也表明了这一点。如果您使用WCF远程控制设备,您可能只需要客户端上的接口/数据类型DLL(至少在远程处理中是这样),尽管我想这取决于实现DLL中的数量。是的,这是完全可以接受的。我们有一个跨多个层工作的大型应用程序,我们将所有服务契约(接口)放入一个单独的程序集中(实际上是两个),然后服务和客户机都引用实现所需的程序集。是的!查看更多提示和提示。快乐编码!