320 likes | 405 Views
講義日程予定. 第 1 回 「ガイダンス」 第 2 回 「ユビキタスシティ検討ワーキング中間とりまとめ」 第 3 回 「次世代ネットワーク技術:情報家電」 第 4 回 「次世代ネットワーク技術:ホームネットワーク」 第 5 回 「次世代ネットワーク技術:インターネット技術」 第 6 回 「次世代ネットワーク技術:次世代インターネット技術」 第 7 回 「次世代ネットワーク技術: アドホックネットワーク」 第 8 回 「次世代ネットワーク技術: P2P ネットワーク」 第 9 回 「センシング技術:センサネットワーク」
E N D
講義日程予定 • 第 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回 「サービスアーキテクチャ」 西尾 信彦 nishio@cs.ritsumei.ac.jp 立命館大学 情報理工学部
分散システム構成法 • 分散システムとは何か? • 例えば,サーバとクライアントによる通信 • プロセスの壁を越える • 仮想メモリ管理を越える • ホストの壁を越える • ネットワークを利用 • 分散システムをどう構築するか? • 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 Server/Remote Object Method Invocation with arguments Method Invocation with arguments Return Value Return Value Stub 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: import java.util.*; import java.rmi.*; import java.rmi.server.*; public class RemoteDictionaryImpl extends UnicastRemoteObject implements RemoteDictionary { private Hashtable dictionary; public RemoteDictionaryImpl() throws RemoteException { super(); dictionary = new Hashtable(); dictionary.put( "nishio", "Nobuhiko Nishio\nAssociate Professor\nUbiquitous Computing" ); dictionary.put( "mouri", "Koichi Mouri\nAsistant Professor\nContext-Aware Software" ); dictionary.put( "okubo", "Eiji Okubo\nProfessor\nOperating System" ); } public Object answer( Object key ) throws RemoteException { 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); return keys; } }
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 Server/Remote Object Look up reference Obtains Remote Reference Rebind Lookup() 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 Overview 1. Discovery 2. Join 3. Lookup 4. Service Invocation
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などによるグラウンディング • 通信路での解決 • 各種ゲートウェイの開発 • 仕様の拡大化