110409 silverlight square_lt_pub
TRANSCRIPT
![Page 1: 110409 silverlight square_lt_pub](https://reader036.vdocuments.mx/reader036/viewer/2022062406/55878cadd8b42a505d8b45ba/html5/thumbnails/1.jpg)
1
田中 孝佳 (@tanaka_733)
2011/04/09
Java プログラマがSilverlight を使ってみた
Silverlight と Tomcat のインターオペラビリティ
![Page 2: 110409 silverlight square_lt_pub](https://reader036.vdocuments.mx/reader036/viewer/2022062406/55878cadd8b42a505d8b45ba/html5/thumbnails/2.jpg)
2
自己紹介 ㈱ワークスアプリケーションズ所属
ERP パッケージの会社です 研究部門 クラウド担当
AWS を主に触る (jawsug コアメンバー ) Azure や Nifty も調査中 個人的には Azure も触りたい
業務では Java 、 Silverlight メイン 半分趣味で WP7 も
2011/04/09
![Page 3: 110409 silverlight square_lt_pub](https://reader036.vdocuments.mx/reader036/viewer/2022062406/55878cadd8b42a505d8b45ba/html5/thumbnails/3.jpg)
3
業務アプリのSilverlight 実用例 社内製のクラウド管理ツール Wc3 のフロン
ト
2011/04/09
![Page 4: 110409 silverlight square_lt_pub](https://reader036.vdocuments.mx/reader036/viewer/2022062406/55878cadd8b42a505d8b45ba/html5/thumbnails/4.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062406/55878cadd8b42a505d8b45ba/html5/thumbnails/5.jpg)
5
Wc3 を担当する前 ( 約 1 年前 )
Java メインのプログラマ
• サーバーサイドは得意• UI は Eclipse RCP 形式とか
HTML + Javascript+Servlet とか
.NET は ActiveDirectory 管理で触ったくらい
2011/04/09
![Page 6: 110409 silverlight square_lt_pub](https://reader036.vdocuments.mx/reader036/viewer/2022062406/55878cadd8b42a505d8b45ba/html5/thumbnails/6.jpg)
6
で、上司からこんなことを言われました
2011/04/09
クラウド管理ツールを担当してほしい
![Page 7: 110409 silverlight square_lt_pub](https://reader036.vdocuments.mx/reader036/viewer/2022062406/55878cadd8b42a505d8b45ba/html5/thumbnails/7.jpg)
7
で、感じたこと管理ツールは使い勝手がよくないと使ってもらえない
従って UI ・ UX が重要
Java の UI 作成は大変・クロスブラウザも大変
しかもかけられる工数は限られている
2011/04/09
![Page 8: 110409 silverlight square_lt_pub](https://reader036.vdocuments.mx/reader036/viewer/2022062406/55878cadd8b42a505d8b45ba/html5/thumbnails/8.jpg)
8
そうだ、 Silverlight にしようMVVM モデルの優位性
• 実は Eclipse プラグインも MVVM に近いモデル
.NET の優位性
• 第一級の event オブジェクト+ LINQ 、ラムダ式などの要素
Visual Studio の優位性
• 無償で使える強力な UI 開発ツール
2011/04/09
![Page 9: 110409 silverlight square_lt_pub](https://reader036.vdocuments.mx/reader036/viewer/2022062406/55878cadd8b42a505d8b45ba/html5/thumbnails/9.jpg)
9
サーバーサイドは都合により Java で・・・ 組織としてみれば、
サーバーサイドは Java の方が得意 こちらまで .NET にするのは抵抗があった
クライアントについてはほぼ Windows OS なので OK が出やすかった クロスブラウザ問題を容易に解決できる
2011/04/09
![Page 10: 110409 silverlight square_lt_pub](https://reader036.vdocuments.mx/reader036/viewer/2022062406/55878cadd8b42a505d8b45ba/html5/thumbnails/10.jpg)
10
サーバーサイド Java とSilverlight の組み合わせ方Silverlight バイナリの公開方法
• Servlet から見れば静的コンテンツとして公開
クライアント・サーバー間の通信方法
• 今回は広義な RESTful な API を採用• SOAP とかもあるけど、
実装容易性・軽量性を考慮して却下
2011/04/09
![Page 11: 110409 silverlight square_lt_pub](https://reader036.vdocuments.mx/reader036/viewer/2022062406/55878cadd8b42a505d8b45ba/html5/thumbnails/11.jpg)
11
( 参考 ) RESTful とは 厳格な RESTful は意外と面倒 今回使ったのは JSON over HTTP(S)
広義の RESTful URI に GET / POST して JSON を取得
リクエストごとに認証し、セッションや Cookie を持たない これは設計者の意向次第な面もある
2011/04/09
![Page 12: 110409 silverlight square_lt_pub](https://reader036.vdocuments.mx/reader036/viewer/2022062406/55878cadd8b42a505d8b45ba/html5/thumbnails/12.jpg)
12
こういう仕組みになります
2011/04/09
EC2社内
クライアント
Cloud Srevice endpoint
AP DB
Query
JDBC
WebJSON
over HTTP(S)xap
![Page 13: 110409 silverlight square_lt_pub](https://reader036.vdocuments.mx/reader036/viewer/2022062406/55878cadd8b42a505d8b45ba/html5/thumbnails/13.jpg)
13
Silverlight でのRESTful API の呼び出し方 WebClient or HttpWebRequest を利用
API は全て非同期です JSON オブジェクト変換は
DataContractJsonSerializer を利用 System.ServiceModel.Web を参照に追加
2011/04/09
![Page 14: 110409 silverlight square_lt_pub](https://reader036.vdocuments.mx/reader036/viewer/2022062406/55878cadd8b42a505d8b45ba/html5/thumbnails/14.jpg)
14
サンプルコード
2011/04/09
![Page 15: 110409 silverlight square_lt_pub](https://reader036.vdocuments.mx/reader036/viewer/2022062406/55878cadd8b42a505d8b45ba/html5/thumbnails/15.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062406/55878cadd8b42a505d8b45ba/html5/thumbnails/16.jpg)
16
サンプルコード
2011/04/09
![Page 17: 110409 silverlight square_lt_pub](https://reader036.vdocuments.mx/reader036/viewer/2022062406/55878cadd8b42a505d8b45ba/html5/thumbnails/17.jpg)
17
サンプルコード
2011/04/09
![Page 18: 110409 silverlight square_lt_pub](https://reader036.vdocuments.mx/reader036/viewer/2022062406/55878cadd8b42a505d8b45ba/html5/thumbnails/18.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062406/55878cadd8b42a505d8b45ba/html5/thumbnails/19.jpg)
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](https://reader036.vdocuments.mx/reader036/viewer/2022062406/55878cadd8b42a505d8b45ba/html5/thumbnails/20.jpg)
20
RFC 的には大文字が推奨です RFC 3986 2.1節より 自前で実装するか、 System.Uri クラスの
EscapeDataString メソッドが使えます Encoding は UTF-8固定です
2011/04/09
![Page 21: 110409 silverlight square_lt_pub](https://reader036.vdocuments.mx/reader036/viewer/2022062406/55878cadd8b42a505d8b45ba/html5/thumbnails/21.jpg)
21
その他 DI するために Prism (Patterns &
Practices)使ってます http://compositewpf.codeplex.com/
UnitTest が充実していない こちらも情報ほしい
無償で使える範囲でがんばってます BlendSDK は導入してます Expression Blend は試用中
2011/04/09
![Page 22: 110409 silverlight square_lt_pub](https://reader036.vdocuments.mx/reader036/viewer/2022062406/55878cadd8b42a505d8b45ba/html5/thumbnails/22.jpg)
22
ということなどをブログに書いてます
http://dev.worksap.co.jp/Members/t_tanaka/2011/04/09
![Page 23: 110409 silverlight square_lt_pub](https://reader036.vdocuments.mx/reader036/viewer/2022062406/55878cadd8b42a505d8b45ba/html5/thumbnails/23.jpg)
232011/04/09
ご清聴ありがとうございました