Вопрос

Я работаю над проектом, у которого есть веб-сайт на Rails и графический интерфейс C #, которые используют одну и ту же базу данных и модели данных.Я хотел бы разделить (активные) модели между двумя частями.Есть какие-нибудь идеи о том, как это возможно?

Это было полезно?

Решение

IronRuby предназначен именно для этого.

Вам нужно будет запустить Ruby on Rails с помощью IronRuby (вы также можете сделать это через IIS), а затем вы сможете вызывать свои сборки C # так, как будто они были библиотеками Ruby.

Некоторые ресурсы, которые помогут вам начать:

  • http://IronRuby.net - официальный сайт с некоторой документацией (не полной, но вы найдете там полезную информацию)
  • http://www.IronShay.com - мой блог с несколькими постами о IronRuby.Вы также можете связаться со мной через контактную форму, если вам нужны дополнительные указания
  • http://www.ruby-forum.com/forum/34 - Форум IronRuby / список рассылки, вопросы, на которые отвечают члены сообщества IronRuby, а также члены команды.

Другие советы

Короткий ответ заключается в том, что вы не можете этого сделать, не переопределив их в графическом интерфейсе C #.Вы можете предоставить контроллеры как WSDL / SOAP вместо restful, тогда вы можете попросить visual studio сгенерировать прокси для вас.C # действительно плох в динамических вещах, поэтому вы не можете просто взять модели ruby и повторно использовать их в C #, потому что их нужно скомпилировать.

Конечно, вы можете написать свой собственный инструмент генерации прокси для "restful" ресурсов rails, но в конце концов вам придется каким-то образом дублировать код модели.

Как говорит Шей, вы можете использовать IronRuby для устранения разрыва, но это зависит от того, хотите ли вы повторно использовать классы ActiveRecord или используете веб-сайт в качестве точки доступа к данным?Если вы хотите повторно использовать модели activerecord, то IronRuby - это способ общения с вашей базой данных (но для хорошей интеграции с C # вам пришлось бы создавать строго типизированные оболочки вокруг моделей, так что я действительно не вижу в этом смысла).

Первое, что приходит мне в голову, это разоблачить Веб-службы RESTful из приложения Rails и используйте эти сервисы в вашем клиентском приложении C #.Я не знаю способа избежать дублирования, если вы хотите, чтобы POCO были в вашем приложении на C # - возможно, напишите CodeSmith или шаблон T4, который считывает schema.rb и генерирует POCO.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top