.NET�J���Ғ��S ���I�u���O�L��

MVVM�p�^�[���̏펯 �\ �uM�v�uV�v�uVM�v�̖����Ƃ́H

���� �둥
2011/05/18

��Model

�@Model�́AC#�Ȃǂ̔ėp�v���O���~���O����ŋL�q����A�h���C���E���W�b�N�ƃf�[�^�A�‚܂�̓r�W�l�X�E���W�b�N�ƃr�W�l�X�E�h���C���̃X�e�[�g�������܂��B

��Model�ɂ‚��Ă悭������ �\ �X�e�[�g���X�A�T�[�o����Model�A�i�����w�Ȃ�

�@Web�V�X�e���ł悭�̗p�����3�w�\���ɂ�����f�[�^�E�A�N�Z�X�w��r�W�l�X�E���W�b�N�w�̏펯���AMVVM�p�^�[����Model�Ɏ������ނ̂͂�߂܂��傤�BWPF�^Silverlight�Ȃǂ̃��b�`�E�N���C�A���g���E��Model�́AWeb�V�X�e���̂���Ƃ͌���I�ɈႢ�܂��B����I�ɈႤ�̂́A����̓X�e�[�g�t���ł��邱�Ƃł��B

�@������Web�V�X�e���̃r�W�l�X�E���W�b�N�w��f�[�^�E�A�N�Z�X�w���̂́A��{�I�ɃX�e�[�g�������܂���B�Ȃ��Ȃ�Web�V�X�e���́A���N�G�X�g���ƂɃ��X�|���X��Ԃ��̂����ׂĂ̏����̊�{�ƂȂ��Ă��邩��ł��B���N�G�X�g���󂯂āA���̃��N�G�X�g���󂯂�܂ł̊ԂɁA�ێ����Ă����Ȃ���΂Ȃ�Ȃ����͊�{�I�ɂ���܂���B

�@������MVVM�p�^�[���ł�Model�̓X�e�[�g�t���ł��B���b�`�E�N���C�A���g�͊�{�I�ɏ�Ԃ����‚��̂�����ł��B����Model���X�e�[�g���X���Ƃ�����A�ǂ��Ȃ�ł��傤���H �r�W�l�X�E�h���C���̃X�e�[�g�͂ǂ����󂯎��‚̂ł��傤���H ViewModel���󂯎��‚̂ł��傤���H �������������ꍇ�AMVVM�p�^�[���̖{���̖ړI�ł���u�h���C���E���W�b�N�ƃv���[���e�[�V�����E���W�b�N�̕����v�͂��Ȃ�Ȃ��Ȃ�ł��傤�B����Ȏ����ł́A����MVVM�p�^�[�����ǂ��ł���������牽�̈Ӌ`�����ݎ��Ȃ��Ȃ��Ă��܂��܂��B����̓A���`�p�^�[���ł��B

�@�܂��A�uModel���T�[�o���ƌ��Ȃ��v�Ƃ����b�����т��ь������܂��B�u�N���C�A���g����ViewModel����v�Ƃ������b�ł��B�ł̓N���C�A���g���Ƀr�W�l�X�E�h���C���̃X�e�[�g�Ǘ��͊܂܂�Ȃ��̂ł��傤���H ��{�I�ɏ�Ԃ����ƒ��b�`�E�N���C�A���g�ł���Ȑ݌v�����蓾��̂ł��傤���H�B

�@����͂�͂�A���`�p�^�[���Ȃ̂ł��B�T�[�o���ɉ������낤�ƁA��{�I�Ƀ��b�`�E�N���C�A���g���ɂ��r�W�l�X�E�h���C���̏��͑��݂���͂��ł��B�A�v���P�[�V�������ʐM����T�[�o��A�O���T�[�r�X��Model�ƌ��Ȃ��̂͂�߂܂��傤�B�N���C�A���g���ɂ�������Model�w�����܂��傤�B

�@�����AModel�w��WCF RIA�T�[�r�X�Ȃǂ�������x��ւ��Ă���邱�Ƃ�����悤�ł��B����������͂����܂ł��AWCF RIA�T�[�r�X��Model�̑�ւ����Ă����킯�ł����āAModel�w���N���C�A���g���ɑ��݂��Ȃ��킯�ł͂Ȃ��̂ł��BWCF RIA�T�[�r�X���g�p���Ă��Ă��A����Ƃ͕ʂɁA�r�W�l�X�E�h���C���ɑ���������Ǘ�������A�r�W�l�X�E���W�b�N��u�����肷��ꍇ�́AWCF RIA�T�[�r�X���������Ă����v���L�V�w�����b�v����`��Model�w��u���̂��K�؂ł��B

�@�uModel�����w���ɕ�����v�Ƃ����b�������܂��B����Ȃ̑��̏ꍇ�A������O�ł��BModel�����w�ɕ��������āA�����Model�ɂ͕ς�肠��܂���B����MVVM�p�^�[�������E���Ă�����̂ł͂���܂���B

�@�ǂ����ŁA�uMVVM�p�^�[���ɂ́AModel�ƕʂɉi�����w��݂���ׂ����v�Ƃ����c�_�����܂������A�����l������̂ł͂���܂���B�i�������@�\�v���ł���Ȃ�AModel���̂ǂ����ɒu���΂悢�̂ł��B�Ⴆ��Window Phone 7��ł�Silverlight�A�v���P�[�V�����ŁA�u�v���ɂ�炸ViewModel�ɉi�����w���K�v���v�Ǝv�����̂Ȃ�AWindows Phone 7�pMVVM�p�^�[���E�C���t���X�g���N�`���Ƃ��ėp�ӂ���΂悢�̂ł��B�v���ɂ��Ȃ��@�\�̓C���t���X�g���N�`���Ƃ��ėp�ӂ����̂��K�؂ł��B���������l��������Ȃ��ƁA�uView��ViewModel�̊ԂɃf�[�^�E�o�C���f�B���O�w������v�ȂǂƂ����b�ɂȂ��Ă��܂��܂��B

��Model�̎��‚ׂ�����

�@��ŏq�ׂ��悤�ɁAModel�̓X�e�[�g�t���ł���ׂ��ł��BModel���X�e�[�g�t���ł���΁AModel����̌��ʂ�Model�̃X�e�[�g�̃v���p�e�B�ύX�Ƃ������ʂ������炷�ꍇ�������܂��BViewModel��Model�@�\��񓯊��ŌĂяo�����ꍇ���l���Ă݂܂��傤�B���̌��ʂ́uModel�v���p�e�B�̍X�V�v�Ƃ����`�Ȃ̂ł�����AModel�ɕύX�ʒm�@�\���Ȃ���΁AViewModel�����ʂ��擾���邷�ׂ͂���܂���B

�@�]����Model�͕ύX�ʒm�@�\�������܂��BViewModel�Ɠ����悤�ɁAINotifyPropertyChanged�C���^�[�t�F�C�X�̎����Ƃ��čs���܂��B

�@�܂��AModel�͓��͒l���؋@�\�������܂��B�Ⴆ��RDBMS���g�p���Ă���΁A�f�[�^�x�[�X�Ɋi�[�”\�Ȓl�͎��O�Ɍ��܂��Ă��܂��BUI���Ȃ��Ƃ��i�[�”\�Ȓl�͌��܂��Ă��邱�Ƃ������ł��傤�B�������������͒l�̌��؂�Model�ōs���܂��BViewModel�́A��������̂܂�View�ɓ`����΂悢�̂ł��BIDataErrorInfo�C���^�[�t�F�C�X����������̂ł����A�f���Ɏ�������ƃG���[�\���p������Model�Ɋ܂܂�Ă��܂��܂��B���\�[�X�E�t�@�C�����g�p���āA���\�[�X�E�L�[������Model�̎����Ɋ܂߂�̂𐄏����܂��B

���h���C���E���W�b�N�E�p�^�[��

�@�O�q�̂Ƃ���Model�̓X�e�[�g�t���ł��̂ŁAModel�G���e�B�e�B�̕ύX��ViewModel�ɓ`����K�v������܂��B�����Ă��̕��@�̓C�x���g�ł��B������l�����������ŁAViewModel�����猩����Model�̃C���^�[�t�F�C�X�͂ǂ��������`�ł���ׂ��ł��傤���B�����ăX�e�[�g�t���Ƃ͂����Ă��A���̏���Model�ɕێ����A����Model�Ɏ��‚ׂ��ł͂Ȃ��̂ł��傤���B

�@�܂��A�uModel���r�W�l�X�E�h���C���ɑ�����̂��ő�̑O��ł���v�Ƃ������Ƃ��v���o���܂��傤�B�‚܂�Model�̓X�e�[�g�t���Ƃ͌����Ă��AModel�����‚ׂ����̓r�W�l�X�E�h���C���ɑ�������ŁA�\����p�̏��ł����Ă͂����Ȃ��͂��ł��B���̑O�񂪎���Ȃ���΁A��������MVVM�p�^�[���̑O��ł���A�u�v���[���e�[�V�����E���W�b�N�ƃh���C���E���W�b�N�̕����v�͂��Ȃ��܂���B

�@���̖��͓��R�A�ȒP�ɂ͉����ł��܂���B�����āA����́u�ǂ�������UI���쐬����̂��H�v�Ƃ������ƍ������������Ă��܂��B

�@�����ł�����x�́AModel��݌v���邤���ł̎w�j���~�����͎̂����ł��B������Model�������h���C���E���W�b�N�A���̐݌v�p�^�[���Ƃ��āwPoEAA�iPatterns of Enterprise Application Architecture�j�x�ɒ񎦂���Ă���h���C���E���W�b�N�E�p�^�[�����l���Ă݂܂��傤�B

�@�h���C���E���W�b�N�E�p�^�[���Ƃ��ẮA�傫�����L��2�‚��������܂��B

  • �r�W�l�X�E�h���C���Ɛ[���������A�G���e�B�e�B���r�W�l�X�E�h���C���̕��͂����`���A�G���e�B�e�B�ɑ���̐Ӗ������������h���C���E���f���E�p�^�[��
  • ���[�X�E�P�[�X�P�ʁA���邢�̓��[�X�E�P�[�X�E�O���[�v�P�ʂŃG���e�B�e�B��؂�A���̃G���e�B�e�B�͕\����ԂƑ傫�������i������j���Ȃ��g�����U�N�V�����V�����E�X�N���v�g�E�p�^�[��

�@�h���C���E���W�b�N�E�p�^�[���Ƃ��ẮA�ق��ɂ��e�[�u���E���W���[���E�p�^�[���Ƃ����̂�����܂����A�Ӌ`�I�ɏ�L��2�‚̑g�ݍ��킹�����ԓI�ȃp�^�[���ł��̂ŁA�����ł͐G��܂���B

�@�u���{��Web�V�X�e���n�J���ł́A�قƂ�ǂ̏ꍇ�A�g�����U�N�V�����E�X�N���v�g�E�p�^�[�����p������v�ƕ����܂��B���[�X�E�P�[�X�P�ʂɃG���e�B�e�B���X�N���b�`�ō���Ă����Ƃ������Ƃ́A��ʂɕ\��������̂��߂̃G���e�B�e�B���X�N���b�`�ō���Ă������ƂƂقƂ�Ǔ���������ł��B���̃A�v���[�`�͑����̏ꍇ�ŗL�p�ł����A�����‚���������Ă����܂��B

�@�悭����������́A�u�d�����鏈���̋��ʉ����s���ɂ����v�Ƃ��������ł��B�����҂����Ă���̂̓��[�X�E�P�[�X�P�̂ł�����A���R�ق��̃��[�X�E�P�[�X�Ƃ̋��ʏ����ɂ͋C�t���ɂ����Ȃ�܂��B

�@�܂��AMVVM�p�^�[���̃^�[�Q�b�g�ł��郊�b�`�E�N���C�A���g�J���Ƃ������_�Ō����Ƃ��͕ʂ̖��������Ă��܂��B

�@���b�`�E�N���C�A���g��Model���X�e�[�g�t���ł���̂͑O�q�����Ƃ���ł��B������Model�Ƃ����ꕔ���Ɍ��炸�A���b�`�E�N���C�A���g�Ƃ����̂͊�{�I�ɏ�Ԃ������Ă��܂��B���ꂪ�A1��ʁA1��ʁA�g���̂Ă�Web�J���ƁA�ł��قȂ�Ƃ���ł��B

�@���b�`�E�N���C�A���g�̃h���C���E���W�b�N���A�g�����U�N�V�����E�X�N���v�g�E�p�^�[���Ŏ������Ă������Ƃ��܂��傤�B�ێ����Ă���G���e�B�e�B�̏�ԂɕύX�������āA���̕ύX��ʂ̃G���e�B�e�B�ɓ`�������ꍇ�́A�ǂ�����΂悢�̂ł��傤���H �ύX��ʒm���ꂽ�G���e�B�e�B���������g�̏�Ԃ�ω������Ȃ���΂Ȃ�Ȃ��Ƃ�����A�ǂ�����΂悢�̂ł��傤���H ���[�X�E�P�[�X�P�̂����ăG���e�B�e�B��݌v�E�J�����Ă���̂ŁA�O�q�������ʉ������̖��Ɠ��l�ɁA���łɎ擾�����G���e�B�e�B�Ԃɑ��݂���A�e����^�������֌W��c�������i������܂���B�g�����U�N�V�����E�X�N���v�g�E�p�^�[���ɂ��h���C���E���W�b�N�̊J���ł́A���̂悤���X�e�[�g�t���ȃG���e�B�e�B�Ԃ̒ʒm�ƑJ�ڂ̊Ǘ�������Ȃ��Ă��܂��܂��B

�@�����炱���̃h���C���E���f���E�p�^�[���Ȃ̂ł��B�h���C���E���f���E�p�^�[���ł́A�r�W�l�X���Ӗ��I�ɕ��͂��A�G���e�B�e�B���`���܂��B�G���e�B�e�B����������‚��Ƃ��d�v�ł��B�G���e�B�e�B������������Ȃ�Web�V�X�e���ɂ�����3�w�̏펯�͎̂Ă܂��傤�BWeb�V�X�e���ŃG���e�B�e�B����������‚��Ƃ��Ȃ��̂́A���̃G���e�B�e�B��1��g���̂Ă�����ł��B�G���e�B�e�B�̏�Ԃ��ω�����ۂɂ́A���̃G���e�B�e�B�͔j������A�V������蒼�����̂����ʂ�����ł��B

�@�����ĈӖ��I�ȕ��͂��琶�܂ꂽModel�́A�C�x���g���g���Ă��݂��ɒʒm�������܂��B���̎�@��ViewModel��Model�̊Ԃł̃G���e�B�e�B�̕ύX�ʒm���@�Ɠ���Ȃ̂ŁA����ł��Ă��܂��B

�@�������C�x���g���g���ăh���C���E���f���Ԃ��ʐM���������Ƃ́A���g����Ԃ������A�ق��̃G���e�B�e�B�Ƃ̊֘A�ɂ���Ď��g�̃X�e�[�g���ω����Ă����`�Ɣ��ɑ������悢�̂ł��B�g�����U�N�V�����E�X�N���v�g�E�p�^�[���Ō����Ă������͂��ׂĉ������܂��B

�@�h���C���E���f���ɑ����Ȃ��Ǝv���鑀��́A�ʓr�A�T�[�r�X�w������đΏ����܂��BWeb�T�[�r�X�Ȃǂ̃X�e�[�g���X�ȃT�[�r�X�w�Ɖ����Ⴄ�̂ł��傤�B�����Web�T�[�r�X�̃T�[�r�X�w�����ׂăT�[�r�X�E���\�b�h�ő��삷��̂ɑ΂��āA�h���C���E���f���̃T�[�r�X�w�́A�����܂ł��h���C���E���f���Ɋ܂܂�Ȃ����삾�����s���Ƃ���ł��B�h���C���E���f���ɑ΂��čs���鑀��́A�ɗ́A�h���C���E���f���Ŏ������܂��B�‚܂�h���C���E���f���E�p�^�[���ł̃T�[�r�X�w�͂��������Ȃ�܂��B�����ăT�[�r�X�w���Ԃ��G���e�B�e�B�́A���[�X�E�P�[�X���瓱�o���ꂽ�g�����U�N�V�����E�X�N���v�g�I�ȃG���e�B�e�B�ō\���܂���B�h���C���E���f���ɑ����Ȃ�����Ȃ̂�����A����ł����̂ł��B���[�X�E�P�[�X���瓱�o���ꂽ�G���e�B�e�B�́A�K�R�I�ɉ�ʍ\���ɋ߂��Ȃ�܂��B

�@���b�`�E�N���C�A���g�����b�`�E�N���C�A���g�炵������Ă������ꍇ�́A�قڕK���G���e�B�e�B�Ԃ̊֘A�ɂ��ύX����������͂��ł��B�h���C���E���f���E�p�^�[���́A�I�u�W�F�N�g���g���ω����Ă����p�^�[���Ƒ������悢�Ƃ���Ă��܂��B�܂��Ƀ��b�`�E�N���C�A���g�ɂ����Â��̃p�^�[���ł��B

�@�g�����U�N�V�����E�X�N���v�g�E�p�^�[���̓V���v���ł����A���b�`�E�N���C�A���g�ł́A�g�����U�N�V�����E�X�N���v�g�I�ȃp�^�[���݂̂ł͑Ώ�������Ȃ��Ȃ邱�Ƃ��l�����܂��B

�@������ɂ���AModel�̓����͗v���ɍ��킹���݌v����؂ł��B���܂�ɂ��h���C���E���f���ɑ�������̂����Ȃ��A�T�[�r�X�w���������Ȃ肻���Ȃ�΁A�g�����U�N�V�����E�X�N���v�g�ŊJ������̂��悢�ł��傤�B

�@�������A���Ȃ��Ƃ����{�ł킽��������������i������{�ł����J���������ƂȂ��ł����ǁj�A������u�Ɩ��V�X�e���v�Ƃ������ނ̃��b�`�E�N���C�A���g�J���ł́AWeb�V�X�e���̉�ʂ����̂܂܃��b�`�E�N���C�A���g�Ɉڂ��������̂��̂��܂��܂����|�I�ɑ����̂������ł��B�e��ʂōs��ꂽ����̌��ʂ��A���łɕ\������Ă���ق��̉�ʂ̌��ʂɉe�����܂������^���Ȃ������肵�܂��B�v���������������`�ł���Ȃ�΁A�g�����U�N�V�����E�X�N���v�g�E�p�^�[���ł̎����̕����K�؂ł���ꍇ�̕��������̂ł��傤�B

�@�������uRIA�i���b�`�E�C���^�[�l�b�g�E�A�v���P�[�V�����j���v�uUX�i���[�U�[�̌��j���v�Ƃ���������AWeb�V�X�e���̐��E�ƈ���āA�����̏�ʂŁA���b�`�E�N���C�A���g�ł̃h���C���E���f���E�p�^�[���̏d�v���͂�荂���Ȃ�ƁA�킽���͊m�M���Ă��܂��B

�@�e�Ӗ��̏ڍׂƍl�����́A����ňȏ�ɂȂ�܂��B

�@�Ō�ɁA�`���ŊȒP�ɏq�ׂ��uMVVM�p�^�[���ɂ��f�U�C�i�[�ƃv���O���}�[�̋��Ɓv�ɂ‚��Đ������܂��B


�@INDEX
�@ .NET�J���Ғ��S ���I�u���O�L��
�@ MVVM�p�^�[���̏펯 �\ �uM�v�uV�v�uVM�v�̖����Ƃ́H
�@   1�DMVVM�p�^�[���T�v
�@   2�DView
�@   3�DViewModel
  4�DModel
�@   5�D�f�U�C�i�[�ƊJ���҂̕��Ɓ^MVVM�p�^�[����K�p�E�J�X�^�}�C�Y����Ƃ��̗��ӓ_

CfbNXEy[Ww �@�u.NET�J���Ғ��S ���I�u���O�L���v


Insider.NET �t�H�[���� �V���L��
  • ��2��@�Ȍ��ȃR�[�f�B���O�̂��߂� �i2017/7/26�j
    �@�����_���ŋL�q�ł��郁���o�̑����Athrow���Aout�ϐ��A�^�v���ȂǁAC# 7�ɂ͈ȑO�����R�[�h���Ȍ��ɋL�q�ł���悤�ȋ@�\����������Ă���
  • ��1��@Visual Studio Code�f�o�b�O�̊�b�m�� �i2017/7/21�j
    �@Node.js�v���O�������f�o�b�O���Ȃ���AVisual Studio Code�ɓ�������Ă���f�o�b�O�@�\�̊�{�́u�L�v���}�X�^�[���悤
  • ��1��@���ĂȃR�[�f�B���O�̂��߂� �i2017/7/19�j
    �@C# 7�Œlj����ꂽ�V�@�\�̒�����A�u���l���e�����\���̉��P�v�Ɓu���[�J���֐��v���Љ��B�����͕�����₷���R�[�h���L�q����̂Ɏg����
  • Presentation Translator �i2017/7/18�j
    �@Presentation Translator��PowerPoint�p�̃A�h�C���B�v���[���e�[�V�������̎����̕t����A������ł̎��^�����A�X���C�h�̖|����s����
��IT���[���}�K�W���@�V������X�^�b�t�̃R���������[���œ͂��܂��i�����j
- PR -

���ڂ̃e�[�}

�Ɩ��A�v��Insider �L�������L���O

�{�� ����
�\�����[�V����FLASH
"); adremove.push(adstrtmp[adstart]); } } for(var i = 0; i < adremove.length; i++){ adremove[i].parentNode.removeChild(adremove[i]); } adstr.sort().reverse(); adstr = adstr.join(""); return adstr; }