講義日程予定 • • • • • • • • • • • • • • • 第 1 回 「ガイダンス」 第 2 回 「ユビキタスシティ検討ワーキング中間とりまとめ」 第 3 回 「次世代ネットワーク技術:情報家電」 第 4 回 「次世代ネットワーク技術:ホームネットワーク」 第 5 回 「次世代ネットワーク技術:インターネット技術」 第 6 回 「次世代ネットワーク技術:次世代インターネット技術」 第 7 回 「次世代ネットワーク技術: アドホックネットワーク」 第 8 回 「次世代ネットワーク技術: P2Pネットワーク」 第 9 回 「センシング技術:センサネットワーク」 第10回 「富士通のユビキタス事業紹介」 第11回 「センシング技術:RFIDと測位技術」 第12回 「サービスアーキテクチャ:基盤ソフトウェア技術」 第13回 「内田洋行のユビキタス事業紹介」 第14回 「サービスアーキテクチャ:プライバシとセキュリティ」 第15回 「期末定期試験」 期末試験用課題 1 • 家庭内でまだネットワークにつながっていな い家電に適切なホームネットワークを適用し た情報家電を各自考案し800字程度で以下 について述べよ. – それを用いた機能,利用例について以下を明確 にして述べよ • なぜそのような情報家電を考案したのか • ネットワーク接続手法をどう選択したのか – 供給した企業の販売後の戦略について考察せよ • 普及後に展開できるサービスは何か • 他のネットワーク機器との連携は • 保守,アップデートは 期末試験用課題 2 • 次世代ネットワーク技術として,IPv6,P2P ネットワーク,アドホックネットワーク,センサ ネットワークの中から一つ選択して800字程度 で, – その技術について説明し, – 応用例を述べよ. – またその技術を企業がビジネス化する可能性に ついて述べよ. 期末試験用課題3 • 測位システムの利用には,測位精度,設備の 容易さ(イニシャルとランニングコスト,設定の 手間など),プライバシー確保の容易さ,といっ た導入基準がある.Cambridge大学の ActiveBatシステムとGPSを上記の項目に照ら して比較し,利害得失を800字程度で論じなさ い. 期末試験用課題4 • Java言語にはRMIという遠隔メソッド呼出し の機構があるが, – この機構について400字程度で説明し, – それを用いたサービスアーキテクチャを実例をあ げて400字程度で説明しなさい. 2006年度前期 情報システム構成論2 第12回 「サービスアーキテクチャ」 西尾 信彦 [email protected] 立命館大学 情報理工学部 分散システム構成法 • 分散システムとは何か? – 例えば,サーバとクライアントによる通信 – プロセスの壁を越える • 仮想メモリ管理を越える – ホストの壁を越える • ネットワークを利用 • 分散システムをどう構築するか? – OSとライブラリでネットワーク利用 • ソケットプログラミング • プログラミング言語がネットワークを隠す – RPC: Remote Procedure Call – プログラマにとっては関数呼び出し – 呼び出された関数は別ホストで稼動 RPC: 遠隔手続き呼出し • Sun MicrosystemsのSunRPCが有名 • UNIXにおける初期のかな漢字変換システム であるJserverなどがRPCによって実装され ていた. – かなの文字列を引数にかな漢字変換用の関数 (RPC)を呼出すと漢字変換されて戻ってくる RPC: 遠隔手続き呼出し • RPC呼び出し側 – 引数を用意して関数呼び出し – 呼出し先と引数をまとめてリモートホストに送る – 返信を待つ – 返信を受けて,返り値を取り出し,スタックに戻す – 呼出しもとにリターン RPC: 遠隔手続き呼出し • RPC呼出され側 – ネットワーク越しの要求を待つ – 届いた要求パケットから呼出され先を特定 – 引数をスタックに取り出し,コール – RPC本体が動いて,返り値がスタックにつまれる – 返り値をまとめて,呼出し側に送信 – また要求待ちに戻る RPC: 遠隔手続き呼出し • プログラマの手間 – クラアント,サーバ双方に余計なインタフェース部 分が必要 – これらをスタブ(切り株)と呼ぶ – スタブを手で書いたら楽にならない – スタブ自動生成のためのスタブジェネレータがあ る – スタブジェネレータに渡すRPCの仕様を記述する インタフェース記述言語IDLが必要 – 適切なスタブを静的もしくは動的にリンク • 動的にやるなら相手先を見つけるサーバが必要 RMI: 遠隔メソッド呼出し • オブジェクト指向プログラミング言語における RPCのこと • 別プロセスに位置するオブジェクトのメソッド を呼出す • リモートオブジェクト,値呼出し/参照呼出し • JavaではJavaRMIというクラスが実装されて いる. なぜ皆がJavaを使うのか? • 新しいプログラミング言語である • 成長中の言語である • いま重要な要素が入っている – オブジェクト指向 – アーキテクチャ中立 – セキュリティ – ネットワーク • 開発環境が近代的に充実している – Eclipse… – UML関連 Java Remote Method Invocation • • • • • • • • • • Object-oriented Mobile behavior Design Patterns Safe and Secure Easy to Write/Easy to Use Connects to Existing/Legacy Systems Write Once, Run Anywhere Distributed Garbage Collection Parallel Computing The Java Distributed Computing Solution Stub and Skeleton Client Object Method Invocation with arguments Return Value Stub Server/Remote Object Method Invocation with arguments Return Value Skeleton Designing Interface RemoteDictionary.java: import java.rmi.*; public interface RemoteDictionary extends Remote { Object answer( Object key ) throws RemoteException; Object[] keys() throws RemoteException; } Implement Remote Object RemoteDictionaryImpl.java: public Object answer( Object key ) throws RemoteException { import java.util.*; import java.rmi.*; import java.rmi.server.*; public class RemoteDictionaryImpl extends UnicastRemoteObject implements RemoteDictionary { private Hashtable dictionary; return dictionary.get( key.toString() ); } public Object[] keys() throws RemoteException { Enumeration enum = dictionary.keys(); Vector vector = new Vector(); while( enum.hasMoreElements() ) vector.addElement( enum.nextElement() ); Object[] keys = new Object[ vector.size() ]; for( int i=0; i<vector.size(); i++ ) keys[i] = vector.elementAt(i); public RemoteDictionaryImpl() throws RemoteException { super(); dictionary = new Hashtable(); dictionary.put( "nishio", "Nobuhiko Nishio\nAssociate Professor\nUbiquitous Computing" ); return keys; dictionary.put( "mouri", } "Koichi Mouri\nAsistant Professor\nContext-Aware } Software" ); dictionary.put( "okubo", "Eiji Okubo\nProfessor\nOperating System" ); } Building Server DictionaryServer.java: import java.rmi.*; public class DictionaryServer { public static void main( String argv[] ) { System.setSecurityManager( new RMISecurityManager() ); try { RemoteDictionaryImpl object = new RemoteDictionaryImpl(); Naming.rebind( "rmi:///RemoteDictionaryServer", object ); System.out.println( "Remote Dictionary Service Starts." ); } catch( Exception e ) { System.err.println( "Error:" + e.getMessage() ); System.exit(-1); } } } Rebind and Look up Client Object Obtains Remote Reference Look up reference Lookup() Server/Remote Object Rebind Registry Building Client SingleLineClient.java: import java.rmi.*; public class SingleLineClient { public static void main( String argv[] ) { try { RemoteDictionary dictionary = (RemoteDictionary)Naming.lookup( "rmi://" + argv[0] + "/" + "RemoteDictionaryServer" ); Object value = dictionary.answer( argv[1] ); if( value != null ) System.out.println( value.toString() ); } catch( Exception e ) { System.err.println( "Error:" + e.getMessage() ); System.exit(-1); } } } Procedure for Execution • • • • • • Compile Java sources Compile RMI-related files Prepare Security Policy Launch RMI Registry Program Launch Server Program Execute Client Program Policy: grant { permission java.security.AllPermission; }; Jini • JavaRMIをベースとしたサービスアーキテク チャの一つ • Sun Microsystemsが開発 • クライアントオブジェクトがルックアップサーバ を経由して,リモート(サーバ)オブジェクトのプ ロクシーを獲得し,それ経由でサービスを受 ける. Jini Characters Jini Overview 1. Discovery 3. Lookup 2. Join 4. Service Invocation Lookup Service: registrar Client Lookup Proxy Proxy vs Service:サイズの問題 • Thin proxy and fat service. – RMI implementation • Fat proxy and non service • Half and half approach – Other implementations than RMI リモートサービスの課題 • どのようにサービスを発見するか – ディスカバリ機構 – AppleのBonjourなど • そのサービスが何をするのか – サービス記述 • メソッド呼出しにおけるセマンティクス – 値呼出しか参照呼出しか – 参照呼出しをいかに実現するか • 最初のスタブをいかに入手するか – 新たに参加したサービスのインタフェースをどう知るか? セキュリティの確保 • 適切な人が適切なサービスを実行する • 利用時のユーザのログイン認証 – パスワード,RFID(ICOCA),バイオメトリクス • ケイバビリティの生成 – 偽造できない許可証 • One-timeパスワードつき • Man-in-the-middle攻撃対策 – 有効期限つき • 通信路の暗号化 – IPSecやVPN • どこまでやるのかも問題 – やりすぎたら使いものにならない 異種サービス間連携の問題 • 世の中には多くのサービスアーキテクチャが – Jini,UPnP,DLNA,SOAP • 通信路も多種多様 – Bluetooth,PLC,携帯電話公衆回線,WiFi – WiMAX,UWB,3.5G/4G • 個人認証も多様 – 次世代型RFID,生体認証 – ではあるが,統一されるのはもっと恐しい 異種サービス間連携の問題(続き) • サービスアーキテクチャでの解決 – サービスのXMLを利用した記述 • オブジェクトの直列化(object serialization) • RPC/RMI自体をXMLで記述する – セマンティックウェブ技術の発達 • WSDL,RDF,OWL/Sなどによるグラウンディング • 通信路での解決 – 各種ゲートウェイの開発 – 仕様の拡大化
© Copyright 2024 ExpyDoc