「POCO」の版間の差分
ナビゲーションに移動
検索に移動
imported>Administrator |
|||
(2人の利用者による、間の2版が非表示) | |||
2行目: | 2行目: | ||
==概要== | ==概要== | ||
− | POCOは一般的には[[構造体]]のようなにシンプルな[[データ]]の受け渡しに特化した[[プロパティ]]だけで構成された[[クラス]] | + | POCOは一般的には[[構造体]]のようなにシンプルな[[データ]]の受け渡しに特化した[[プロパティ]]だけで構成された[[クラス]]を指す。逆をいえば「メソッドを一切含まないクラス」と覚えておけばよい。 |
− | POCOはいわゆる[[MVC]]や[[MVVM]]の「[[モデル]]」と似ているが、本来の[モデル]は[[UML]]などで表される操作を[[メソッド]] | + | POCOはいわゆる[[MVC]]や[[MVVM]]の「[[モデル]]」と似ているが、本来の[[モデル]]は[[UML]]などで表される操作を[[メソッド]]として定義したものまで含まれ、それだけで[[UI]]を除く部分の[[テスト]]([[単体テスト]])までは完結できる物であるとされる。ただし、日本の[[IT土方]]の世界に限れば、実際にそこまで本格的に実装された[[モデル]]は稀で、ほぼPOCOと同義になっているものが多い。 |
一方、POCOでは[[データ]]受け渡しに特化し、[[ドメインモデル]]に影響を及ぼす意味のある操作は含めてはいけない。[[データベース]]と[[サーバー]]間のデータ受け渡し([[Micro ORM]]的なマッピング)と、[[サーバー]]と[[クライアント]]間のデータ受け渡しの形式が共通であれば無駄が少なく似たようなクラスを乱立させることもない。[[Visual Studio]]や[[Xamarin Studio]]のソリューション中に共通で使用するPOCOだけを格納したプロジェクトを作り、サーバーやクライアントの各プロジェクトから参照すればマッピングも楽になる。 | 一方、POCOでは[[データ]]受け渡しに特化し、[[ドメインモデル]]に影響を及ぼす意味のある操作は含めてはいけない。[[データベース]]と[[サーバー]]間のデータ受け渡し([[Micro ORM]]的なマッピング)と、[[サーバー]]と[[クライアント]]間のデータ受け渡しの形式が共通であれば無駄が少なく似たようなクラスを乱立させることもない。[[Visual Studio]]や[[Xamarin Studio]]のソリューション中に共通で使用するPOCOだけを格納したプロジェクトを作り、サーバーやクライアントの各プロジェクトから参照すればマッピングも楽になる。 | ||
− | なお、[[PHP]]や[[Python]],[[Ruby]]などの[[スクリプト言語]]の世界では「[[型]]とかメンドクセー」と、POCOをも超越する概念として[[RESTful]]な[[JSON]]が流行っており、それらに対応するため[[.NET]] | + | なお、[[PHP]]や[[Python]],[[Ruby]]などの[[スクリプト言語]]の世界では「[[型]]とかメンドクセー」と、POCOをも超越する概念として[[RESTful]]な[[JSON]]が流行っており、それらに対応するため[[.NET]]にもdynamic型が搭載されるに至っている。 |
==関連項目== | ==関連項目== | ||
− | *[[ドメインモデル]] | + | * [[ビジネスロジック]] |
− | *[[POJO]] | + | * [[ドメインモデル]] |
− | *[[オブジェクト指向は愚かな考え。排便メソッドを実装した人間クラスから美少女クラスが作れない。]] | + | * [[POJO]] |
+ | * [[オブジェクト指向は愚かな考え。排便メソッドを実装した人間クラスから美少女クラスが作れない。]] | ||
==参考文献== | ==参考文献== |
2018年6月30日 (土) 01:01時点における最新版
POCO(読み:ぽこ、語源:plain old CLR Object)とは、特定のフレームワークに依存しないオブジェクトのことである。
概要[編集 | ソースを編集]
POCOは一般的には構造体のようなにシンプルなデータの受け渡しに特化したプロパティだけで構成されたクラスを指す。逆をいえば「メソッドを一切含まないクラス」と覚えておけばよい。
POCOはいわゆるMVCやMVVMの「モデル」と似ているが、本来のモデルはUMLなどで表される操作をメソッドとして定義したものまで含まれ、それだけでUIを除く部分のテスト(単体テスト)までは完結できる物であるとされる。ただし、日本のIT土方の世界に限れば、実際にそこまで本格的に実装されたモデルは稀で、ほぼPOCOと同義になっているものが多い。
一方、POCOではデータ受け渡しに特化し、ドメインモデルに影響を及ぼす意味のある操作は含めてはいけない。データベースとサーバー間のデータ受け渡し(Micro ORM的なマッピング)と、サーバーとクライアント間のデータ受け渡しの形式が共通であれば無駄が少なく似たようなクラスを乱立させることもない。Visual StudioやXamarin Studioのソリューション中に共通で使用するPOCOだけを格納したプロジェクトを作り、サーバーやクライアントの各プロジェクトから参照すればマッピングも楽になる。
なお、PHPやPython,Rubyなどのスクリプト言語の世界では「型とかメンドクセー」と、POCOをも超越する概念としてRESTfulなJSONが流行っており、それらに対応するため.NETにもdynamic型が搭載されるに至っている。