我正在开发一个项目,该项目在 Rails 中有一个网站和一个使用相同数据库和数据模型的 C# GUI。我想在两个部分之间共享(活动)模型。关于这怎么可能的任何想法?
3 回答
IronRuby 正是为此而生。
您将需要使用 IronRuby 运行 Ruby on Rails(您也可以通过 IIS 执行此操作),然后您可以调用您的 C# 程序集,就像它们是 Ruby 库一样。
一些帮助您入门的资源:
- http://IronRuby.net - 有一些文档的官方网站(不完整,但你会在那里找到一些很好的信息)
- http://www.IronShay.com - 我的博客有几篇关于 IronRuby 的文章。如果您需要更多路线,您也可以通过其联系表与我联系
- http://www.ruby-forum.com/forum/34 - IronRuby 论坛/邮件列表,IronRuby 社区成员和团队成员也回答了问题。
简短的回答是,您必须在 C# gui 上重新定义它们。您可以将控制器公开为 WSDL/SOAP 而不是其他的东西,然后您可以让 Visual Studio 为您生成代理。C# 在动态方面真的很糟糕,所以你不能只使用 ruby 模型并在 C# 中重用它们,因为它们需要编译。
您当然可以为 rails 的“restful”资源编写自己的代理生成工具,但最终您必须以某种方式复制模型代码。
就像 shay 说的那样,您可以使用 IronRuby 来弥补差距,但这取决于您是要重用 ActiveRecord 类还是使用网站作为获取数据的点?当您想重用 activerecord 模型时,IronRuby 是与您的数据库对话的方式(但要与 C# 良好集成,您必须围绕模型创建强类型包装器,所以我真的不明白这一点) .
我首先想到的是从 Rails 应用程序公开RESTful Web 服务,并在 C# 客户端应用程序中使用这些服务。如果你想在你的 C# 应用程序中使用 POCO,我不知道有什么方法可以避免重复 - 也许编写一个读取 schema.rb 并生成 POCO 的 CodeSmith 或 T4 模板。