Rails + C # - повторное использование моделей - PullRequest
0 голосов
/ 04 декабря 2009

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

Ответы [ 3 ]

2 голосов
/ 04 декабря 2009

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, и члены команды.
1 голос
/ 04 декабря 2009

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

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

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

0 голосов
/ 04 декабря 2009

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

...