Gleyzer両氏によって共同開発されました。2019で、同言語の発表を行いました。InfoQはPurdy氏に言語と、氏らが解決を目指した問題について聞きました。設計/アーキテクチャアジャイルマニュフェスト:ソフトウェアアーキテクトの視点ソフトウェアアーキテクトの役割と責任はアジャイルソフトウェア開発のためのマニフェストの価値と矛盾していると見えますが、優れたアーキテクトはアジャイル開発チームをサポートするテクニックを見つけています。Streamingは、ストリーミングデータのためのSQLライクなインターフェースを提供します。Streamsによって、Redisがストリーミングデータを複数のプロデューサとコンシューマの間で消費、保持、配信することができるようになります。ソフトウェア開発のマニフェストたゆまず息もつかずに市場に突進することで、会社を静かに消滅の崖っぷちへと追い込みます。それは設計してコードを書く方法を再考する時です。簡単さへの投資は、速さへの投資です。簡単さは知的財産の主鉱脈でもあります。競争上の優位性は、一度失ったら、もう一度手に入れることはほとんど不可能です。Buytaerts氏が過去10年間にわたって、企業がDevOps採用のハイプサイクルをくぐり抜け、変革に対する誤解を解消する過程を支援してきた経験について語ります。清一はじめに概要Silverlightを連携することに関心があるJavaコミュニティの人々に対するソリューションの一つとして、本稿では、それを始める手助けとなる有益な情報を提供します。MicrosoftのSilverlightは、次世代のメディアエクスペリエンスとWebのためのリッチでインタラクティブなアプリケーションを実現する手助けとなるように設計された、クロスブラウザ、クロスプラットフォーム、クロスデバイスのブラウザプラグインです。ここでは、インターオペラビリティのシナリオを含めて提供するために、Silverlightの背景を含んでいます。Silverlightの機能、Silverlightの開発コンセプト、Silverlightがリッチなインターネットとして良い位置につける方法、メディアが利用可能なことを通して、Silverlightのメリットと制限事項を含んだアーキテクチャとアプリケーションに"到達します"。SilverlightとJavaのインターオペラビリティのシナリオを3つについてとりあげます。Webサービス、RESTのWebサービス、シンジケーション(RSS)のフィードサービスについて概観します。Webサービスは、NetBeansで現在利用可能なツールを使用して作成します。各インターオペラビリティの概説には、デモコードと共に、インターオペラビリティのシナリオが最も使われるであろう部分に関するいくつくかの見解を含みます。注意点として、Silverlightはソケットや、より複雑であまり一般的ではないインターオペラビリティのシナリオでも機能します。それは将来の記事のテーマとする予定です。Studioを使用したJava-Silverlightインターオペラビリティにフォーカスします。WebサービスのインターオペラビリティRESTサービスのインターオペラビリティシンジケーション(RSS)サービスのインターオペラビリティ関連スポンサーコンテンツSilverlightは、ソケットや、より複雑であまり一般的ではないインターオペラビリティのシナリオでも機能しまが、それは本記事の対象外です。ゴールJavaコミュニティに基本的なSilverlight-Javaサービスのインターオペラビリティを実装するための選択肢を提供します。読者は、Silverlightが何であるか、それがどこで使われるかについて、適切な理解が得られます読者は、Silverlightの利点と制約を含む、そのアーキテクチャに関する基本的な理解が得られます読者は、前節の対象範囲で記した3つの基本的なサービスのインターオペラビリティのシナリオを利用したJavaサービスと、Silverlightクライアントが、どのようにして相互運用できるのかについての有用なガイダンスが得られますSilverlight概説MicrosoftのSilverlightは、次世代のメディアエクスペリエンスとWebのためのリッチでインタラクティブなアプリケーションを実現する手助けとなるように設計された、クロスブラウザ、クロスプラットフォーム、クロスデバイスのブラウザプラグインです。Silverlightは、リッチなインターネットアプリケーションがブラウザクライアントにインターネットを素早く展開するためのシナリオに「到達する」ことを目的としています。Silverlightは、Webページの内容がそのホストと接続し、ユーザーと深く関わり、あらゆるブラウザでの表示を可能とするために設計されています。Silverlightの利用シナリオです(リンク)。ユーザーインターフェース設計とロジックの関心事を分離することにより、アプリケーション開発のライフサイクル(ADLC)生産性が改善しています。Studio(リンク)を使用することにより、ユーザーインターフェースのデザイナと開発者が、今ある技術をより有効に活用して協業することができます。(XAML)(リンク)は、フロー制御をサポートした宣言型のXMLベースの言語で、ユーザーインターフェース設計に使用されます。IronPythonといった.NET言語は、ユーザーインターフェースの裏でロジックを組むために使用されます。Foundation(WPF)とSilverlightは、共にXAMLを使用します。Silverlightランライムは、Silverlightアーキテクチャの基盤です。MBのダウンロードが一度必要となります。zip形式の「.xap」ファイルは、Silverlightアプリケーションのデプロイパッケージです。「.xap」パッケージには、アプリケーションと実行のためのSilverlightプラグインコントロールへのエントリポイントが含まれます。.NETで開発します。ビルドがあるたびに、Silverlightではクライアントの「.xap」ファイルが更新されます。Silverlightアプリケーション(「.xap」ファイルパッケージ)は、あらゆるWebサーバーにデプロイ可能です。Webブラウザサンドボックス内のSilverlightSilverlightコントロールは、HTMLページ内に含まれます。言い換えれば、Webブラウザのサンドボックス内に含まれるということです。Silverlight位置づけの説明、Silverlightのデプロイメントとパッケージングに関する概説があります。Silverlightの実行のために、クライアントマシンへの.NETのインストールが不要であるという点に注意することは重要です。Silverlightアプリケーションを実行するために必要なもの全ては、Silverlightブラウザプラグインの中に含まれています。ベータ2でおこないます。ベータ2の機能(リンク)は、以下のとおりです。ベータ2での優れたWebサービスのバックグラウンドを提供しています。現時点では、WS-IベーシックプロファイルをこえたWS-*をサポートしていません。Scriptと.NETのランタイムコードの両方が、イベントとメソッド呼び出しによってSilverlightプラグインと通信します。Silverlightコントロールは、HTMLページとJavaScriptを通したそのコンテンツとやりとりすることができます。2)」(リンク)では、SilverlightオブジェクトモデルのWebページ(DOMオブジェクトモデル)の中での適合について説明しています。(Page.xaml)の中でおこなわれます。Silverlightのプラグインは、ユーザーインターフェースでXAMLを表現します。Silverlightのイベントモデル(リンク)は非同期です。非同期モデルは、効果的にSilverlightを使うために採用されるべきものです。(UI)スレッドがあり、UIスレッドがブロックされると、ブラウザ全体が反応しなくなるかもしれません。バックグラウンドのスレッドは、ネットワーク呼び出しやUIスレッドをブロックするかもしれない別のコードすべてを実行することができます。セキュリティ認証Silverlightはブラウザープラグインなので、ブラウザーによって提供されるセキュリティに依存します。大部分の認証のケースは、HTTPSとベーシック認証と連動しています。(SSL)プロトコルで、認証と通信のセキュリティを提供します。HTTPSを利用することで、トランスポート層を通してなりすましや機密情報の漏えいの脅威を軽減しなければなりません(サービスのアクセスに関するセキュリティ上の留意点(リンク))。メッセージ本体(たとえばSOAPヘッダ)、に認証情報を埋め込むといった、メッセージ内の認証が代替の認証アプローチです。対応は、Silverlightの将来のリリース機能として検討されています。URLのアクセス制限Silverlightは、URLを3つの種類のアクセスに制限することによって、ネットワークの脅威を防ぎます。それは、スキーム間URL、ドメイン間URL、ゾーン間URLの3つです。ベータ2では、HTTPとHTTPSのURIスキームをサポートしています。RTMではHTTPのスキーム間サポートがフルサポートされる予定です。ServiceReference.ClientConfigファイルにあります。mode要素のHTTPSの方には「Transport」が、HTTPの方には「None」が設定されています。modeの設定Silverlightと.NETフレームワークSilverlightのための.NETフレームワーク(リンク)の名前空間は、.NETフレームワーク名前空間のサブセットです。これらの名前空間の内包によって、Silverlightのランタイムに含まれているサイズについてのコストに対して、与えらたすべての.NETアセンブリの効用の均衡を保ちます。Notation(JSON)フォーマットの両方をサポートします。JSONデータをシリアル化および逆シリアル化する(リンク))ブラウザ制限Silverlightは、クロスブラウザーのプラグインです。Silverlightをサポートしているブラウザーの全ての機能に依存し、制限されています。DELETEのHTTPメソッドをサポートしない時点で、SilverlightもPUTとDELETEのHTTPメソッドをサポートしません。言い換えれば、実際には多くの制限が「広範なブラウザのサポート」に依存していて、明確なSilverlightの制限ではありません。その他のブラウザの制限には、以下を含みます。:ドメイン間のケースだけで発生する制限。カスタムのGETヘッダーがドメイン間のリクエストに対して作成することができない。Content-Type以外のレスポンスヘッダを読むことができない。サービスインターオペラビリティのシナリオサービスインターオペラビリティのシナリオは、「現実世界」の実装で動いているさまざまなシナリオをどのように示すかという、単純な「証明のポイント」です。ページへ行ってください。2008(リンク)で開発をします。WebサーバーのドキュメントルートディレクトリにSilverlightの「clientaccesspolicy.xml」ファイルをおきます。(オプションです)ドメイン間の脅威を防ぐために、オプションのポリシーファイルで許可されている他ドメインのホストサービスを除いて、イメージやメディアといったすべてのリクエストに対する通信は、自ドメイン内の通信のみが許可されています。そのオプションのファイルとは、次の2つです。ファイルで、サービスの細かなアクセス許可に使用されます。Adobeの‘crossdomain.xml’です。HTTP標準のレスポンスコードが返されます。Heur氏は、クロスドメインのサービスについて、以下で詳細な説明をしています。SOAPアクションヘッダー(リンク)のどちらかを許可することで、SOAPを明確に有効にする必要があるという点に注意することが重要です。記述することで可能となります。することで可能となります。Silverlightのポリシーファイル形式の記述は、以下で得られます。ドメインの境界を越えてサービスを利用できるようにする(リンク)にあります。本稿でのこのサービスのシナリオのすべてにおいて、clientaccesspolicy.xml、あるいはcrossdomain.xmlを、ドメインルートに置く必要がある点に注意してください。Fielding氏(リンク)により、2000年の彼の博士論文(リンク)で初めて登場した考えです。その単純さと親しみやすさから、人気が高まりつつあります。Webは、RESTアーキテクチャです。RESTは、以下の原則に基づきます。:全てのリソースがリソース識別子を持つ表現(方法)が標準であるリソースが複数の表現を持つコネクタはリソースのアクセスや転送の動作をカプセル化する(コネクタの種類は、クライアント、サーバー、キャッシュ、リゾルバ、トンネル)RESTのインタラクションはステートレスであるRESTの単純さと親しみやすさは、その人気の高まりの一因となっています。RESTの単純な考え方は、次のとおりです。リソースの状態が、URIの操作によって変化します。「純粋なREST」イデオロギーは、次の考えを含みます。すべてがアドレスとリソースとして表現されます。リソースの操作に必要なのは、create、read、update、deleteの4つのオペレーションのみです。「RESTへのHTTPのマッピング」の部分(多くの人々のRESTの見方)については、「純粋なREST」と同じです。アドレスがURIで、4つのオペレーションがHTTPメソッドのGET、PUT、POST、DELETEとなります。POXサービスが「純粋なREST」アーキテクチャに従わないとき、このアプローチは時々「低級なREST」と呼ばれます。4つの標準のオペレーションの代わりに、複数のカスタムオペレーションがあるかもしれません。あるカスタムオペレーションは、オペレーションに対する特定のHTTPメソッドの利用というよりは、POSTのHTTPメソッドのURLパラメータです。RESTは、開発と維持が容易ですが、メッセージセキュリティ、トランザクション、ルーティング、メッセージングを扱いません。Webサービスでは、メッセージセキュリティ、トランザクション、ルーティング、メッセージングを扱いません。SOAPプロキシを生成するのと同じ方法で、RESTプロキシを自動的に生成することはできません。(CRUD)オペレーションで動作します。HTTPメソッドSilverlightは、GETとPOSTのHTTPメソッドのみをサポートします。一部のファイアウォールでは、PUTとDELETEのHTTPメソッドの使用を制限します。本当のRESTサービスは、GETとPOSTのHTTPメソッドの使用のみで(上記のRESTの原則すべてに合致したものを)作ることができるという点に注目することは重要です。言い換えれば、RESTアーキテクチャはHTTPへの特定のマッピングを必要としません。X-Http-Method-Override(リンク)ヘッダーは、このアプローチの例です。overrideを、ヘッダーにセットします。(AJAX)を使用することです。JavaScriptイベントのXMLHttpRequestの使用により、HTMLのブリッジを通して適切なタイミングで、正しいHTTPメソッドを送信することができます。コードの対話(リンク)ではこれを成し遂げる方法を示しています。このテクニックは、HTMLページ、「.xap」、サービスエンドポイントすべてが同一ドメインにあるときのみ機能します。RESTスキーマ定義、WADLとXSDRESTの一つの制限は、スキーマが知られていなくて、変わるかもしれないということです。RESTサービスを確認するための契約が無いということです。RESTfulなWebサービスを明確にサポートするためのWSDLに代わるものです。WADLは、まだ広く採用されていません。RESTサービスに与えられたあらゆるリソースに対する「契約」として利用されるかもしれません。JavaのRESTサポート多くのツール、フレームワーク、IDEがRESTfulサービスの開発をサポートしています。IDEは、以下のものが完全に統合されています。エンティティからのRESTサービスの自動生成。Webサービスについて(リンク))。IDEもRESTサービスの開発をサポートしています(STPによるEclipseのRESTサポート(リンク))。APIでは、現在、PUT、DELETEのHTTPメソッドをサポートしています。311を追っているオープンソースの参照実装です。.NETのRESTサポートSilverlightでは、以下についてRESTをサポートしています。UploadStringAsync(POST)メソッドを使用する)と、HttpWebRequestクラス(より複雑な使用で、少し進んだシナリオを可能とします)。単純で簡単なWebClientクラスが、このシナリオで使用されました。先に述べたHTMLブリッジの使用。JavaScriptとXMLHTTPオブジェクト、あるいはAJAXツールキットのどちらかによるAJAX。リクエストURIを作成するためのテクニックは様々です。(System.Xml.Linq)を使用します。(System.Json)を使用します。LINQの技術は、高速でアドホックな利用を可能にします。RSS/Atomボディとの連携は、以降を参照してください。RESTのインターオペラビリティアーキテクチャこのRESTシナリオは、現在のJavaのREST実装がどのようにSilverlightと連携するのか、そして、その特定のインターオペラビリティのシナリオに対する制限は何であるかを明らかにしています。Webサービス」を作成するための機能が同梱されています。NetBeansで作成した単純なRESTサービスは、データベースのテーブル(リソース)にアクセスします。そのテーブルDiscountCodesは、DiscountCodeの文字列カラムとRateの整数値カラムを持っています。DiscountCodeテーブルRESTアクションの概要このシナリオで使用されるHTTPメソッド(RESTアクション)の概要です。URIによる「GET」(DownloadStringCompleted)の呼び出しをおこないます。GETによる全てのdiscountCodeそのXMLは、レスポンスが何であるかを正確に知るために表示されます。/A/を指定することで得られます。URIからのレスポンスを見ることによって、リソースのスキーマを推測することができます。http://localhost:8081/resouces/discountCodes今、新たに得られた/A/リソースをコピーすることで新しいリソースが追加され、POSTのテキストボックスに新たに/D/リソースを作成します。URIに/D/を追加し、GETボタンを押下することで、リソースが追加されたことを確認してください。/D/WebClientは、Get_Xml_ClickとPost_ClickイベントでJavaサービスと通信します。簡潔にするために例外処理が省略されていることに注意してください。Page.xaml.cs「Get_Click」イベントでは、リクエストでgetUriテキストボックスの内容を送信します。レスポンスのXMLはTextBox_GETテキストボックスに設定されます。「Post_Click」イベントでは、リクエストはpostUriテキストボックスの内容を送信します。レスポンスのXMLはTextBox_POSTテキストボックスに設定されます。Page.xamlSilverlightでは、PUTとDELETEのHTTPメソッドが共に利用できないので、今回のREST実装でも更新と削除リソースがありません。それをサポートしていることを確認してください)。>何故RESTが失敗するのか(リンク)という記事では、多くのブラウザがPUTとDELETEのHTTPメソッドをサポートしていないことで、ブラウザでのRESTの採用を制限しているという問題について対処しています。軽量なパブリッシュ/サブスクライブ標準で、一般的にはブログのようなコンテンツにサブスクライブするためのものです。デファクトスタンダードとなっています。標準プロセスを通じて、Atomフィードが何であるか、それがどのように解析できるのかをITEFのRFC(リンク)で述べています。大部分のシンジケートサイトは、両方のフォーマットをサポートしています。Silverlightは、シンジケーション用にSystem.ServiceModel.Syndication.dllアセンブリがあります。(Silverlightの配信(リンク))。Itemと共にこのフレームワークの中に含まれます。(LINQ)(リンク)を使用することで、フィードエレメントのパースがとても扱いやすいものとなります。このシナリオは、クライアントが更新されたフィードコンテンツを見るために、クライアントが非同期にRSSサービスフィードにアクセスするための「ポーリング」のシナリオです。単純なJavaのRSSフィードが、フィードURIを通してSilverlightクライアントによってアクセスされます。シンジケーションのインターオペラビリティアーキテクチャ結果がXMLなので、Silverlightコントロールでフィードの結果を表示するには3行のコードだけあれば十分です。入れられSyndicationFeedにロードされます。SyndicationFeedは、XAMLのitemsListコントロールにバインドします。簡潔にするために例外処理が省略されていることに注意してください。データバインディングとSyndicationFeedクラス(リンク)があります。)(リンク)によって定義されています)。SOAPは、メッセージをHTTP/HTTPSで扱うXMLベースのプロトコルです。Webサービスの基礎を成しています。Webサービスが既にあるなら、そのWebサービスに対するプロキシを作ることは簡単です。Studioで利用します。一つ注意しなければならないのは、Webサービスでの複合データ型の利用は、特にJavaと.NETのインターオペラビリティのシナリオでは問題がある可能性があるということです。Webサービスのデータ型を.NETがサポートしているデータ型(リンク)に対応付けなければなりません。Webサービスのデバッグでも、問題がある可能性があります。Helper(リンク)のツールが、Webサービスのデバッグには有効となるでしょう。ベーシックプロファイルを超えたWS-*のサポートをしていません。「しかし、必要なプロトコルを手で実装することでこれらのプロトコルを使うサービスを利用することは、まだ可能です」(SOAPサービスへのアクセス(リンク))。1.1は、サポートしています。クライアントに例外を投げても、発生した失敗に関する情報が明確ではないという点に注意してください。Foundation)のクライアント側の技術をサポートしています。それは特定のインターオペラビリティの制限を前提としてSOAPサービスを利用することができます。利用するサービスはWCFのサービスで、Javaのサービスだけでなく、ASP.NETのWebサービス(“.asmx”)もあります。Webサービス機能詳説(リンク)があります。SOAPを使用したJava-Silverlightインターオペラビリティの主要な関心事は、プロキシをコンパイルするのか、どのようなデータ型があって、Webサービスでのシリアライズの問題はどうか、といったことです。設定ServiceReference.ClientConfigの設定は、Silverlightコントロールの再コンパイルすることなく、バインディングやアドレスの変更が可能です。Silverlightによってサポートされるプロトコルを使うように自動的に設定されます。SOAP1.1を利用し、WS-Iベーシックプロファイル1.1に従うバインディングです。「SOAPサービスへのアクセス(リンク)」を参照してください。ASMX「サービス参照を追加する」で、アドレスに基づくサービス参照に対するASMXプロキシを作成します。以下のように指定します。faultを受けとることはサポートしていません。サービスがfaultを返すとき、クライアントに例外が投げられます。faultの発生に関する情報は何も明記されません。WebサービスのインターオペラビリティアーキテクチャNetBeansでの単純なWebサービスのエンドポイントには、findAllとfindがあります。簡潔にするために例外処理が省略されていることに注意してください。Studioでのプロキシは、JavaのSoap2Serviceエンドポイントを参照します。Soap2Serviceのプロキシ参照Webサービスは、リクエストパラメータのパスを呼び、Webサービスのレスポンスを受け取ります。Webサービスのレスポンス(String)は、XAMLにバインドします。XAMLは、Silverlightコントロールによってユーザインタフェースに表示します。'B'プロキシオブジェクトは、バインディングとエンドポイントを持ちます。イベントを使用します。findAllレスポンスは、XAMLのfindAllResponseテキストボックスに表示されます。簡潔にするために例外処理が省略されていることに注意してください。Page.xamlプロキシの設定情報は、ServiceReferences.ClientConfigにあります。ServiceReferences.ClientConfig設定ファイルは、複数のエンドポイントの設定をサポートしています。ServiceReferences.ClientConfig設定ファイルを変更するときに、Silverlightアプリケーションを再ビルドする必要はありません。ServiceReferences.ClientConfigまとめSilverlight/Javaのインターオペラビリティの話題は、発展しつづけています。Webサービス、RESTサービス、シンジケーションフィードサービスのインターオペラビリティがSilverlightで機能します。Webサービスには、WS-Iの基本的レベルのサポートだけを見ても、潜在的なデータシリアライズの問題があります。それは本質的により複雑なものです。StudioのSilverlightクライアントでプロキシが首尾よく作成されれば、それらはすぐに実装できます。RESTサービスを開発するときに、旧式、あるいは不正確なドキュメントに頼らなければならないかもしれません。GETとPOSTのHTTPメソッドのみを使用した既存のRESTful実装は、Silverlightでベストに機能します。Webサービスは、CRUDサービスによりよく合います。シンジケーションサービスは、ほとんど制限のない実装では単純です。開発者はどんなインターオペラビリティのスタイルを選んでも結構です。自身の特有の開発とデプロイシナリオに最もふさわしいものを選択してください。理解するための基本概念は、Silverlightがブラウザのコンテキスト内で動作するということです。開発、デプロイするだけでなく、ブラウザプラットフォームで実行するすべてのアプリケーションにおいて重要な留意点です。ブラウザで動作するとき、その最小公倍数は、しばしばブラウザ制限を定義するためのベンチマークとなります。RTMでサポートされる予定です。SP1でサポートされる予定です(DataContractSerializer)。毎週火曜日に前週のまとめコンテンツがお送りいたします。25万人ものシニアデベロッパーのコミュニティーにぜひご参加ください。サンプルを見るあなたのメールアドレスはこちら国を選んでください。プライバシーポリシーに従って私の個人情報を扱うことに同意します。登録するとさまざまなことができます。アカウント登録をしてInfoQをお楽しみください。あなたの意見をお聞かせください。毎週火曜日に前週のまとめコンテンツがお送りいたします。25万人ものシニアデベロッパーのコミュニティーにぜひご参加ください。サンプルを見る様々なイノベーターとアーリーアダプターがお送りするテクノロジーの概要を見る。自分がまだ知らないことに気づいていないと知るあなたが興味のあるトピックスをいつでも最新な情報に。あなたのメールアドレスはこちら国を選んでください。プライバシーポリシーに従って私の個人情報を扱うことに同意します。よい世界へ私たちが暮らす世界を大切に思い、よりよいものにしたいと考えています。人のためのソフトウェア開発を加速し私たちのミッションを実現することで、この思いを成し遂げようとしています。私たちは利益の1%をさまざまな慈善団体に寄付しています。会社として、また従業員��して、そうしたことの価値を強く信じているからです。with.プライバシーBTあなたのプロファイルは最新ですか?プロフィールを確認してアップデートしてください。アドレス*Eメールを変更すると確認のメールが配信されます。会社名:現在の会社名をご入力ください。Other組織規模:現在の組織規模をご入力ください。2,501+国:現在の国を設定してください。Zimbabwe都道府県:現在の都道府県に設定してください。次の都道府県にアップデートする:ニュースレターを購読しますか?インダストリーメールを購読しますか?本Eメールに登録すると、以前より関心のあったトピックの関連情報をお送りする場合がございます。詳細はこちらのプライバシーポリシーをご覧ください。newsletter?新しいメールアドレスに確認用のメールを送信します。このポップアップ画面は自動的に閉じられます。