現在とある企業のインターンでASP.NET MVC5を触っていて、プライベートではruby on railsを触っています。
プライベートでは我流ではありますがrailsに触っていて同じMVCパターンを採用している.NET MVCもなんとなく触れている状態ではあるのですが、少しその違いに関して気になっています。
具体的に気になることが特にMVCのモデルに関してです。
railsではrails g model
でモデルを作成するとモデルクラスが書いてあるファイルが出来上がると思います。
モデルはDBとの橋渡し役として、機能すると思いますがrailsは以下のようにモデルクラス内に何か書かなくても、
class Customer < ApplicationRecord end
機能し、モデル名.new
であったりモデル名.create
なりしてテーブルにアクセスできると思います。
しかし.NET MVCにとってはモデルはPOCO(Plain Old CLR Object)でありそれそのものは橋渡しをする機能はなく、橋渡し自体はコンテキストクラスが行うものと参考書で見ました。更にモデルには
public SamplePoco { public int ID { get;set;} public string Name{get;set;} public string Address{get;set;} public bool Validate(){ return ID > 0;} }
のようにテーブルのスキーマのようなものが書かれていることが多いと思います。
railsではこのようなテーブルの定義のようなものをした覚えがなく.NET MVCではDBファーストで作成するとモデル内勝手に作ってくれこそしますが、railsのようにモデルクラスの中身が空でも大丈夫ということはないと思います。
で、このような定義はどちらかというとrailsはマイグレーションファイルにこのようなテーブルの定義のようなものが書かれていると思います。
railsでモデルクラスに書くことと言えば
class Customer < ApplicationRecord belongs_to :user end
のようにリレーションを今まで書いてたくらいなのですが、、、これはrailsと.net MVCの設計思想の違いのようなものなのでしょうか?
モデルはDBとの橋渡し役というイメージが強かったのでちょっとASP.NET MVCでいうモデルとのギャップがあって、モデルはビジネスロジックを書く場所との説明も見ますがそもそもビジネスロジックってなんだと頭がこんがらがってきました。
抽象的な質問ですが、お答えいただいてくれる方は宜しくお願い致します。
回答1件
あなたの回答
tips
プレビュー