• 締切済み

XMLで電文を送受信するプログラムの設計について

システム間で電文を送受信する機能の設計を 担当することになり悩んでおります。 「相手システムに電文を送信して、その結果を受信する」または、 「相手から送信されてきた電文を受け取って、その結果を返す」 っといった設計に関してまったくの素人です。 なぜ素人に担当させるのかっといった事で突っ込まれると、 みもふたもないので、その点に関して触れないで下さい m(_ _)m とりあえず、私のレベル(下記)にあった 分かりやすい参考書、またはインターネットのサイトを見て 基礎勉強(下記)からはじめたいのですが、参考資料/サイト の紹介をお願いします。 <開発環境(案)> OS:Solaris 言語:Java(自分からAシステムへ)とPerl(自分からBシステムへ) プロトコル:https 電文形式:XML <私のレベル> https,SSL、SOAPといった通信用語の意味は知っている(つもり) Javaは実装の経験は無いが解析は出来る。 <知りたいと思っている事> ※「思っている」の意味は、今まで見た事・聞いた事からインスピレーション的に、 「多分、この辺を押さえておかなければいけないんだろうな...」っと思っている事です。 ・送受信処理のJavaの実装例 ・送受信が1秒間に100回あってもレスポンス悪化しない方法  (100回という数値は適当です。普通どれくらいを目標にするのですか?) ・通信エラー等の例外処理の実装方法  (通信エラー発生時の電文はロストするのですか?それってどうリカバリー   するのですか? その当たりに関する事) ・「なりすまし,盗聴,改ざん」っといった事に対する防御方法とその実装方法に関する事

  • Java
  • 回答数2
  • ありがとう数2

みんなの回答

  • sha-girl
  • ベストアンサー率52% (430/816)
回答No.2

>・送受信が1秒間に100回あってもレスポンス悪化しない方法 根本的にはサーバー側のネットワーク環境を改善する以外ありません。 >(100回という数値は適当です。普通どれくらいを目標にするのですか?) 回数だけでは指標になりません。データ量にも依ります。 >・通信エラー等の例外処理の実装方法 >通信エラー発生時の電文はロストするのですか? TCPというプロトコルにはエラーチェックや再送信の機能が 備わっています。ですからTCPを使う限り基本的にエラーチェックをする必要はありません。 あるとするならタイムアウトしてコネクションが切れる事です。 その場合、再度TCPのコネクションをはりなおします。 >・「なりすまし,盗聴,改ざん」っといった事に対する防御方法とその実装方法に関する事 まず、httpsを使っている時点でやりとりするデータは暗号化されています。 秘密鍵を入手しない限り、そう簡単にデータを解読する事は出来ません。問題は「なりすまし」ですが HTTPS通信をおこなう場合、認証証明書が必要になります。この認証証明書は自分で作る事 も可能ですが、「なりすまし」を防ぐため 商用で使う場合にはベリサイン等から発行してもらいます。 手数料として大体10万円/年の費用がかかります。 http://www.verisign.co.jp/ (探せばもっと安いところはあります。)

  • ngsvx
  • ベストアンサー率49% (157/315)
回答No.1

「相手システムに電文を送信して、その結果を受信する」 →クライアント 「相手から送信されてきた電文を受け取って、その結果を返す」 →サーバー クライアントとサーバーではプログラムの構造が全く違います。 別物だと思って下さい。 実装例ですが、クライアントはともかく、サーバーは用途によってまるで異なるため、 例として挙げられるのはごく基本的な部分しかありません。 JAVAの標準APIではHTTPSのクライアントは比較的簡単に作れますが、 HTTPSサーバーを作るのは大変です。 サーバーはTOMCATなど既存のサーバーを利用するのがいいでしょう。 送受信が100回で妥当かどうかは、システムの種類やユーザーの数、その他の条件によって決まることであり、 普通かと聞かれてもわかりません。 >通信エラー発生時の電文はロストするのですか?それってどうリカバリーするのですか? エラー内容によると思います。 また、そもそもリカバリーが必要なのかもシステムの要件で決めることです。 「なりすまし,盗聴,改ざん」ですが、「盗聴」は暗号化で防ぎ、「なりすまし,改ざん」は 電子署名という技術で防ぎます。 とりあえず、プロトコルに関しての理解が少し浅いように思えますので、次のサイトでも見てください。 http://www.atmarkit.co.jp/fnetwork/index_index.html ページの真ん中あたりの「TCP/IP」 暗号に関しての理解を深めるため、次の本を読むことをお勧めします。 暗号技術入門-秘密の国のアリス 暗号に関しては、この本で用語などの意味を理解しておかないと、 実装するときにもさっぱりわかりません。

関連するQ&A

  • 電文とは

    現在、プロジェクトでJavaで電文を取り扱うという話を聞いているのですが、イマイチピンと こないので質問させてください。 電文とは「通信プログラムで送受信されるデータ」という記述を某所でみたのですが 電文とはHTTP通信のことでしょうか。Webアプリでリクエストパラメータを送信するとXMLが responseとして返ってくる場合、これは電文のやりとりを行ったことになるのでしょうか。 HTTP通信でない電文はありますでしょうか。

    • ベストアンサー
    • Java
  • Javaでtn3270プロトコルを使い電文のやり取りをしたいのですが、

    Javaでtn3270プロトコルを使い電文のやり取りをしたいのですが、 tn3270でググるとsocket通信の実装で可能だとありました、 socket通信でいいのでしようか? テストで通信の確認をしたいのですか どうしたらいいでしょうか?

  • データベースの物理設計(素人)

    まったくの素人です。 オラクルで、データベースの物理設計とは具体的にどういうことを言っているのでしょうか? 実装設計のことですか?  実際にデータベースを構築するハードウェアが決まっていなくても設計することが可能なのでしょうか? そもそも、データベースを設計するにあたって、どのような順序でどういうことを決めていかなければいけないのか? が よくわかりません。 概要レベルでいいので、どういうことを どういう順序で設計進めていけばいいのか? 物理設計は、その流れの中のどのポジションにあって、何が決まっていないとできないものなのか?を教えてください。 宜しくお願いします。

  • フレームワーク設計

    いつもお世話になっております。 Javaのフレームワークや共通機能(例外処理など)の設計を担当して おります。ただ経験不足からかノウハウが無く、うまくいっておりません。 昔JSPやServletでWebシステムの画面周りのPGは経験があるのですが、 フレームワークや共通機能となると、また違う経験や発想が必要な気がしています。 オブジェクト指向、デザインパターン、Jakarta プロダクト、J2EE など・・色々なキーワードがあるのですが、「フレームワーク設計」となると、どういった切り口から学習していくのが良いでしょうか?。 「アプリケーションアーキテクチャ設計」とも言われるようですが・・。 皆様のご経験など教えて頂けますと助かります。 よろしくお願いします。

    • ベストアンサー
    • Java
  • UDPプログラム、データの送受信

    javaを使って通信の勉強をしています。 UDPを用いた通信のプログラムを作成しています。 送信側では、次のようにして送信したいバイト数を分割して送信しています。 BUF_MAX = 40960; DatagramSocket socket = new DatagramSocket(); // data分のバイトデータを分割して送信する。 int part = 5242880 / BUF_MAX; // 分割して送信する回数 send_start = System.nanoTime(); for(int i = 0;i < part;i++){   byte[] buf = new byte[BUF_MAX];   buf[0] = (byte)i;   DatagramPacket sendPacket = new DatagramPacket(buf,BUF_MAX,serverAddress,servPort);   total += BUF_MAX;   // 指定したバイト数を送信する。   try{     socket.send(sendPacket);   }catch(IOException e){     System.out.println(e);   } } System.out.println(total); このようにしています。 こうする理由は、5242880バイトのデータを128回に分割して送信して、 受信側で受信したパケットの最初の文字を見て、何個目のパケットが届いていないかを確認するためです。 受信側でこれらのデータを受信する方法を考えているのですが、どうすればよいか分かりません。 receive(packet)で受信するのは知っています。 送信された複数のデータを受信するのに、 for(int i = 0;i < 128; i++){  receive(packet); } というようにするのでしょうか?このようにすると、 このループを抜けることができません。それは、パケットが通信途中で紛失するため、128回受信しないからだとおもいます。 受信しなくなったらループを抜けるというようにすればよいとおもいますが、その方法が分かりません。 どなたかアドバイスをいただけないでしょうか?お願いします。

    • ベストアンサー
    • Java
  • システム設計を学ぶ良書を教えてください

    こんにちは、私はSIに13年勤務しているものです。 入社してから5年は、Java+DB2+WebSphereで開発を行っていましたが、ウェブサイト構築の仕事をするようになり、8年間開発現場からは離れておりました。 今回、システム開発案件で上流を担当することとなり、忘れていた勘所を戻そうと勉強をしたいと考えていますが、オススメな良書はありませんでしょうか? 自分自身が開発する立場では無いとはいえ、設計や開発、DBチューニングやLinuxの知識など、幅広くもとめられますので、書籍の分野は幅広いですが、システム設計の知識を中心に、業務分析から設計に落とし込むあたりの本を中心にご紹介いただけると、ありがたいと考えております。 あえて言語や技術、環境をしぼるとすると、 Java+Oracle+Linux という感じでしょうか。 私自身の知識レベルは、浅いので新卒の学生に紹介する本のレベルでもかまいません。 皆様何卒、お知恵をお借りできたらと思います。よろしくお願い致します。

  • システム設計の入門書から実践レベルな本を探しています。

    現在独学でjavaのプログラミングの勉強をしているのですが、そろそろ システム設計の勉強も始めたいと考えています。 そこで、システム設計の入門や実践レベルの書籍、雑誌、 webサイト等でおすすめのものがありましたらご教授ください。 私は技術評論社さんから出版されている「はじめてのシステム設計」 という本を読みましたがもう少し設計の部分が詳しく、具体的なサンプル等が書かれているものがいいなと感じました。

  • AndroidアプリのXML送受信

    Androidのアプリとサーバー間でXMLを送受信するという処理を考えています。 http://blog.5ive.info/archives/1040 のsampleを参考にしたのですが、判らない事があります。 ------------------------------------------------------------------------------------------- 【以下、sampleを抜粋】 //[クライアント設定] HttpClient httpclient = new DefaultHttpClient(); HttpPost httppost = new HttpPost(url); //[POST送信するデータを格納] List<NameValuePair> nameValuePair = new ArrayList<NameValuePair>(1); nameValuePair.add(new BasicNameValuePair("name", "simo")); nameValuePair.add(new BasicNameValuePair("text", "hello!")); //-----[POST送信] httppost.setEntity(new UrlEncodedFormEntity(nameValuePair)); HttpResponse response = httpclient.execute(httppost); ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); response.getEntity().writeTo(byteArrayOutputStream); ------------------------------------------------------------------------------------------- 送信する際にList<NameValuePair>というListに格納していますが、NameとValueと2つのパラメータが必要で、XMLのデータのみの送信にNameは必要ありません。 単純にXMLのデータだけを送信したいのですが、httppostでデータを送信するにはList<NameValuePair>を使用するしかないのでしょうか? もし駄目なら、AndroidでXMLを送受信するにはどうしたら良いのでしょうか?

  • RJ45を使ったデータ送受信について

    情報処理試験(ネットワーク)の勉強をしています。 RJ45を使ったデータ送受信で分からないことがあるので質問いたします。 質問は2つあります。 1)RJ45は、送信用に2ピン、受信用に2ピンが割り当てられています。 送受信は、各1ピンだけでは通信できないのでしょうか? 2ピンを使う理由を教えて下さい。 2)ピンの割り当てが1、2、3、6のピン配置になっています。 なぜ4ではなく6になっているのでしょうか? 規格でそう決めたからそうなっている。ではなく出来れば理由が知りたいです。

  • システムの設計(外部設計、内部設計)って難しいので

    システムの設計(外部設計、内部設計)って難しいのでしょうか? SEという仕事に興味を持っていてネットや書籍で調べているのですが、よくPGとSEって求められる能力が違い SEは設計などをメインで行うという風に書かれていますが、 そもそも外部設計や内部設計というのはそんなにも難しいレベルの仕事なのでしょうか? 要件定義の工程は難しいのだろうと感じますが、設計の部分は一通りの作業方法がわかればPGの方でも設計できるのではないかと思ったりします。 入社10年目のSEと2年目のSEってどのようなところに差異があるのでしょうか? マネジメント能力やコミュニケーション能力とかなのでしょうか? 設計がものすごく上手?であったり早くできるといった能力は特にないのでしょうか?

専門家に質問してみよう