XML�R���\�[�V�A��

3.8 Web 2.0�����WebServices �`SOAP/REST�g�������̎w�j

�ŏI�X�V���F2007/06/07
�r�{����

�P�D�͂��߂�

���‚āAWeb�T�[�r�X�ƌ�����SOAP�������B��Ɠ����ƊԂ�SOAP���g�����V�X�e���A�g���s���A�A�v���P�[�V�����T�[�o��J���c�[����SOAP�Ή����i��ł����B���ɁA�l�X�ȊJ������p��SOAP���C�u�������o�Ă������ƂŁASOAP�����p�ł��Ȃ����R�͖����Ȃ����B
����A����ł�Internet��Ō��J����Ă���Web�T�[�r�X�́AREST�����|�I�ɑ����Ƃ����󋵂ł���BSOAP��񋟂��Ă��Ă��AREST�ƕ��p���Ă���ꍇ���قƂ�ǂŁA�����̐l��REST��I�����Ă���B
���̂悤�Ȍ����𓥂܂��ASOAP��REST�ɂ‚��āu�ǂ��Ⴄ�̂��H�v�u�ǂ������g�����炢���񂾁H�v�Ƃ����^��ɂ‚��āA�������Ă����B

�Q�DREST�Ƃ�

REST�Ƃ́ARepresentational State Transfer �̗��ŁAHTTP���g���ĒʐM�������Ȃ���@�ł���B���m�Ȏd�l���Ȃ����߂Ɂu�ǂ��܂ł�REST�ƌĂԂ��v�ɂ‚��Ă͗l�X�Ȏ咣�����邪�A�����ł́wHTTP��GET���\�b�h���g���Ă���URL�ɃA�N�Z�X����ƁAXML���Ԃ��Ă���x���̂�REST�ƌĂԁB�Z�b�V������POST���g���Ε��G�Ȏ��������”\�����A�����GET���g�����V���v����REST��z�肵�Ă���B
REST�́A��������URL�ɃA�N�Z�X����XML�𓾂�Ƃ��������́AWeb�u���E�U��URL�ɃA�N�Z�X����HTML�𓾂�̂Ƃ܂����������ł���B�Ⴂ�́AHTML�̑����XML��Ԃ��_�����ł���B

�EREST�̃T���v��
���N�G�X�g
GET /WebSite1/WebService.asmx/getHello?str=string HTTP/1.1
Host: localhost
���X�|���X
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<string xmlns="http://tempuri.org/">string</string>

REST�́AWeb�u���E�U��Ajax��A�N���C�A���g�A�v������g���ꍇ�����邪�A�T�[�o�Ԃ̃V�X�e���A�g�ł��g���B
REST�̍ő�̓����́uWeb�u���E�U��URL����͂���Γ���m�F�ł���v���ł���B
Web�u���E�U�ŗe�Ղɓ���m�F���ł��邽�߁A���łɑ��݂��Ă���T�[�r�X�ɑ΂��Ắu�܂��̓A�N�Z�X���Ă݂ĕK�v�ȏ�񂪓����邩�m�F���A���ۂɎg�����ǂ����͂��ꂩ��l����v�Ƃ����g�������ł���B�킴�킴�e�X�g�p�A�v�������K�v���Ȃ��B
�܂��A�ʏ�A�N���C�A���g�^�T�[�o���J������ꍇ�ɂ́A�u�T�[�o��������΁A�N���C�A���g������Ă�����m�F�ł��Ȃ��v�u�N���C�A���g��������΁A�T�[�o������Ă��A�N�Z�X����Ȃ��v���߁A�u�ǂ��炩����������J���v����ꍇ�ł��A�J����e�X�g�̌������l����Ƃ�������̃e�X�g�ł���������K�v���łĂ��Ă��܂��B�������AREST�ł���΁A�T�[�o���J�����鑤��Web�u���E�U���g���ē���m�F���ł��邵�A�N���C�A���g���J�����鑤�͑z�肵�Ă��郌�X�|���X���t�@�C���ɏ�������΃e�X�g�ł��A�J���̖{���ł͂Ȃ������̎�Ԃ��ȗ��ł���B

REST�̎g�p��̈�‚ɁuRSS�z�M�v������BRSS�z�M�ł́A�����URL�ɃA�N�Z�X����ƁAXML��RSS�t�H�[�}�b�g�ŋL�q���ꂽ�f�[�^���z�M�����BXML�Ŏ擾�ł��邱�ƂŁA��M���Ŏ��R�ɉ��H���邱�Ƃ��ł���B���̓����𐶂����āARSS���[�_�[�ł͈قȂ�T�C�g����擾�����j���[�X���܂Ƃ߂ĊǗ�������A�����t�H�[�}�b�g�ʼn{�����邱�Ƃ��ł���B

REST�̒�`���@�ɂ�WADL�iWeb Application Description Language�j�����邪�A�Ή����Ă���~�h���E�G�A���܂����Ȃ��A2007�N6���̎��_�ł͂��܂�g���Ă��Ȃ��B�������AWADL�͍\�����V���v���œǂ݈Ղ��̂ŁA�e����̃h�L�������g���쐬��������AWADL�ŋL�q���������P�‚̌���ōς݁A��葽���̐l�ɓǂ�ł��炦�邩������Ȃ��B����ȊO�̒�`���@�����邪�A���݂�WADL���ł��L�͂ł���B

WADL�̃T���v���iYahooSearch�j


�R�DSOAP�Ƃ�

SOAP�Ƃ́A���X��Simple Object Access Protocol �̗��ŁASOAP���b�Z�[�W�Ƃ���XML�ɂ���ă��b�Z�[�W�����������Ȃ����@�ł���BSOAP�̎d�l�́A1.0, 1.1, 1.2 �ƃo�[�W�����A�b�v�𑱂��Ă���B2000�N5���Ɍ��J���ꂽ1.1�ł�HTTP�ȊO��SMTP, FTP,�t�@�C�����L�Ȃǂ��g����悤�ɂȂ�A2003�N6���ɕW�������ꂽ1.2�ł�REST�Ɠ����悤��GET�ɂ��A�N�Z�X�����p�”\�ɂȂ����B�i1.2����Simple Object Access Protocol �̗��ł͂Ȃ��A�ŗL�����ɂȂ����j�������A�����ł�1.0����K�肳��Ă��čł�SOAP�炵���wHTTP��POST���g����SOAP���b�Z�[�W������������́x��SOAP�ƌĂԁB
SOAP�́A�����̓V�X�e���ԘA�g��ړI�ɁACSV�iComma Separated Values�j�t�@�C���̌����ARPC�iRemote Procedure Call�j�̌Ăяo���AEDI�iElectronic Data Interchange�j�ɂ��A�g�A�Ȃǂ���܂ł̕����̌��_��₤���߂ɓo�ꂵ���B
SOAP�́A�G���h�|�C���g�ƌĂ΂��URL��SOAP���b�Z�[�W�𑗂�ƁA���ʂ�SOAP���b�Z�[�W���Ԃ��Ă���B
����M����SOAP���b�Z�[�W��XML�ŋL�q���A��ԊO����<Envelope>�A���̉���<Header>��<Body>���L�q����B<Header>��<Body>�̉��ɂ�XML�ł��肳������Ή��������Ă��ǂ��A���R�Ɋg�����邱�Ƃ��ł���B���̑���ɁA�u�K�����[�g�v�f��<Envelope>�v�u���̉���<Header>��<Body>�v�i<Header>�͖����Ă��ǂ��j�Ƃ��邱�ƂŁA�V�X�e���Ŏ�舵���Ղ������B�ڂ����́ASOAP���b�Z�[�W�̃X�L�[�}���Q�Ƃ̂��ƁB����́w��^�̕����ɓ����Δz�B���͒��g��m��K�v�������A���g�̕�Ⳃɉ����g���Ă����������Ă��ǂ��x�̂Ǝ��Ă���B

�ESOAP�̃T���v��
���N�G�X�g
POST /WebSite1/WebService.asmx HTTP/1.1
Host: localhost
Content-Type: text/xml; charset=utf-8
Content-Length: length
SOAPAction: "http://tempuri.org/getHello"

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
               xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
               xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <getHello xmlns="http://tempuri.org/">
      <str>string</str>
    </getHello>
  </soap:Body>
</soap:Envelope>
���X�|���X
HTTP/1.1 200 OK
Content-Type: text/xml; charset=utf-8
Content-Length: length

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
               xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
               xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <getHelloResponse xmlns="http://tempuri.org/">
      <getHelloResult>string</getHelloResult>
    </getHelloResponse>
  </soap:Body>
</soap:Envelope>

SOAP�̒�`���@�ɂ�WSDL�iWeb Services Description Language�j������B�l�X�Ȍ���iJava, C++, .net, PHP, Perl, e.t.c.�j��WSDL�ɑΉ������~�h���E�G�A������AWSDL��ǂݍ��܂��鎖��SOAP���ȒP�ɌĂяo�������ł���B
�܂��AJavaScript�̂悤��WSDL��ǂݍ��ރ~�h���E�G�A���܂������Ă��ASOAP���b�Z�[�W�Ɠ����\����XML���b�Z�[�W���쐬���A�����POST���邱�Ƃ�SOAP�Ăяo���������ł��Ȃ����Ȃ��B

WSDL�̃T���v���iGoogleSearch�j


�S�DREST��SOAP�̋��ʓ_

REST��SOAP���AHTTP��XML���g�����ŁA����܂ł́uCORBA�ɂ�郁�b�Z�[�W�����v�uFTP���g����CSV�t�@�C���������v�Ȃǂɔ�ׂ�ƁA�l�X�ȃ����b�g������B
�ő�̃����b�g�́A�u���܂ł�Web�T�C�g�J���̃n�[�h�A�\�t�g�A�m�E�n�E�����̂܂܎g����v���Ƃł���B
�����āA�c�O�Ȃ��炢���‚��̃f�����b�g������B
HTTP���g���Ă��邱�ƂŁA���Ɏ��Ԃ̂����鏈���̉�����҂Ž����ł��Ȃ��B���̑O��HTTP�̃^�C���A�E�g�ɂȂ��Ă��܂�����ł���B�������@�Ƃ��Ắu����I�Ɏ��s���ʂ��|�[�����O�Ŗ₢���킹��v�uSOAP�ł���΁AHTTP�ȊO���g���v�Ȃǂ����邪�A���ꂼ��꒷��Z������B

REST��SOAP��XML���g�����AXML���g���ȏ�X�L�[�}���`����K�v������B�u�X�L�[�}���`�����ɃT�[�r�X��񋟂���v�Ƃ������Ƃ��s�”\�ł͂Ȃ����A���p�ґ��̕��S���傫���Ȃ��Ă��܂����AXML���g�������b�g���������Ă��܂��B
�T�[�r�X��񋟂��鑤�́AInternet�Ȃǂ�ʂ��đ����̐l�ɗ��p���Ă��炤���߂ɂ́A�X�L�[�}�̒�`��T�d�ɂ����Ȃ�Ȃ���΂Ȃ�Ȃ��BRSS�Ŏg���Ă���RDF�̂悤�ɋK��ς݂̃X�L�[�}�����p�ł���Ζ��Ȃ����A�I���W�i���̃X�L�[�}���K�肵�悤�Ƃ���ƁA���p�҂�������Α����قǁA�������ύX�����ꍇ�̉e���͈͂��L���Ȃ��Ă��܂��BXML�̍ő�̗��_�ł���w�g�����������x�𕷂��āA�u�g�����ĐV�v�f�𑝂₷���ɂ͖��Ȃ����낤�v�Ǝv����������Ȃ����A�X�L�[�}���u�g����v�f���𖾊m�ɂ��A���肷��v�̂ŁA��ŃX�L�[�}��ύX���ėv�f����������ƁA���̃X�L�[�}�̗��p�ґS�����Ή��𔗂��Ă��܂��B
�܂��X�L�[�}�́A����XML�\����\���̂ɂ��قȂ�����`���@���”\�ł���B�X�L�[�}�̉�ǂ̓~�h���E�G�A�ɂ���ĈႤ�̂ŁA���G�ȃX�L�[�}��`�͖�肪�������邩������Ȃ��B���̂��߁A�ł��邾�����Ղȕ\���ŋL�q���A�����‚��̃~�h���E�G�A�œ���m�F���s���Ă���z�z���������m���ł���B

�E�X�L�[�}�̃T���v��
<?xml version="1.0" encoding="utf-8"?>
<s:schema xmlns:s="http://www.w3.org/2001/XMLSchema" 
          elementFormDefault="qualified" targetNamespace="http://tempuri.org/">
  <s:element name="getHello">
    <s:complexType>
      <s:sequence>
        <s:element minOccurs="0" maxOccurs="1" name="str" type="s:string" />
      </s:sequence>
    </s:complexType>
  </s:element>
  <s:element name="getHelloResponse">
    <s:complexType>
      <s:sequence>
        <s:element minOccurs="0" maxOccurs="1" name="getHelloResult" type="s:string" />
      </s:sequence>
    </s:complexType>
  </s:element>
  <s:element name="string" nillable="true" type="s:string" />
</s:schema>


�T�DREST�̓���

REST�̍ő�̓����́u���p���Ղ��v�u�m�F���Ղ��v�ł���BWeb�u���E�U��URL����͂��邾���ŁA����m�F�������Ȃ����Ƃ��ł���B����́A�Â����炠��SMTP��FTP�̃v���g�R�����Atelnet�R�}���h���g���Ď蓮�œ���m�F���ł��鎖�Ɠ��l�ɁAInternet��̃T�[�r�X�ɑ΂��āu�ȒP�ɓ���m�F���ł���v�Ƃ����̂́A���ɕ֗��ł���B
�܂��AHTTP�i��������TCP/IP�j��XML������Ύg����̂ŁA�����̊J������ŗ��p�ł���B

REST�ł́A���̓p�����[�^�Ƃ��ĉ•ς̕�����URL�̈ꕔ�Ƃ��ĕ\������B
��Dhttp://hostname/hoge.cgi?id=1234

http://hostname/hoge.cgi/id/1234/

���s�A�X�y�[�X�A���{��Ȃǂ̓G���R�[�h
���̂��߁A�p�����[�^�̐��������Ȃ��Ă���ƁAURL�����ɒ����Ȃ�댯������B�uRFC2616 Hypertext Transfer Protocol -- HTTP/1.1�v�ɂ��΁AHTTP�̎d�l���URL�ɒ��������͂Ȃ����A�l�b�g���[�N�‹��ɂ���Ă͖�肪�N����”\��������̂ŁA�����Ȃ�߂��Ȃ��悤�ɒ��ӂ��Ȃ���΂Ȃ�Ȃ��B

�J���ɂ‚��ẮAcgi�Ȃǂ�Web�A�v���J���Ƃ܂����������ł���B
�T�[�o��
����Java�Frequest.getParameter("param1")
PHP�F$_GET['param1']
���̑��FQUERY_STRING�Ȃ�
�o��HTML�ł͂Ȃ�XML��Ԃ�
�N���C�A���g��
���N�G�X�gHTTP��TCP�𑀍삷�郁�\�b�h�𗘗p
JavaScript�FXMLHttpRequest�AActiveXObject ("Microsoft.XMLHTTP")
Java�FHttpURLConnection
���X�|���XXML���Ԃ��Ă���̂ŁADOM API�ő���
���{��������ꍇ�́A�����R�[�h�̈�����A���ꕶ���̕��������ɒ��ӂ��Ȃ���΂Ȃ�Ȃ��B�u��т���UTF-8�Œʂ��v�Ƃ���̂��m���ł���B

�N���C�A���g�Ƃ��ẮA�����̊J�������HTTP��������TCP��������̂ŁA�قƂ�ǂ̊‹��ŊJ���”\�ł���B�������J�����ꂩ��TCP���g���Ȃ��Ă��A�O���R�}���h�Ăяo�������ł���΁Atelnet�R�}���h��wget�R�}���h���g����REST���Ăяo�������ł���B


�U�DSOAP�̓���

SOAP�̍ő�̓����́uWS-*�ɂ��g�����v�ł���BWS-*�Ƃ͂��܂��܂�SOAP�̋@�\�g���̑��̂ł���BW3C�iWorld Wide Web Consortium�j��OASIS�iOrganization for the Advancement of Structured Information Standards�j�Ȃǂ̕W�����c�̂ɂ���ĕW��������Ă���A����x���_�[�ɂ��͂����݂̐S�z�����Ȃ��A�l�X�ȊJ������ŗ��p�ł���”\��������B
WS-*�ɂ́A�������̕��܂Ŋ܂߂�ƁA���ɑ�R�̎d�l������B
�ʏ�A�uSOAP�̂��߂̃~�h���E�G�A�v�ƌ������ꍇ�A������WS-*�܂ł͊܂�ł��Ȃ��BWS-*���g�����߂ɂ́A�ړI��WS-*���g�����߂̃~�h���E�G�A�̓������K�v�����A�܂����̃~�h���E�G�A�����݂��Ă��Ȃ���������Ȃ��B
�܂��A�uWS-*�𓱓�����΁A��肪���ׂĊȒP�ɉ�������v�킯�ł͂Ȃ��̂ŁA�\���Ȍ��؍�Ƃ��K�v�ł���BXML�R���\�[�V�A����sPlat�ł��AWS-Security�̍ő�̓����ł���End-to-End�̃Z�L�����e�B���������悤�Ƃ����ꍇ�̉ۑ��ɂ‚��Č������Ă��邪�A�����WS-Security�p�~�h���E�G�A�ł�Point-to-Point�͖��Ȃ����AEnd-to-End�̏ꍇ�͊ȒP�Ɏ����ł��Ȃ��̂�����ł���B
WS-*�ł́A�P�‚̎d�l�̈����͈͂��L���A���d�l�Ɗ֘A����ꍇ������B�����~�h���E�G�A���m�Őڑ�����̂ł���Ζ��͏��Ȃ����낤���A�Ⴄ�~�h���E�G�A���m�Őڑ�����̂ł���΁A�c�O�Ȃ���u�ȒP�ɂ‚Ȃ���v�킯�ł͂Ȃ��B


�V�D�J�����@

��Ƃ��āA�T�[�r�X�񋟑��̊J���̗����ǂ��Ă����B�����ł́AREST��SOAP�̗�����񋟂���ꍇ���l���Ă����B
  1. ����M����XML�f�[�^�̍\�����`����
    �܂��́A����M����XML�f�[�^�̍\���i���X�L�[�}�j���`����B�����œ��̓p�����[�^���P���ł����REST�ɂ��Ή��ł��邵�A���G�ł����SOAP�݂̂ƂȂ��Ă��܂��B
    ���p�ł���W�������ꂽ�X�L�[�}��`������Ηǂ��̂����A�����ꍇ�ɂ̓X�L�[�}���쐬����K�v������BJava�Ȃǂ̊J������ŏ������f�[�^Bean�ɂ���ăX�L�[�}��`�������������Ă����c�[�������邪�A���̃c�[���Ɉˑ������L�q���@�ŏo�͂���댯������B�u�ł��邾�������̐l�ɗ��p���ė~�����v�̂ł���΁A���ՂȋL�q���@�������g���A�����̃c�[���Ő���ɓǂݍ��߂āA�z��ʂ�̓��������邩�m�F����̂��m���ł���B

  2. SOAP�ɑΉ�����̂ł���΁AWSDL���L�q����
    �X�L�[�}���g���āAWSDL���L�q����BWSDL���쐬���邱�ƂŃC���^�[�t�F�C�X�����m�ɂȂ�B
    WSDL���~�h���E�G�A�ɓǂݍ��܂���΁A�X�P���g���������������Ă����̂ŁA���Ƃ͎��ۂ̏�����DB�A�N�Z�X�Ȃǂ̒��g���J�����邾���ł���B
    �X�L�[�}��WSDL���L�q����̂͑�ς����A����̃c�[���Ɉˑ����Ȃ����߂ɂ��A��̃����e�i���X�����m�ۂ��邽�߂ɂ��A���������ɗ���Ȃ������m���ł���B
    �񋟑�����M����p�����[�^���P���ł���΁A�wSOAP���쐬����Ύ����I��REST�ɂ��Ή����Ă�����x�~�h���E�G�A�iAxis2, .net Framework���j������B
    ���g�̊J���ɂ‚��ẮA�e�J�����ꂲ�Ƃ̊J����@���g�����ƁB

  3. REST�ɑΉ�����̂ł���΁A���o�͂̃T���v�����쐬����
    WADL�������������������ǂ��̂����A���̂Ƃ��뗘�p�ł���c�[�������Ȃ����߁A�h�L�������g�Ƃ��Ă������p�ł��Ȃ����낤�B
    �w�肳���URL�ƌ��ʂ�XML�̃T���v���f�[�^���쐬����B�T���v���f�[�^������Ă����΁u�d�l�����m�ɂȂ�v�u�e�X�g�f�[�^�Ƃ��Ďg����v�u���p�҂փT���v���Ƃ��Ē񋟂���v�Ɗ��p�ł���̂ŁA����Ă����đ��͂Ȃ��B
    SOAP�̏ꍇ���A�T���v����SOAP���b�Z�[�W���쐬���Ă����ƁA�F�X�ƕ֗��ł���B

  4. �e�X�g
    REST�ł���΃u���E�U�ŃA�N�Z�X���Ă݂�̂��ȒP�ł���B
    �܂��A�~�h���E�G�A���񋟂��Ă����e�X�g��ʂ��g�����@�����邪�AHTTP���g���Ă��郁���b�g�̂P�‚Ƃ��āAWeb�T�C�g�p�̃e�X�g�c�[�������̂܂܎g�����BWeb�T�C�g�̃e�X�g�╉�׎����̂��߂ɁA�����^�L���̂��܂��܂ȃc�[�������邪�A���̂قƂ�ǂ��g����BSOAP�ł����Ă��APOST�f�[�^�Ƃ���XML�𑗐M����Ό��ʂ�XML����M�ł��邵�A�p�����[�^�𓮓I�ɕω�������e�X�g��Web�T�C�g�̏ꍇ�Ɠ��l�ł���B
�T�[�r�X�񋟑��̗���͈ȏ�ł���B��L�ȊO�̕����ɂ‚��ẮAWeb�T�C�g�J���Ɠ����ł���B

���ɁA�T�[�r�X���p�҂�REST���g��������΁AHTTP��������TCP�̋@�\�𗘗p���AURL���쐬����Η��p���邱�Ƃ��ł���B
�Ⴆ�΁AJavaScript�����REST�̌Ăяo���́A�ȉ��̂悤�ȃR�[�h�Ŏ����ł���B
�EREST�A�N�Z�X�̃T���v���iJavaScript�j

function requestRest(){

    var endpoint = "http://�z�X�g��/WebSite1/WebService.asmx";  // ���M��
    var param1 = "keywork";                                      // �p�����[�^

    // URL�𐶐�
    var url = endpoint + "/getHello?str=" + encodeURI(param1) + "&dummy="+(new Date().getTime());

    // XMLHttpRequest���쐬
    try {
        xmlhttp = new XMLHttpRequest();     // Netscape, Firefox�Ȃ�
    } catch (e){
        try {
            xmlhttp = new ActiveXObject ("Msxml2.XMLHTTP");     // IE
        } catch (e){
            try {
                xmlhttp = new ActiveXObject ("Microsoft.XMLHTTP");  // IE
            } catch (e){
                // XMLHttpRequest�̍쐬�Ɏ��s
            }
        }
    }
    
    xmlhttp.onreadystatechange = method1;    // ���X�|���X���󂯎�������ɌĂ΂�郁�\�b�h���w��
    xmlhttp.open('GET', url, true);
    xmlhttp.setRequestHeader ("Content-Type","text/xml; charset=utf-8");

    xmlhttp.send();  // REST�ő��M

}

function method1() {
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
        alert(xmlhttp.responseText);    // ���ʂ��f�o�b�O�\��
    }
}
URL�̍Ō�ɁA���݂̃~���b��lj����Ă���̂́A�r���̌o�H�ŃL���b�V�����Q�Ƃ����̂�h�����߂ł���B
�u�p�����[�^�̌^�͍����Ă��邩�H�v�u�K�{�p�����[�^�̓Z�b�g����Ă��邩�H�v�u�֌W�����p�����[�^�̓Z�b�g����Ă��Ȃ����H�v�͌Ăяo���O�Ɏ����Ń`�F�b�N�͂ł��Ȃ��B�T�[�o����G���[���Ԃ��Ă��āA���߂Ė�肪������B

�T�[�r�X���p�҂�SOAP���g�������l�́ASOAP�Ή��̃~�h���E�G�A�𗘗p���AWSDL��ǂ݂��߂ΊȒP�ɗ��p���邱�Ƃ��ł���B
�ʏ�ł���΁A���̎����������ꂽ�R�[�h��SOAP���Ăяo���B
�������A�J������ɂ���Ă̓~�h���E�G�A��������������Ȃ����A�����̗��R�Ń~�h���E�G�A���lj��ł��Ȃ��‹���������Ȃ��B���̂悤�ȏꍇ�ɂ��ADOM��API����g����SOAP���b�Z�[�W���쐬������A��SOAP���b�Z�[�W��String�Ŏ����Ă����ăp�����[�^����������ύX����΁A���p�ł��Ȃ��킯�ł͂Ȃ��B
�Ⴆ�΁AJavaScript�����SOAP�̌Ăяo���́A�ȉ��̂悤�ȃR�[�h�łȂ�Ƃ������ł���B
�ESOAP�A�N�Z�X�̃T���v���iJavaScript�j

function requestSoap(){

    var endpoint = "http://�z�X�g��/WebSite1/WebService.asmx";  // ���M��
    var param1 = "keywork";                                      // �p�����[�^

    // SOAP���b�Z�[�W���쐬
    var msg = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n\
<soap:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" \n\
               xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" \n\
               xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\">\n\
  <soap:Body>\n\
    <getHello xmlns=\"http://tempuri.org/\">\n\
      <str>" + param1 + "</str>\n\
    </getHello>\n\
  </soap:Body>\n\
</soap:Envelope>";

    // XMLHttpRequest���쐬
    try {
        xmlhttp = new XMLHttpRequest();     // Netscape, Firefox�Ȃ�
    } catch (e){
        try {
            xmlhttp = new ActiveXObject ("Msxml2.XMLHTTP");     // IE
        } catch (e){
            try {
                xmlhttp = new ActiveXObject ("Microsoft.XMLHTTP");  // IE
            } catch (e){
                // XMLHttpRequest�̍쐬�Ɏ��s
            }
        }
    }
    
    xmlhttp.onreadystatechange = method2;    // ���X�|���X���󂯎�������ɌĂ΂�郁�\�b�h���w��
    xmlhttp.open('POST', endpoint, true);
    xmlhttp.setRequestHeader ("Content-Type","text/xml; charset=utf-8");
    xmlhttp.setRequestHeader ("SOAPAction","\"http://tempuri.org/getHello\"");

    xmlhttp.send(msg);  // SOAP���b�Z�[�W�𑗐M
}

function method2() {
    if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
        xmlDoc = xmlhttp.responseXML;   // ���ʂ�DOM�I�u�W�F�N�g�Ƃ��Ď擾
    }
}
�������A����ł̓p�����[�^�̌^�̓`�F�b�N����Ȃ����A "<"�̂悤�ȕ����������Ă��Ă����̂܂ܑ��M���Ă��܂��BDOM��API���g���Ă��Ȃ����߂ɁA���M�O�Ɂu�X�L�[�}�ɍ��v���Ă��邩�H�v��uXML�Ƃ��Đ��������H�v���`�F�b�N���邱�Ƃ��ł��Ȃ��B�~�h���E�G�A�Ŏ����������ꂽ�R�[�h���g���Ă���΁A�R���p�C�����ɖ������o�ł�����A�C�����C���w���v�Ƃ������J���c�[���̎x���@�\��L���Ɏg�����Ƃ��ł���B
��������O�Ŏ�������ƁA�R���p�C���Ȃǂɂ��`�F�b�N�������Ȃ��̂ŁA�������Ȃ�SOAP���b�Z�[�W�𑗐M���Ă��܂��댯������B���̏ꍇ�ASOAP�̓����ł���u���M�f�[�^��XML�v�̃����b�g�����܂萶������Ȃ��B����ł��A�u�T�[�o��SOAP�����Ή����Ă��炸�A�N���C�A���g��SOAP�ɑΉ��ł��Ȃ��v�ꍇ�ɂ́A��L�̂悤�Ɂu�`����SOAP�̃t���v�����邱�ƂŁA�T�[�o���Ăяo�����Ƃ��ł���̂ł���B

�����SOAP���g����悤�ɂȂ�n�߂�2000�N���́A�u�قȂ�����E�J������Ԃł����Ă��ȒP�ɂ‚Ȃ���v�Ƃ������Ƃ����ɃA�s�[������Ă����B����قǁACORBA��RPC�Ȃǂ̑��̃V�X�e���ԘA�g�v���g�R���́u�‚Ȃ���Ȃ��������������v�킯�ł���B�܂��A�o�C�i���ŒʐM���邽�߂Ɏ��͂Őڑ������������鎖����������BSOAP��REST�̓e�L�X�g�ŒʐM����̂ŁA�ʐM���e��l�Ԃ��m�F���邱�Ƃ��ł��邵�A��蕔����Web�T�[�o�̃t�B���^�@�\���g���ĒʐM���e�Ɏ�������Ẳ������”\�ł���B


�W�D���̑��̃A�v���[�`

SOAP��REST�ȊO�ɂ��A�u���E�U����HTTP���g�������b�Z�[�W�����̕��@�Ƃ��āA�ȉ��̂悤�ȃA�v���[�`������B
�T�[�o����HTML��HTML�̈ꕔ��Ԃ����@�́A�����ƈȑO����g���Ă���B<div>�^�O�̒��g�����������ւ�����A�ł��P���ȗ�Ƃ���<frame>�^�O���g���ĉ�ʂ̈ꕔ�����������邱�ƂŁA����ʂ��c���‚‰�ʂ̈ꕔ���X�V�����@�͈ȑO����g���Ă���B
�t�ɁA�u�ʏ��HTML��Ԃ��v�T�C�g�ɑ΂��āA�uXHTML�ɕϊ�����v�v���L�V��ʂ����ƂŁA�ʏ�T�C�g�̏���XML�Ƃ��đ��삷���@������B

JSON�iJavaScript Object Notation�j�́AREST�Ƃقړ��������A���X�|���X�Ƃ���XML�ł͂Ȃ�JavaScript�ɂ�����I�u�W�F�N�g�̕\�L�@���g�����f�[�^��Ԃ��B
JavaScript�ŊȒP�ɃI�u�W�F�N�g�ɕϊ��ł��AXML�Ɣ�ׂ�ƃf�[�^�̓]���ʂ����Ȃ��čς݁AXML���p�[�X����K�v���Ȃ��̂ō����ɏ����ł���B�������AJavaScript�ɓ��������f�[�^�`���ɕϊ����Ă��܂��̂ŁAJavaScript�ȊO�ł͈����h���Ȃ��Ă��܂��B

JSONP�iJSON with Padding�j�́AJavaScript�ɂ̓h���C�����E�̖�肪���邽�߂ɁAJSON�ł͑��T�C�g�ɑ΂��郊�N�G�X�g�𒼐ڍs�����Ƃ��ł��Ȃ��B���̂��߁A���T�C�g�Ƀv���L�V��ݒu����K�v���������B���̖���������邽�߂ɁAJSONP�ł́u<script src="http://...">�̎w��Ȃ�A���h���C���ɃA�N�Z�X�ł���v�Ƃ��������𗘗p���A�h���C�����E�̖����������Ă���B
�������A�����JavaScript�̃Z�L�����e�B�̔��������g�������@�Ȃ̂ŁA�Z�L�����e�B�゠�܂�悢���@�ł͂Ȃ����A�u���E�U�ɂ���Ă͎g�p�ł��Ȃ���������Ȃ��B

���C�u�����̒񋟂́AYahoo!, Google, Amazon S3�Ȃǂł͗l�X�ȊJ������p�̃��C�u�������񋟂���Ă���B�����̃��C�u�������g���΁AREST��SOAP���ӎ������ɃT�[�r�X�𗘗p���邱�Ƃ��”\�ł���BAjax�����ڂ����L�b�J�P�ƂȂ���GoogleMaps�́AHTML���C�����邾���Ŏ����̃T�C�g�ɊȒP�ɖ��ߍ��߂��̂ŁAcgi���g���Ȃ��T�C�g�ł����p���邱�Ƃ��ł��A��葽���̐l�ɗ��p���Ă��炤�����o�����̂��낤�B
�������A���C�u������񋟂���̂̓R�X�g�������邵�A���p�ґ��ɂƂ��Ă��u���C�u�����̎g�������o����v�Ƃ����ʂ̊w�K�R�X�g���������Ă��܂��B



�X�D�ǂ����I�����ׂ����H

���ۂɊJ�����Ă݂�ƁAWS-*�̋@�\���K�{�łȂ�����AREST��SOAP�Ƃ������͂��܂���ɂ͂Ȃ�Ȃ��BHTTP��GET�����g���Ȃ��‹��łȂ�����AHTTP�𒼐ڑ��삷��΂ǂ���ɂ����Ƃ��A�N�Z�X�ł��Č��ʂ��擾�ł��邵�Acgi��servlet�̋@�\���g���΃T�[�r�X���񋟂ł���B���ۂɂ́A�z�肵�Ă���T�[�r�X���p�҂̓����ɍ���������I������A�Ƃ����̂������I�ł��낤�B

REST�́A�ȒP�Ɏ����邵�A�����̊w�K�R�X�g���Ⴂ�Ƃ��������b�g������B�T�[�o����Web�T�C�g�J���Ɠ����Z�p���g���邵�A�N���C�A���g����HTTP��XML����͂��邽�߂�DOM API���g�����΁A�J�������I�΂����p�ł���B
REST�́uGET���g���Ă���̂ŁA���̓p�����[�^�����Ȃ��v�Ƃ����̂��ő�̎�_�ɂ��Ȃ邪�A�uPOST�ő�ʂ̃p�����[�^�𑗂�v�Ƃ����̂��”\�ł���B�����<form method="POST">�Ɠ����ł���B
���̂悤�ȓ������ӂ܂���ƁAREST�ł��s���葽����Ώۂɂ����A���̓p�����[�^�����Ȃ����z�M�⌟���T�[�r�X���ł̗��p�Ɍ����Ă���B�����̓��̓p�����[�^�𑗐M�������ꍇ�ɂ́APOST���g������A�Z�b�V�������g���ĕ����ɕ������đ���K�v������A���p���鑤���u�P����REST�Ƃ͈Ⴄ���M���@�v���R�[�f�B���O����Ƃ�����Ԃ��������Ă��܂��BInternet��ɖ����Ŏg���錟���T�[�r�X���������邪�A���̂悤�ȕs���葽�������p�ł�����擾�T�[�r�X���A�܂���REST�����ł���B

SOAP�́A���@�\�ł��邪�䂦�ɁA�����̊w�K�R�X�g�������‚��Ă��܂��B�~�h���E�G�A�������Ǝ�y�Ɏg���Ȃ��̂ŁA�g�p����~�h���E�G�A�ɂ‚��Ă��w�K���Ȃ���΂Ȃ�Ȃ��B�t�ɁA�~�h���E�G�A��WSDL��ǂݍ��܂��鎖�ɂ���āASOAP���Ăяo�����߂̃X�^�u������X�L�[�}�ɑΉ�����Bean�����Ȃǂ������������Ƃ��������b�g������B��������΁uSOAP���g���Ă���v�Ƃ��������ӎ������ɊJ�����s����BREST�ł̎������͐i��ł��Ȃ����A�P���ȕ�����̌����ōςނ̂ł��܂�K�v�Ƃ���Ȃ����낤�B
SOAP��I������ő�̓��@�́AWS-*�ł���B�������A�c�O�Ȃ���WS-*�łȂ���΂Ȃ�Ȃ���ʂ͍��̂Ƃ��둽���Ȃ����AWS-*�ȊO�̕��@���g�����Ƃʼn����ł���”\��������B�i�Ⴆ�΁AWS-Security�̔۔F�̂悤�ȋ@�\���K�v�ł���΁Ahttps�ƒʐM���b�Z�[�W�ۊǂɂ���āw���e�ؖ��X�ցx�̂悤�ȋ@�\���O�҂ɒ񋟂���悤�ȃT�[�r�X���o�ꂷ�邩������Ȃ��j
���̂悤�ȓ������ӂ܂���ƁASOAP�ł����G�ȓ��͂�K�v�Ƃ�����A���o�͂ɑ΂��ă`�F�b�N��K�v�Ƃ���悤�ȃT�[�r�X���ł̗��p�Ɍ����Ă���B��ʂ̃f�[�^�o�^�A�V�X�e���ԘA�g��B2B�ȂǂɌ����Ă���B�܂��AWS-*��K�{�Ƃ���ꍇ�ɂ́ASOAP�łȂ���΂Ȃ�Ȃ��B

�E�e�����̔�r

 SOAP  REST  JSON 
�w�K�e�Ր��~����
�R�[�f�B���O���i�����������͏����j���~��
�e�X�g�̂��Ղ��~���~
�J���c�[�����~�~
�����̗e�Ր��~����
�J���ɂ�����g�[�^�������~����
���G�ȃf�[�^�̓������~�~
���G�ȃf�[�^�̏o��������
�����Ȍ^�`�F�b�N���~�~
�ėp���i������J������̎�ށj�����~
�W�����c��W3C-ecma
�g�����iWS-*�j���~�~

�T�[�o�ƃN���C�A���g�̗��������O�ŊJ�����A���Ɍ��J���Ȃ��̂ł���΁AREST��SOAP�̂ǂ����I��ł����������Ȃ����낤�B����JavaScript���炵���A�N�Z�X���Ȃ��̂ł���΁AJSON���g���������p�t�H�[�}���X��J���������ǂ���������Ȃ��B
�������A���J����Ă���T�[�r�X�𗘗p���鑤���猩��ƁA�񋟂���Ă��镨���g���Ƃ������ɂȂ��Ă��܂��B�����ŁAREST��SOAP�̗������g����ƑI�����������ė��p���Ղ��̂����A����ȏ�ɃT�[�r�X�̒񋟌`�Ԃ��g�������傫�����E����B

�T�[�r�X�̒񋟕��@�́A�ȉ��̂悤�ɕω����Ă��Ă���B
  1. ���N�G�X�g�ƃ��X�|���X�̐����b�Z�[�W�̒�
  2. WSDL,WADL�Ȃǂ̒�
  3. �N���C�A���g�p���C�u�����̒�
���C�u������񋟂����Ɨ��p�҂ɂƂ��Ă͕֗��Ȃ̂����A������g���Ȃ��‹��̏ꍇ�ɂ͑Ώ��ł��Ȃ��Ȃ��Ă��܂��B�񋟂��鑤�́A�ߋ��̌`�����X�V���‚A�V�������@�ł��񋟂���K�v������B

�܂��A�T�[�r�X��񋟂����ł́A�ȉ��̂悤�ȉۑ肪����B
�܂��́A�F�؂��K�v���ǂ������l����K�v������B�����A�F�؂��K�v�ł���Ȃ�A�F�؂ƖړI�̃��N�G�X�g��ʂɂ���̂��A����Ƃ��P��̃��N�G�X�g����BASIC�F�؂��p�����[�^�̈ꕔ�Ƀ��[�U�[�����܂߂邩�����߂�B�܂��A�}�b�V���A�b�v�������Ȃ��Ǝ��Ԃ���蕡�G�ɂȂ�B�F�؂��郆�[�U�[�́A�匳�̗��p�҂Ȃ̂��A���̃T�[�r�X�𒼐ڌĂяo���Ă���T�C�g�Ȃ̂��A�O���F�؃T�[�r�X�𗘗p����̂��A�ȂǁA�|�[�^���T�C�g�Ɠ��l�̉ۑ肪��������B
�ǂ̕����ŃT�[�r�X��񋟂���ɂ��Ă��A�u�T�[�r�X�̗��x�v�͔��ɏd�v�ł���B�傫�߂���Ǝg���ɂ������A�����߂���Ɖ��x���Ăяo���Ȃ��Ƃ����Ȃ��̂Ŗʓ|�ɂȂ�B
�u���E�U����̗��p��z�肷��ƁA�u���E�U�̃h���C�����E�̐�����������BGoogleMaps�̂悤�ɁAHTML�̏C�������őg�ݍ��߂�`�Œ񋟂ł���Η��z�I�����A���̂��߂�JSONP�̂悤�Ȏ�@���g���ƃu���E�U�̃Z�L�����e�B�X�V�œ����Ȃ��Ȃ�댯������B�u���E�U��JavaScript����_�C���N�g�ɗ��p����ꍇ�ƁAWeb�T�[�o�����p���ė��p����ꍇ�̗�����z�肷��K�v������B
�Z�L�����e�B�ɂ‚��ẮA���ɑ����̓_�ɏ\���ɒ��ӂ��Ȃ���΂Ȃ�Ȃ��B�u�r���̌o�H�ł̓����v�u�s���A�N�Z�X�ɂ����R�����v�u�U���ɂ��f�[�^�j��v�ȂǁA�����U�����󂯂�Ƒ傫�Ȕ�Q���󂯂Ă��܂��B�������A�����̍U���ɂ‚��ẮAWeb�T�C�g�\�z�ł̌o�������ɎQ�l�ɂȂ�͂��ł���B

���p���鑤�ɂƂ��ẮAWeb�T�C�g�𗘗p����ꍇ�Ɠ����悤�ȗv�]���o�Ă��邾�낤�B
�����āAInternet��ł����̃T�[�r�X��񋟂���T�C�g���o�ꂵ�Ă���͂��ł���BREST��SOAP�̕ϊ��T�[�r�X�́A����̃T�[�r�X�p�̕��ł���΂��łɐF�X�Ɠo�ꂵ�Ă��邵�A�l�X�ȃT�[�r�X���܂Ƃ߂ĂP�‚�REST�ɕϊ����Ă����Yahoo!Pipes������B


REST�͎g���Ղ��A�ȒP�ɓ����ł���BSOAP�Ȃ�~�h���E�G�A�⃉�C�u������L���ɗ��p�ł���΁A�y�ɊJ�����ł���B���̂��߁AREST��SOAP�̗�����񋟂��������A���p�҂ɂƂ��ĕ֗��Ȃ̂͌����܂ł��Ȃ��B


Copyright (c) XML �R���\�[�V�A�� 2007 All rights reserved.
Copyright (c) �A�h�\�����i�������  2007 All rights reserved.

�@�@�u�G���^�[�v���C�Y�E�V�X�e���̂��߂�Web 2.0�v�ڎ��ɖ߂�