C# 什么';使用WCF生成的类与创建自己的模型dll的利弊是什么?
到目前为止,我的项目在很大程度上依赖于链接到数据库的WCF。 我们使用从数据库生成的类,如果您愿意在我们的系统中进行处理,这些类就是ORM 我知道,使用DataSvcUtil,我们可以轻松地提取出所有类,并将其编译为DLL,以便在其他系统中共享 但是在我们当前的项目中,我们创建了另一个DLL,它镜像WCF生成的表类,而不是直接使用这些类C# 什么';使用WCF生成的类与创建自己的模型dll的利弊是什么?,c#,wcf,orm,datasvcutil,C#,Wcf,Orm,Datasvcutil,到目前为止,我的项目在很大程度上依赖于链接到数据库的WCF。 我们使用从数据库生成的类,如果您愿意在我们的系统中进行处理,这些类就是ORM 我知道,使用DataSvcUtil,我们可以轻松地提取出所有类,并将其编译为DLL,以便在其他系统中共享 但是在我们当前的项目中,我们创建了另一个DLL,它镜像WCF生成的表类,而不是直接使用这些类 所以我的问题是,在这类事情上有没有最佳实践 及 这两种方法的优缺点是什么 还有其他的吗 方法 谢谢 更新: 似乎大家的共识是创建自己的自定义类,而不是依赖WCF
拥有自己的简单类有利于扩展性和其他方面:)我对WCF不太熟悉——但我使用Linq To Sql,我假设它生成相同类型的类(就像任何ORM工具一样)。我总是创建自己的POCO类来描述我的域模型。我知道还需要做更多的工作——然后您就要负责将POCO类映射到生成的类。但是我发现这是保持我的域类纯净的最好方法。生成的类可能有点复杂,其属性描述将用于填充它们的表和列。我喜欢生成的类,因为它们使我更容易与数据库交互——但我总是喜欢将简单的域类分离开来——这也让我能够灵活地交换数据库实现。我建议仍然使用WCF,但使用编译的dll作为客户端,而不是服务引用。这样,即使将来决定更改数据库,您仍然可以保持界面的一致性。使用DLL的优点:
最好像在当前项目中一样使用单独的dll—解耦是一种最佳实践,从数据库生成WCF DataContracts几乎肯定不是一个好主意—它可以用于第一个快照,但对数据库的后续更改不应直接反映在web服务中 使用WCF的一个优点是,您可以轻松地通过服务层实现解耦,如果您要分发按照您描述的方式编译的dll,那么实际上就是将所有客户机耦合到您的数据库表示 解耦使您的ORM/数据库能够根据需要进行调整,而无需所有客户端重新编译 另一方面,像这样的解耦在前期的实现上有点慢,所以如果你有一个非常小的项目可能会有点过头,但是如果你是跨团队工作或者以任何方式分布,那么它是必不可少的