ライカ マイクロシステムズ(株)における Webベース業務システムの開発

Slides:



Advertisements
Similar presentations
プラグイン作成講座 Control System Studio 3.0 Takashi Nakamoto
Advertisements

All Rights Reserved Copyright © 2004, Takashi Kobayashi 1 ロバストネス分析の演習問題 <問題1> 次の文をよんで問いに答えよ。 顧客は、 ATM により自分の口座から預金を払い出す。 顧客は、 ATM にキャッシュカードを挿入し、個人認証を行う。
Internet Explorer 障害解析 最初の一歩 - IE のトラブルを理解する -. 概要 Internet Explorer を使用中に発生するトラブルの 種類と、調査のための切り分け方法を紹介します! (以降は IE と略称で表記します) よくあるお問い合わせ Web ページの表示が白画面のまま完了しない.
データベースの基礎知識 ACEESS の基本操作. データベースの基礎知識 データベース  特定のテーマや目的に毎のデータの集合体 データベースソフトウェア  データベースを作成、管理するソフトウェアの総 称 Oracle(Oracle) IBM(DB2) Microsoft(SQL Server)
Oracle Application Express アーキテクチャ. © 2009 Oracle Corporation アーキテクチャ概要 データベース 9iR2 、 10g 、 11g 、 XE 内に統合 メタデータ駆動型 APEX リスナー、組込みゲートウェイ、または ModPLSQL を使用.
生産管理システム TCC 開発事例 ・業種 製造業 ( 機 械 ) ・分野 生産管理. Step by Tomorrow システム概要 工場の受注から生産、在庫、製造、原価を一括管理で きる統合生産管理システムです。 その他の機能として、社内業務を支援する機能として タイムシート、掲示板、新着情報、行動予定表などの.
1 安全性の高いセッション管理方 式 の Servlet への導入 東京工業大学 理学部 千葉研究室所属 99-2270-6 松沼 正浩.
本プレゼンテーション ( 以下、本書 ) で提供されている情報は、本書が 発表された時点における Microsoft の見解を述べたものです。市場 ニーズの変化に対応する必要があるため、本書は記載された内容の実 現に関する Microsoft の確約とはみなされないものとします。また本 書に記載された情報の正確さについて、保証するものではありません。
1 会社名: 氏名: 日付: 会社名: 氏名: 日付:. 2 内容 企業のセキュリティ対策状況 ユーザー管理の重要性 ユーザー管理製品 市場状況 Active Directory とは Active Directory 利用に最低限必要な準備 ユーザー管理のご提案内容 最初の取り組み:ユーザー情報の統合管理.
Web アプリをユーザー毎に カスタマイズ可能にする AOP フレームワーク
Curlの特徴.
IIS 4.0で開発をするコツ Webアプリケーション構築.
情報基礎A 情報科学研究科 徳山 豪.
DB(データベース)のおはなし 作成者:小野正広 DBと言っても、  ドラゴンボール ではないですぞ! 3/1/2017.
最新ファイルの提供を保証する代理FTPサーバの開発
EDC(Electronic Data Capturing) システムの紹介
Webサービスに関する基本用語 Masatoshi Ohishi / NAOJ & Sokendai
.NET テクノロジー を利用した SAP ソリューションの拡張 (3階層化) (評価環境構築ガイド)
Internet Navigware オフライン版 ご紹介 ~ Internet Navigware Personal V7.0 ~
SAP システムにおける SQL Server 運用ノウハウ
SaaS (Software as a Service)
Web-EDI方式 シナリオ1 [実験番号] : 実験タイトル 1 :標準類の評価
IGD Working Committee Update
マルチプラットフォーム対応 P2Pファイル共有ソフトの開発
分散コンピューティング環境上の Webリンク収集システムの実装
マルチプラットフォーム対応 P2Pファイル共有ソフトの開発
Digital Network And Communication
電子社会設計論 第11回 Electronic social design theory
「絵葉書を通じてのハルビンの 街の印象調査」システムUIの iPadアプリ化 谷研究室  飯 祐貴.
Microsoft Office Project 2007
Microsoft Office InfoPath 2003 概要
Digital Network And Communication
複数のコンピュータ(ノード)を一群にまとめて、信頼性や処理性能の向上を実現するシステム
Microsoft .NET 入門 Silverlight のための 福井コンピュータ株式会社 小島 富治雄
CHAPTER1 UMLとオブジェクト指向の基本概念(2)
Z39.50プロトコルを用いた 検索クライアントの開発
Delphi Day ~Delphi 概要、および新バージョンのご紹介~
Enterprise CALS Systemの開発
インターネット活用法 ~ブラウザ編~ 09016 上野喬.
バイナリ形式コンポーネントの 収集・解析・検索システムの開発
(B2) 親: minami, kazuki 多様な認証機器に対応する 認証システム (B2) 親: minami, kazuki.
SAP & SQL Server テクニカルアーキテクチャ概要 マイクロソフト株式会社 SAP/Microsoft コンピテンスセンター
mySAP CRM を支える Microsoft テクノロジー概説
Windows Phone 7.5 の データ アクセスとクラウド連携
マイクロソフト株式会社 SAP/Microsoft コンピテンスセンター
2004年度 サマースクール in 稚内 JavaによるWebアプリケーション入門
2003年度 データベース論 安藤 友晴.
概要 Boxed Economy Simulation Platform(BESP)とその基本構造 BESPの設計・実装におけるポイント!
SOAP/UDDI/WSDLによるB2Bシステムの開発
Office IME 2010 を使う.
ユーザ毎にカスタマイズ可能な Webアプリケーションの 効率の良い実装方法
データベースアクセス技術 ADO.NET 2.0 開発者カテゴリ ◆NOTES◆
Microsoft BizTalk Server & SAP PP モジュール 連携検証レポート概要
ゲーム開発モデルの基礎.
COM コンポーネント・オブジェクト・モデル.
e-PILON 利用登録申請書 社名 役職 利用者の 責任者氏名 裏面記載の規約内容を承諾の上、e-PILONの利用を申し込みます
Webプロキシ HTTP1.0 ヒント CS-B3 ネットワークプログラミング  &情報科学科実験I.
日本郵便 「Web-EDI」利用ガイド (JP EDIシステム)
データベース設計 第7回 実用データベースの運用例 クライアント=サーバシステム(1)
サーバ・クライアントシステム ( X Window System) 2006/01/20 伊藤 和也 original: 前坂たけし
JSFによるWebアプリケーション開発 第3回
情報共有による Z39.50データベース選択支援環境
生産工程管理支援システム -検索Webサービスの実行自動化-
Webアプリケーションと JSPの基本 ソフトウェア特論 第4回.
@MD-NET Web-EDI導入について ~ 説明会資料 ~
「拝啓、さかもとと申します」 2008年6月28日 わんくま同盟 勉強会初参戦。 ※最重要 -質問はご遠慮願います-
ユビキタスコンピューティングの ための ハンドオーバー機能付きRMIの実装
「拝啓、さかもとと申します」 2008年6月28日 わんくま同盟 勉強会初参戦。 ※最重要 -質問はご遠慮願います-
ベイジアンネットワークと クラスタリング手法を用いたWeb障害検知システムの開発
GluonJ を用いたビジネスロジックからのデータベースアクセスの分離
Presentation transcript:

ライカ マイクロシステムズ(株)における Webベース業務システムの開発 Sep. 7, 1999 Takashi Tahara

Agenda 会社概要 開発のきっかけ 新システムの概要 なぜ、その技術や製品を採用したのか Webベース システムの開発について まとめ

会社概要 欧米のトップメーカー(ライツ、ウイルド、ケンブリッジ等)の合併により設立された世界的な企業グループ 研究用顕微鏡をはじめ最先端技術をライカ ブランドとして全世界に供給 販売サービス・ネットワークは、欧米・日本をはじめ100カ国以上をカバー

開発のきっかけ

業務フロー 営業業務 ロジスティクス業務 顧客/代理店 営業 (サービス含む) ロジスティクス BU 仕入先 倉庫 案件入力 サービス受付 引合 サービス依頼 見積依頼 貸出依頼 発注 商品受取 案件入力 営業活動の 状況の入力 サービス受付 サービス状況登録 保守部品発注依頼 見積 案件情報を基 に見積書作成 営業 (サービス含む) デモ機貸出 在庫照会 貸出申請 受注受付 見積内容確定 リリース 発注 受注情報を基に 国内外仕入先へ発注 在庫管理 入庫管理 返品管理等 出荷指示 受注情報を基に 出荷指示書作成 ロジスティクス BU 仕入先 出荷 入庫 入庫結果の 入力 出荷 出荷状況の 照会・入力 倉庫

現状の問題点 手作業とAS400の混在 データが一元管理されていない アーキテクチャの陳腐化 Y2K

新システムの開発を決定 問題点を解決するためにアーキテクチャの試験を行った後、新システムの開発を決定 しかし、多くのSIベンダーがDelphi + DCOMでの開発に難色を示した 有限会社フュージョンが参加することで、新システムの開発がスタートできた

新システムの概要

システムの目標 データの一元管理 営業プロセスとモノの流れを把握 一元管理されたデータを戦略に利用 外回り営業のノートパソコンからの操作 TCOの削減

システム構成 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経由

なぜ、その技術や製品を採用したのか

新システムで採用した技術と製品 3層C/S Webベース InternetExplorer + ActiveXコントロール DCOM Delphi

3層C/S 2層C/Sの問題点 3層C/Sのメリット FATクライアント ビジネスロジックが共有できない スケーラビリティに欠ける Thinクライアント ビジネスロジックを共有できる スケーラビリティがある

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を共有できる ○スケーラビリティがある

Webベース 2層C/Sの問題点 Webベースのメリット 動作するために様々なソフトウェアが必要 ソフトウェアの配布に手間がかかる ソフトウェアの配布が簡単

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 ○ビジネスロジックなどは 配布する必要がない

Internet Explorer + ActiveXコントロール HTMLの問題点 UIの操作性が悪い フォーム送受信によるパフォーマンスの低下 生産性があまりよくない Internet Explorer+ActiveXコントロール Windowsアプリケーション同様の操作性 必要なデータのみを送受信できるためパフォーマンスが良い 使いなれた開発ツールを利用できる

Internet Explorer + ActiveXコントロール: HTML: Web Server Client ダウンロード,データの送信 (HTTP) ×データ送受信のパフォー マンスが悪い Browser HTML ×生産性が悪い ×操作性が悪い ○プラットフォームに依存しない Web Server Internet Explorer + ActiveXコントロール: Client ダウンロード(HTTP) Application Server データの送信(DCOM) IE ActiveX ○パフォーマンスが良い ○操作性が良い ×プラットフォームに依存する ○生産性が良い

DCOM ソケット通信, VisiBroker, MIDAS DCOMのメリット ソケット通信: スレッド管理やマーシャリングなどの部分に多くの実装が必要 VisiBroker: 現状では、Delphiとの親和性に疑問がある MIDAS: ビジネスロジックを実装しにくい DCOMのメリット ビジネスロジックを実装するだけで良い スレッドの管理やマーシャリングなどインフラ部分はDCOMに実装されている

Delphi 開発したプログラムの「抜群の安定性」 コンポーネントによる「抜群の生産性」 コンポーネントのソースがあるため、不具合の原因を完全に追求できる ランタイムの配布が不要 DCOMとDelphiを理解している開発者がいた もしいなければ、Delphiを採用しなかった

採用した技術および製品のまとめ 3層C/SとWebベースのいいとこどり プログラムの抜群の安定性 プログラムの抜群の生産性 Thinクライアント スケーラビリティ UIの操作性が良い プログラムの抜群の安定性 Delphiで開発したプログラムの抜群の安定性 プログラムの抜群の生産性 C/Sで使いなれたDelphiを利用できる コンポーネント

3層C/SとWebベースのいいとこどり: 3層C/Sの長所 Webの長所 Delphiの長所 Client Web Server Application Server Database Server Client 3層C/Sの長所 Thinクライアント ビジネスロジックの共有 操作性が良い スケーラビリティ Webの長所 Thinクライアント ソフトウェアの配布が簡単 Delphiの長所 抜群の安定性 抜群の生産性

Webベース システムの開発について

プログラムの構成 ユーザーインターフェースを表示 Client Internet Explorer Web Server Application Server Database Server ActiveForm ダウンロード (HTTP) IIS 4.0 ユーザーインターフェースを表示 メソッドの呼び出し (DCOM) COMオブジェクト Oracle 8.05 SQL文 SQL文 (Net8) BDE, Net8

2層C/Sと3層C/Sでの開発の相違点 クライアントとサーバーの処理の振り分け サーバーをCOMオブジェクトとして実装 クライアントをActiveXコントロールとして実装 2層C/S:Windowsアプリケーション クライアントとサーバーをDCOMで接続 2層C/S:BDEとDBミドルウェア

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と異なる部分

サーバーとクライアント間のI/Oを決める クライアントとサーバーの処理の振り分け サーバー ビジネスロジック データベースに関連する処理 クライアント UIに関連する処理 日付の形式などUIに関連するチェックはクライアントに実装する サーバーとクライアント間のI/Oを決める オブジェクト、メソッド、パラメータ メソッドの呼び出し回数を極力少なくする どちらでエラーチェックをするかなど一貫したルールを決めること

COM(Component Object Model)とは? 米マイクロソフト社が策定したオブジェクト間通信規約 DCOMとは、COMをネットワーク経由で呼び出せるように拡張したもの COM規約に従って実装することで、通信部分を意識する必要がなくなる ビジネスロジックだけを実装すればよい

COMオブジェクトの実装(1) TRemoteDataModuleコンポーネント ここにビジネスロジックを実装する Single Instance or Multiple Instance 別プロセスへの分割が必須でなければMultiple Instance アパートメントスレッドモデル or フリースレッドモデル 複数並列実行が必須でなければアパートメントスレッドモデル アパートメントスレッドモデル + Multiple Instanceで作成するのが一般的

TRemoteDataModuleの作成: Single Instance or Multiple Instance アパートメントスレッドモデル or フリースレッドモデル TRemoteDataModuleにビジネスロジックを実装: クラスおよびメソッドを宣言 ビジネスロジックを実装

アパートメントスレッドモデルとフリースレッドモデル: アパートメントスレッドモデル: 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

COMオブジェクトの実装(2) DBアクセスの注意点 フリースレッドモデルでのマルチスレッド アクセス SQL文を明示的に発行する スレッドごとにBDEセッションが必要 TRemoteDataModuleにTSessionとTDatabaseを配置し、TSession.AutoSessionName:=Trueに設定 SQL文を明示的に発行する BDEやコンポーネントの挙動に悩まされないようにするため ※2層C/Sでも同じ

DCOMでの接続 TDCOMConnectionとTSimpleObjectBrokerで接続 配布を単純にするためにレイトバインディングを採用 プロキシ/スタブDLL、タイプライブラリを配布・登録しないで済む この方法のデメリット パラメータの型はOLEオートメーション互換型に制限される COMオブジェクトの指定は、ProgIDではなく、CLSID(GUID)でしか指定できない TDCOMConnectionをローカルレジストリを参照しないように修正する必要がある

アーリーバインディングでは、クライアントに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

汎用レコードクラス クライアント/サーバー間でのレコードセットの受渡しに利用 各プログラムで個別に構造体やクラスを定義する必要がなくなる 汎用レコードクラスのマーシャリング OLEオートメーション互換型パラメータに渡すために、バイト配列のバリアントにマーシャリングが必要 TComponentクラスの機能を利用

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;

COMオブジェクト ラッパー COMオブジェクトをカプセル化 普通のクラスと同様に利用できる 接続先情報(マシン名、CLSID) 汎用レコードクラスのマーシャリングを隠蔽 普通のクラスと同様に利用できる COMオブジェクト ラッパー利用者は、COMオブジェクトを意識する必要が無い データキャッシングやモバイルの不安定な通信回線への対処にも応用できる

プログラム Application Server Client COMオブジェクト COMオブジェクト への接続情報 レコードオブジェクト メソッド 呼び出し DCOM プログラム レコードオブジェクト のマーシャリング COMオブジェクトの面倒な部分をカプセル化 普通のObject Pascalのクラスと同様に扱える

クライアントデータセットの利用 サーバーから受け取ったデータの保存先として利用 ActiveForm上のDBGridへの表示・編集などに利用 格納 データコントロール コンポーネント ClientDataSet 汎用レコード オブジェクト

ActiveFormへのUIの実装 C/Sと同じテクニックが利用できる 複数のフォームを切り替える方法 顧客一覧検索など共通に使用する画面はDLLに実装して共有することも可能 .infでDLLの転送先を指定すること 例:destdir=11 # system32に転送 ActiveForm間の呼び出しは難しい ActiveXコントロールの切り分けに注意が必要

DCOMの注意点 オブジェクトの実体を渡すことができない マーシャリングコードが静的リンクできない セキュリティーが難解 リスト オブジェクトなどの内容は配列や構造体にしないと渡せない 独自の例外クラスが定義できないため、例外で伝播できる情報が少なすぎる マーシャリングコードが静的リンクできない レイトバインディングにするか、プロキシ/スタブDLLやタイプライブラリの配布・登録が必要 セキュリティーが難解 VisiBrokerに比べ見劣りする

まとめ

まとめ 3層C/S + Webベースにすることで、2層C/Sのさまざまな問題点を解決できる 各技術や製品のメリット/デメリットを見極めてから採用すること 技術に振り回されないように注意 Delphi 様々な技術を簡単かつ制限なく利用できる 開発したプログラムの抜群の安定性 コンポーネントによる抜群の生産性

ライカ マイクロシステムズ(株)における Webベース業務システムの開発 Sep. 7, 1999 Takashi Tahara