Download presentation
Presentation is loading. Please wait.
1
ライカ マイクロシステムズ(株)における Webベース業務システムの開発
Sep. 7, 1999 Takashi Tahara
2
Agenda 会社概要 開発のきっかけ 新システムの概要 なぜ、その技術や製品を採用したのか Webベース システムの開発について まとめ
3
会社概要 欧米のトップメーカー(ライツ、ウイルド、ケンブリッジ等)の合併により設立された世界的な企業グループ
研究用顕微鏡をはじめ最先端技術をライカ ブランドとして全世界に供給 販売サービス・ネットワークは、欧米・日本をはじめ100カ国以上をカバー
4
開発のきっかけ
5
業務フロー 営業業務 ロジスティクス業務 顧客/代理店 営業 (サービス含む) ロジスティクス BU 仕入先 倉庫 案件入力 サービス受付
引合 サービス依頼 見積依頼 貸出依頼 発注 商品受取 案件入力 営業活動の 状況の入力 サービス受付 サービス状況登録 保守部品発注依頼 見積 案件情報を基 に見積書作成 営業 (サービス含む) デモ機貸出 在庫照会 貸出申請 受注受付 見積内容確定 リリース 発注 受注情報を基に 国内外仕入先へ発注 在庫管理 入庫管理 返品管理等 出荷指示 受注情報を基に 出荷指示書作成 ロジスティクス BU 仕入先 出荷 入庫 入庫結果の 入力 出荷 出荷状況の 照会・入力 倉庫
6
現状の問題点 手作業とAS400の混在 データが一元管理されていない アーキテクチャの陳腐化 Y2K
7
新システムの開発を決定 問題点を解決するためにアーキテクチャの試験を行った後、新システムの開発を決定
しかし、多くのSIベンダーがDelphi + DCOMでの開発に難色を示した 有限会社フュージョンが参加することで、新システムの開発がスタートできた
8
新システムの概要
9
システムの目標 データの一元管理 営業プロセスとモノの流れを把握 一元管理されたデータを戦略に利用 外回り営業のノートパソコンからの操作
TCOの削減
10
システム構成 Client (社内) Windows98/NT Internet Explorer Application Server
Web Server WindowsNT4.0EE IIS4.0 COM Object BDE, Net8 Database Server WindowsNT4.0EE Oracle8.05 HTTP DCOM Net8 Note PC (営業) Windows98/NT Internet Explorer HTTP DCOM ※RAS経由
11
なぜ、その技術や製品を採用したのか
12
新システムで採用した技術と製品 3層C/S Webベース InternetExplorer + ActiveXコントロール DCOM
Delphi
13
3層C/S 2層C/Sの問題点 3層C/Sのメリット FATクライアント ビジネスロジックが共有できない スケーラビリティに欠ける
Thinクライアント ビジネスロジックを共有できる スケーラビリティがある
14
2層C/S: 3層C/S: Database Server Client UI BL Application Server
SQL文 (Network) UI BL DBMW ×クライアント台数の増 加により飽和しやすい ×FATクライアント ×BLが共有できない 3層C/S: ○SQLに比べ頻度が 低いためトラフィック が低い Application Server Database Server Client メソッド呼び出し (Network) SQL文 (Network) UI BL DBMW ○Thinクライアント ○BLを共有できる ○スケーラビリティがある
15
Webベース 2層C/Sの問題点 Webベースのメリット 動作するために様々なソフトウェアが必要 ソフトウェアの配布に手間がかかる
ソフトウェアの配布が簡単
16
2層C/S: Webベース: Client UI BL Web Server Client UI Application Server IE
×動作に必要なソフトウェアが多い ×ソフトウェアの配布に手間が掛かる UI BL DBMW Web Server Webベース: ○配布が簡単 Client UI ダウンロード Application Server IE メソッド呼び出し ○Webブラウザだけでよい BL DBMW ○ビジネスロジックなどは 配布する必要がない
17
Internet Explorer + ActiveXコントロール
HTMLの問題点 UIの操作性が悪い フォーム送受信によるパフォーマンスの低下 生産性があまりよくない Internet Explorer+ActiveXコントロール Windowsアプリケーション同様の操作性 必要なデータのみを送受信できるためパフォーマンスが良い 使いなれた開発ツールを利用できる
18
Internet Explorer + ActiveXコントロール:
HTML: Web Server Client ダウンロード,データの送信 (HTTP) ×データ送受信のパフォー マンスが悪い Browser HTML ×生産性が悪い ×操作性が悪い ○プラットフォームに依存しない Web Server Internet Explorer + ActiveXコントロール: Client ダウンロード(HTTP) Application Server データの送信(DCOM) IE ActiveX ○パフォーマンスが良い ○操作性が良い ×プラットフォームに依存する ○生産性が良い
19
DCOM ソケット通信, VisiBroker, MIDAS DCOMのメリット
ソケット通信: スレッド管理やマーシャリングなどの部分に多くの実装が必要 VisiBroker: 現状では、Delphiとの親和性に疑問がある MIDAS: ビジネスロジックを実装しにくい DCOMのメリット ビジネスロジックを実装するだけで良い スレッドの管理やマーシャリングなどインフラ部分はDCOMに実装されている
20
Delphi 開発したプログラムの「抜群の安定性」 コンポーネントによる「抜群の生産性」
コンポーネントのソースがあるため、不具合の原因を完全に追求できる ランタイムの配布が不要 DCOMとDelphiを理解している開発者がいた もしいなければ、Delphiを採用しなかった
21
採用した技術および製品のまとめ 3層C/SとWebベースのいいとこどり プログラムの抜群の安定性 プログラムの抜群の生産性
Thinクライアント スケーラビリティ UIの操作性が良い プログラムの抜群の安定性 Delphiで開発したプログラムの抜群の安定性 プログラムの抜群の生産性 C/Sで使いなれたDelphiを利用できる コンポーネント
22
3層C/SとWebベースのいいとこどり: 3層C/Sの長所 Webの長所 Delphiの長所 Client Web Server
Application Server Database Server Client 3層C/Sの長所 Thinクライアント ビジネスロジックの共有 操作性が良い スケーラビリティ Webの長所 Thinクライアント ソフトウェアの配布が簡単 Delphiの長所 抜群の安定性 抜群の生産性
23
Webベース システムの開発について
24
プログラムの構成 ユーザーインターフェースを表示 Client Internet Explorer Web Server
Application Server Database Server ActiveForm ダウンロード (HTTP) IIS 4.0 ユーザーインターフェースを表示 メソッドの呼び出し (DCOM) COMオブジェクト Oracle 8.05 SQL文 SQL文 (Net8) BDE, Net8
25
2層C/Sと3層C/Sでの開発の相違点 クライアントとサーバーの処理の振り分け サーバーをCOMオブジェクトとして実装
クライアントをActiveXコントロールとして実装 2層C/S:Windowsアプリケーション クライアントとサーバーをDCOMで接続 2層C/S:BDEとDBミドルウェア
26
2層C/S: 3層C/S: Database Server Client UI BL Database Server Client
Windowsアプリケーション UI メソッド呼び出し BL DBMW SQL文 Database 3層C/S: Database Server Client Application Server ActiveXコントロール UI COM オブジェクト BL メソッド呼び出し (DCOM) DBMW SQL文 Database 凡例 2層C/Sと異なる部分
27
サーバーとクライアント間のI/Oを決める
クライアントとサーバーの処理の振り分け サーバー ビジネスロジック データベースに関連する処理 クライアント UIに関連する処理 日付の形式などUIに関連するチェックはクライアントに実装する サーバーとクライアント間のI/Oを決める オブジェクト、メソッド、パラメータ メソッドの呼び出し回数を極力少なくする どちらでエラーチェックをするかなど一貫したルールを決めること
28
COM(Component Object Model)とは?
米マイクロソフト社が策定したオブジェクト間通信規約 DCOMとは、COMをネットワーク経由で呼び出せるように拡張したもの COM規約に従って実装することで、通信部分を意識する必要がなくなる ビジネスロジックだけを実装すればよい
29
COMオブジェクトの実装(1) TRemoteDataModuleコンポーネント
ここにビジネスロジックを実装する Single Instance or Multiple Instance 別プロセスへの分割が必須でなければMultiple Instance アパートメントスレッドモデル or フリースレッドモデル 複数並列実行が必須でなければアパートメントスレッドモデル アパートメントスレッドモデル + Multiple Instanceで作成するのが一般的
30
TRemoteDataModuleの作成:
Single Instance or Multiple Instance アパートメントスレッドモデル or フリースレッドモデル TRemoteDataModuleにビジネスロジックを実装: クラスおよびメソッドを宣言 ビジネスロジックを実装
31
アパートメントスレッドモデルとフリースレッドモデル:
アパートメントスレッドモデル: 1アパートメントに1スレッド フリースレッドモデル: アパートメントに複数のスレッド STA (Single Thread Apartment) MTA (Multi Thread Apartment) スレッド COM Object COM Object COM Object スレッド COM Object COM Object COM Object スレッド STA (Single Thread Apartment) COM Object COM Object スレッド COM Object COM Object COM Object スレッド Single Instance と Multiple Instance: Single Instance: COMクライアント毎にプロセスを作成 Multiple Instance: 1プロセスに複数のCOMオブジェクト COM Server Process COM Server Process COMクライアント COMクライアント COM Object COM Object COMクライアント COM Server Process COM Object COMクライアント COM Object COMクライアント COM Object COM Server Process COMクライアント COM Object
32
COMオブジェクトの実装(2) DBアクセスの注意点 フリースレッドモデルでのマルチスレッド アクセス SQL文を明示的に発行する
スレッドごとにBDEセッションが必要 TRemoteDataModuleにTSessionとTDatabaseを配置し、TSession.AutoSessionName:=Trueに設定 SQL文を明示的に発行する BDEやコンポーネントの挙動に悩まされないようにするため ※2層C/Sでも同じ
33
DCOMでの接続 TDCOMConnectionとTSimpleObjectBrokerで接続
配布を単純にするためにレイトバインディングを採用 プロキシ/スタブDLL、タイプライブラリを配布・登録しないで済む この方法のデメリット パラメータの型はOLEオートメーション互換型に制限される COMオブジェクトの指定は、ProgIDではなく、CLSID(GUID)でしか指定できない TDCOMConnectionをローカルレジストリを参照しないように修正する必要がある
34
アーリーバインディングでは、クライアントにCOMサーバー情報の配布・登録が必要:
Application Server Client COM Object サーバー名の取得 DCOMで接続 サーバー名の取得 DCOMで接続 COM Object TDCOMConnection: COMオブジェクトへの接続 ServerGUIDプロパティでCLSIDを指定 TSimpleObjectBroker: サーバー名の一元管理 アーリーバインディングでは、クライアントにCOMサーバー情報の配布・登録が必要: Client Client アーリーバインディング レイトバインディング UI(ActiveX) UI(ActiveX) COMサーバーの タイプライブラリ COMサーバーの プロキシ/スタブDLL
35
汎用レコードクラス クライアント/サーバー間でのレコードセットの受渡しに利用 各プログラムで個別に構造体やクラスを定義する必要がなくなる
汎用レコードクラスのマーシャリング OLEオートメーション互換型パラメータに渡すために、バイト配列のバリアントにマーシャリングが必要 TComponentクラスの機能を利用
36
Application Server Client
レイトバインディングのため バリアント型への マーシャリングが必要 ClientDataSet など 格納 汎用レコード オブジェクト アンパック バリアント型 パック 汎用レコード オブジェクト 格納 結果セット ClientDataSet など 格納 汎用レコード オブジェクト パック バリアント型 アンパック 汎用レコード オブジェクト 更新 Database { コンポーネントをバリアント型にパックする } function ComponentToVariant( Instance: TComponent ): OleVariant; var Stream: TMemoryStream; P: Pointer; begin Result := Unassigned; Stream := TMemoryStream.Create; try Stream.WriteComponent( Instance ); Stream.Position := 0; Result := VarArrayCreate( [0,Stream.Size], varByte ); P := VarArrayLock(Result); Stream.Read( P^, Stream.Size ); finally VarArrayUnlock(Result); end; Stream.Free; { バリアント型からコンポーネントにアンパックする } function VariantToComponent( AValue: OleVariant ): TComponent; var Stream: TMemoryStream; P: Pointer; begin Stream := TMemoryStream.Create; try Stream.Size := VarArrayHighBound(AValue, 1); P := VarArrayLock(AValue); Stream.Write(P^, Stream.Size); finally VarArrayUnlock(AValue); end; Stream.Position := 0; Result := Stream.ReadComponent( nil ); Stream.Free;
37
COMオブジェクト ラッパー COMオブジェクトをカプセル化 普通のクラスと同様に利用できる
接続先情報(マシン名、CLSID) 汎用レコードクラスのマーシャリングを隠蔽 普通のクラスと同様に利用できる COMオブジェクト ラッパー利用者は、COMオブジェクトを意識する必要が無い データキャッシングやモバイルの不安定な通信回線への対処にも応用できる
38
プログラム Application Server Client COMオブジェクト COMオブジェクト への接続情報 レコードオブジェクト
メソッド 呼び出し DCOM プログラム レコードオブジェクト のマーシャリング COMオブジェクトの面倒な部分をカプセル化 普通のObject Pascalのクラスと同様に扱える
39
クライアントデータセットの利用 サーバーから受け取ったデータの保存先として利用 ActiveForm上のDBGridへの表示・編集などに利用
格納 データコントロール コンポーネント ClientDataSet 汎用レコード オブジェクト
40
ActiveFormへのUIの実装 C/Sと同じテクニックが利用できる 複数のフォームを切り替える方法
顧客一覧検索など共通に使用する画面はDLLに実装して共有することも可能 .infでDLLの転送先を指定すること 例:destdir=11 # system32に転送 ActiveForm間の呼び出しは難しい ActiveXコントロールの切り分けに注意が必要
41
DCOMの注意点 オブジェクトの実体を渡すことができない マーシャリングコードが静的リンクできない セキュリティーが難解
リスト オブジェクトなどの内容は配列や構造体にしないと渡せない 独自の例外クラスが定義できないため、例外で伝播できる情報が少なすぎる マーシャリングコードが静的リンクできない レイトバインディングにするか、プロキシ/スタブDLLやタイプライブラリの配布・登録が必要 セキュリティーが難解 VisiBrokerに比べ見劣りする
42
まとめ
43
まとめ 3層C/S + Webベースにすることで、2層C/Sのさまざまな問題点を解決できる
各技術や製品のメリット/デメリットを見極めてから採用すること 技術に振り回されないように注意 Delphi 様々な技術を簡単かつ制限なく利用できる 開発したプログラムの抜群の安定性 コンポーネントによる抜群の生産性
44
ライカ マイクロシステムズ(株)における Webベース業務システムの開発
Sep. 7, 1999 Takashi Tahara
Similar presentations
© 2024 slidesplayer.net Inc.
All rights reserved.