23
田田 田田 (@tanaka_733) 2011/04/09 1 Java 田田田田田田 Silverlight 田田田田田田 Silverlight 田 Tomcat 田 田田田田田田田田田田田

110409 silverlight square_lt_pub

  • Upload
    -

  • View
    900

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 110409 silverlight square_lt_pub

1

田中 孝佳 (@tanaka_733)

2011/04/09

Java プログラマがSilverlight を使ってみた

Silverlight と Tomcat のインターオペラビリティ

Page 2: 110409 silverlight square_lt_pub

2

自己紹介 ㈱ワークスアプリケーションズ所属

ERP パッケージの会社です 研究部門 クラウド担当

AWS を主に触る (jawsug コアメンバー ) Azure や Nifty も調査中 個人的には Azure も触りたい

業務では Java 、 Silverlight メイン 半分趣味で WP7 も

2011/04/09

Page 3: 110409 silverlight square_lt_pub

3

業務アプリのSilverlight 実用例 社内製のクラウド管理ツール Wc3 のフロン

2011/04/09

Page 4: 110409 silverlight square_lt_pub

4

Wc3 って? クラウドを使いやすくするツール

今のところ AWS にのみ対応 必要があればマルチクラウド対応も ベンダー提供の API を使って

スケジュール操作、グルーピングを行う 詳細に知りたい方は JAWS-UG での

発表資料をどうぞ http://www.slideshare.net/tanakata/aw

s-sdk-for-java-wc32011/04/09

Page 5: 110409 silverlight square_lt_pub

5

Wc3 を担当する前 ( 約 1 年前 )

Java メインのプログラマ

• サーバーサイドは得意• UI は Eclipse RCP 形式とか

HTML + Javascript+Servlet とか

.NET は ActiveDirectory 管理で触ったくらい

2011/04/09

Page 6: 110409 silverlight square_lt_pub

6

で、上司からこんなことを言われました

2011/04/09

クラウド管理ツールを担当してほしい

Page 7: 110409 silverlight square_lt_pub

7

で、感じたこと管理ツールは使い勝手がよくないと使ってもらえない

従って UI ・ UX が重要

Java の UI 作成は大変・クロスブラウザも大変

しかもかけられる工数は限られている

2011/04/09

Page 8: 110409 silverlight square_lt_pub

8

そうだ、 Silverlight にしようMVVM モデルの優位性

• 実は Eclipse プラグインも MVVM に近いモデル

.NET の優位性

• 第一級の event オブジェクト+ LINQ 、ラムダ式などの要素

Visual Studio の優位性

• 無償で使える強力な UI 開発ツール

2011/04/09

Page 9: 110409 silverlight square_lt_pub

9

サーバーサイドは都合により Java で・・・ 組織としてみれば、

サーバーサイドは Java の方が得意 こちらまで .NET にするのは抵抗があった

クライアントについてはほぼ Windows OS なので OK が出やすかった クロスブラウザ問題を容易に解決できる

2011/04/09

Page 10: 110409 silverlight square_lt_pub

10

サーバーサイド Java とSilverlight の組み合わせ方Silverlight バイナリの公開方法

• Servlet から見れば静的コンテンツとして公開

クライアント・サーバー間の通信方法

• 今回は広義な RESTful な API を採用• SOAP とかもあるけど、

実装容易性・軽量性を考慮して却下

2011/04/09

Page 11: 110409 silverlight square_lt_pub

11

( 参考 ) RESTful とは 厳格な RESTful は意外と面倒 今回使ったのは JSON over HTTP(S)

広義の RESTful URI に GET / POST して JSON を取得

リクエストごとに認証し、セッションや Cookie を持たない これは設計者の意向次第な面もある

2011/04/09

Page 12: 110409 silverlight square_lt_pub

12

こういう仕組みになります

2011/04/09

EC2社内

クライアント

Cloud Srevice endpoint

AP DB

Query

JDBC

WebJSON

over HTTP(S)xap

Page 13: 110409 silverlight square_lt_pub

13

Silverlight でのRESTful API の呼び出し方 WebClient or HttpWebRequest を利用

API は全て非同期です JSON オブジェクト変換は

DataContractJsonSerializer を利用 System.ServiceModel.Web を参照に追加

2011/04/09

Page 14: 110409 silverlight square_lt_pub

14

サンプルコード

2011/04/09

Page 15: 110409 silverlight square_lt_pub

15

はまったこと (1) DateTime 型の扱い

Java(java.util.Date) と Silverlight で異なる Java はミリ秒単位

Java側の JSON ライブラリが long値で返す 起点は 1970/1/1 00:00:00 GMT

Silverlight(.NET) はタイマー刻み 起点は A.D. 1/1/1 00:00:00

Silverlight側で吸収してみる

2011/04/09

Page 16: 110409 silverlight square_lt_pub

16

サンプルコード

2011/04/09

Page 17: 110409 silverlight square_lt_pub

17

サンプルコード

2011/04/09

Page 18: 110409 silverlight square_lt_pub

18

はまったこと (2)デバッグは? Java を Eclipse

Silverlight を VisualStudio で開発 Eclipse から AP サーバーをデバッグ起動 VisualStudio から IIS をデバッグ実行

xap を提供するだけのサーバー リクエストはローカルの AP に投げる

Eclipse側に clientaccesspolicy.xml を配備 ポートが違うとクロスドメインアクセスです

2011/04/09

Page 19: 110409 silverlight square_lt_pub

19

はまったこと (3)URL エンコード パラメーターを渡す場合に

URL エンコードが必要なことがある Silverlight(HttpUtility.UrlEncode)

ほげ %e3%81%bb%e3%81%92 Java(UrlEncoder.encode)

ほげ %E3%81%BB%E3%81%92

2011/04/09

16進表記の英字の大文字・小文字の違い

Page 20: 110409 silverlight square_lt_pub

20

RFC 的には大文字が推奨です RFC 3986 2.1節より 自前で実装するか、 System.Uri クラスの

EscapeDataString メソッドが使えます Encoding は UTF-8固定です

2011/04/09

Page 21: 110409 silverlight square_lt_pub

21

その他 DI するために Prism (Patterns &

Practices)使ってます http://compositewpf.codeplex.com/

UnitTest が充実していない こちらも情報ほしい

無償で使える範囲でがんばってます BlendSDK は導入してます Expression Blend は試用中

2011/04/09

Page 22: 110409 silverlight square_lt_pub

22

ということなどをブログに書いてます

http://dev.worksap.co.jp/Members/t_tanaka/2011/04/09

Page 23: 110409 silverlight square_lt_pub

232011/04/09

ご清聴ありがとうございました