![]() |
2
5
我使用契约优先的方法,通常(但不总是)在每一端使用相同的类型表示。
实际上,要使用WCF,您不需要任何特殊的代理等;您可以在两端使用常规的.NET类型,而不使用
现在您可以使用:
你在客户机(和服务器)上所拥有的就是
对于其他工具,Protobuf NET是Google的“协议缓冲区”API的一个实现,它有一个DSL,用于以“契约优先”(和可移植/互操作)的方式描述数据和服务,例如(一个.proto文件):
Protobuf网络工具(我维护)包括一个“Protogen”实用程序,用于将此DSL转换为C/vb;,其中一个选项(对于C,至少-我需要检查vb)是发出一个完整的wcf代理实现(您可以选择同步或异步方法);与svcutil非常相似-但是(由于Protobuf网络关系),它包括自定义的
对于vs集成;我正致力于( proof ) |
![]() |
3
3
我更喜欢合同优先开发。我已经用过了 Service Factory 为此目的。它允许我在不进行自定义的情况下生成服务和客户机代码。 用 定制时,我们还能够生成与实体框架对象对应的数据传输对象,以及从一个对象转换到另一个对象的代码;自动记录异常;以及服务的HTML文档。 这是服务工厂随附的代码分析规则的补充,这些规则有助于防止开发人员通过选择不兼容的WCF选项而自鸣得意。 |
![]() |
4
2
在WCF中,“契约优先”看起来有一些多样性。您可以执行“代码协定优先”,其中数据和服务协定表示为具有正确属性标记的.NET类型。您可以从WSDL开始并生成服务和数据契约,也可以从数据契约的XML模式开始,并将服务契约表示为代码。你走哪条路真正取决于合同的性质以及如何使用。 如果您要实现某种东西到WSDL规范,那么从WSDL生成代码是一个显而易见的选择,从手工生成并不是什么大问题。如果希望立即传播对WSDL文件的更改,则可以从项目生成事件(或进入msbuild)触发生成。 如果您有要用作数据协定的现有架构(XSD),或者更愿意以这种方式开发数据协定,以便在其他平台中更容易地重用,则可以使用xsd.exe(或第三方替代方案)从架构生成类型。在这种情况下,您可以在面向代码的服务契约中使用XML可序列化类型,例如 this : 如果您自己在.NET中开发客户机和服务器,并且您的客户机既可以获取合同程序集,也可以从服务元数据(如WSDL)中愉快地生成客户机,那么用代码建模合同是一种很好的体验。使用“已知类型”方案,您可以在数据契约中支持继承模型,这是非常强大的。通过直接引用客户机中的合同程序集,可以跳过完全生成客户机代码(如其他答复中所述)。它非常高效和优雅,但是您需要知道,如果您过于花哨,您可以创建互操作挑战。 |
![]() |
5
0
我们这样做的方式在本视频中描述: http://www.dnrtv.com/default.aspx?showNum=103 我们的想法是不使用代码生成,因此避免了在合同更改时重新生成代码。 然后契约以代码形式存在,并且可以更改,如果客户机和服务器之间不匹配,它将在生成错误中显示。 |
![]() |
Ehsan Akbar · 当请求被激发时,WCF请求时间会增加 6 年前 |
![]() |
Gans · 具有多操作合约的WCF Rest服务 6 年前 |
![]() |
Moelgaard · NLog中的IIS应用程序名称。配置 6 年前 |
![]() |
Kerwen · WCF服务调用异步函数 6 年前 |