【问题标题】:How to add Thrift dependencies to a C# project?如何将 Thrift 依赖项添加到 C# 项目?
【发布时间】:2015-10-11 23:39:37
【问题描述】:

您好,我正在尝试将 Thrift 用于 Windows 上的项目,但我似乎不明白如何让它工作,我也不太了解提供的文档。到目前为止,我设法创建了 thrift 编译器并使用它来生成 java 和 c# 文件。然而,当谈到在一个简单的项目中使用它们时,我似乎陷入了同一部分。现在我正在学习本教程:

http://blog.rfaisal.com/2013/10/09/getting-started-with-apache-thrift/

这很有帮助,但是我仍然不明白如何添加语言库,例如在教程中他说:

“此时,您需要将 thrift 库添加到您的项目中。从 tarball(应该在 /lib/csharp 下)打开 Thrift C# 库并编译它。”

后来他对客户说: “将 Thrift Java 库从 tarball(应该在 /lib/java 下)复制到这个项目。”

我有两个文件夹,但我不确定我到底应该做什么。

有人能指出我正确的方向吗?

【问题讨论】:

  • 这很广泛,尽管我在下面回答了。您应该将问题缩小到遇到麻烦的特定问题。
  • 把你的问题分给客户端和服务器端。
  • 抱歉,我可能不清楚,我想知道在我的项目中添加什么语言依赖项。但现在已经解决了。还是谢谢你
  • 如果我能给出一个建议。下一次,请想一想你如何命名这个问题。我将相应地更改标题(然后将 VTC 作为重复)。从中学习,但请继续询问/贡献!

标签: c# thrift


【解决方案1】:

Apache Thrift web site 上有一个教程,可以作为一个好的开始。

编译器是为 Windows 预先构建的,因此理论上您不需要自己构建它,但也没有那么难。最后,这是一个细节。

关于 C# 的库,您有两种选择。推荐的方法是使用/lib/csharp/src 下的项目文件编译Assembly。另一种选择是简单地将所有文件包含到项目中。

当然,您只使用您需要的语言。如果只需要 C#,请忽略 Java。 Thrift 在多个平台上支持大约 20 多种语言,您可以选择所需的任何语言,而忽略其余的。

与生成的文件相同:将它们包含到项目中或创建一个程序集,就像在 lib/csharp/test/ThriftTest 下为测试所做的那样。

所有语言的基本工作流程都相同:

  • 创建一个 IDL 文件来表示您的 API 合同
  • 调用 Thrift 编译器生成代码
  • 将所需的协议/传输堆栈放在一起
  • 充实客户端和/或服务器代码
  • 构建一切
  • 要开心。

【讨论】:

  • Thrift 是一个不错的库,我第一次使用 C# 和 Java 的过程非常顺利。我同意我很高兴。 (除了 Delphi,但可能这种语言是古老的小众语言,不要编译因为“单元套接字”)
  • @JacekCz:不是那么古老(我们从 D2010 开始),但原因很简单:作为 Delphi 绑定的维护者,我没有市场上可供测试的所有 Delphi 版本。如果您可以为该问题提供补丁或 PR,我很乐意对其进行审查。请参阅 Thrift 主页以获取 details on HowToContribute
  • @JacekCz:以防万一:我是认真的。如果您有解决该问题的补丁,并且法律允许您贡献,请提供。
  • 现在我只是偶尔在朋友/商业伙伴的电脑上与 Borland/Embecadero 联系。几个小时两次不能解决编译问题。我同意,Delphi 版本之间有很大差异,我们使用两个没有成功。这种集成(用于长期的 delphi 项目)是通过 SOAP 完成的,SOAP 是一种能够脱离 Delphi 的技术。
【解决方案2】:

我遇到的问题是将依赖项添加到项目中。

对于c#,需要打开thrift解决方案,然后在构建配置下选择“发布”并构建它。然后在 bin/Release 下找到需要在项目中引用的 .dll 文件。

对于 java,您需要将整个 org 文件夹添加到您的项目中,然后您需要将 httpclient-version.jar 和 httpcore-version.jar 添加到构建路径中

【讨论】:

  • 好吧,我该怎么说……那是一个一般的 C# 问题。当然你需要参考你打算使用的东西。
  • 是的,但我不知道我需要使用什么,这是我的问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-18
  • 1970-01-01
  • 1970-01-01
  • 2013-09-18
  • 2016-06-03
  • 2018-09-14
相关资源
最近更新 更多