問題タブ [finagle]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Netty を使用した Java での Finagle thrift クライアント サーバーの実装
Finagle のホームページ "http://twitter.github.com/finagle/" を調べていました。Finagale を使用して、thrift を使用して netty の Java 実装を作成できると書かれています。同じ例を探してみましたが、見つかりませんでした。すべての例は scala です。誰かがそのJava実装へのポインタを私に提供できますか?
ありがとう
soa - RPCシステムとエンタープライズサービスバスの違い
TwitterのFinagleのようなRPCシステムとMuleのようなエンタープライズサービスバスの違いは何ですか?それぞれがどのような問題を解決するのが得意ですか?
scala - Scala を使用した HTTP メッセージング ゲートウェイ
モバイル Web アプリとバックエンド システムの Web サービスの間に配置されるゲートウェイを開発しています。このゲートウェイの目的は、バックエンド Web サービス API の変更から Web アプリを保護し、同時実行の導入、メッセージの変換、バッファリングなどを行うことです。
私の提案するアーキテクチャは次のとおりです。
- PhoneGap を使用したプラットフォームに依存しないモバイル Web アプリ (完了)
- Gateway は、ビジネス ロジックに Scala を使用し、メッセージ パッシングに ZeroMQ を使用する Web サービスです (新規)。
- バックエンドは既存の Web サービス (既存)
ゲートウェイは、メッセージの受け渡し、変換、集約などを純粋に担当し、この時点で状態を保持したり、ユーザー認証を行ったりする必要はありません。一方の側でモバイル アプリと通信する方法を知っている単一のインターフェイスであることを単に担当します。反対側の 1 つまたは複数のサービス。
Scala はこのタイプのアプリケーションに適していると思われるため、開発言語として使用することを強く検討していますが、そのような Scala サービスの正しいアーキテクチャは何でしょうか? Lift や Play などのフレームワークを検討し、単純な「Java」ベースの Web サービスを実行して、Scala を使用してビジネス ロジックを実装することも検討しました。私は物事を可能な限りシンプルに保つことを強く信じています。私は、複雑なセットアップと、決して使用されない可能性のあるフレームワーク内の何千行ものデッド コードを警戒しています。一方で、自分自身を「自分のロール」ソリューションに制限し、多くの作業を作成し、既存のソリューションの一部であった可能性のあるコードを維持する必要があることも理想的ではありません.
考慮すべき点: 私はアーキテクト兼開発者ですが、私の Scala に関する知識は「Programming in Scala, Second Edition」の前半に限られています。また、私の時間は非常に限られています。それでも、私はこれを最初に正しくしたいと思っています。
賢明な紳士や貴婦人が、この種の解決策への洞察と、おそらくすぐに始めるためのリンクを提供してくれることを願っています. 私は本当に早く始める必要がありますが、他の専門家の経験や洞察が、途中で落とし穴を避けるのに役立つことを願っています. 開発環境とツールに関する洞察も役立ちます。私はMacで開発する必要があります(会社のルール)が、Ubuntuサーバーにデプロイします。私は現在、IDE としての Eclipse または Idea のインストールと、ビルド用の scala コンパイラまたは sbt の間でジャグリングを行っています。
アップデート
以下のすべての潜在的な回答に感謝します。私はすべての提案を見て、それらすべてにメリットがあります。問題は、正しい馬に賭けることです。スプレーはおそらく問題に対する最も簡単な解決策ですが、 Finagleも見つけました。それは私の問題に対する素晴らしい解決策のようです。Akka ではなく Netty の上に構築されていることが少し心配です。誰もがそれに問題があると思いますか。ソリューションをできるだけ純粋な Scala のままにしておきたいと思っていましたが、Finagle が最も成熟しているようです。何か案は?
scala - Scalaミドルウェアの選択肢の違いは何ですか?
注: 残念ながら、この質問は終了しましたが、他の誰かが同じ質問をした場合に備えて、この質問を維持しようとしています。
私は、モバイルデバイスと既存のWebサービスの間に位置するScalaでのサービスを開発するための優れたソリューションを探していました。
実行可能なオプションの現在のリストは次のとおりです。
おそらくそこにはもっと多くのオプションがあります。どちらを使用するかをどのように決定しますか?良いScalaミドルウェアの選択の特徴は何ですか(駄洒落を許してください;-)。TypeSafe Scalaスタックの一部であるAkkaに行きたいのですが、Finagleのようなものには豊富なライブラリのセットがあり、配管がとても簡単です。スプレーは見栄えが良く、使いやすいです。
アドバイス、洞察、経験をいただければ幸いです。そこにいる誰かが、共有しても構わないこれらのいくつかの経験を持っているに違いないと確信しています。
アップデート:
この質問が再開されることを望んでいます。この質問に対する良い答えは、新しいスケーラターが関連する落とし穴を回避するのに役立ちます。
更新2:
これらは、この質問をして以来の私自身の経験です。
Finagle-私はプロジェクトにFinagleを使用しましたが、それは堅実です。
スプレー-私の最新のプロジェクトでは、スプレーを使用していますが、非常に満足しています。最新のリリースはAkka2に基づいて構築されており、Spray-canライブラリを使用して直接実行できるため、Webサーバーが不要になります。スプレーはフレームワークではなくライブラリのセットであり、非常にモジュール化されています。Learn about Spray:REST on Akkaビデオは素晴らしい概要を提供し、Cakesolutionsのこのブログは本当に素晴らしい開発アプローチとアーキテクチャを示しています。
更新3:
人生はかなり速く動きます。たまに立ち止まって見回さないと、見逃してしまうかもしれません。-Ferris Bueller
最近では、選択が簡単になっています。私の謙虚な意見では、スプレーは戦いに勝ちました。次のAkkaHTTPになるために、Akkaに統合されています。私は現在、複数のプロジェクトでスプレーを使用していますが、これは私が今まで出会った中で最も素晴らしく、最もサポートされているソフトウェアであると正直に言うことができます。
これは最初の質問に答えるものではありませんが、少なくとも、ほとんどの場合、スプレーが最良の選択であると思われる理由をある程度示しています。非常に柔軟性があり、ブロッキングがなく、非常に安定しています。クライアント側とサーバー側の両方のライブラリと優れたテストキットがあります。また、これらの統計を見て、パフォーマンスに関するアイデアを入手してください。Webフレームワークのベンチマーク
email - HerokuとUbuntuサーバーを使用してScalaから電子メールとSMSを送信する
モバイルアプリとバックエンドSOAPサーバーの間に配置される単純なHTTPプロキシを作成しています。プロキシサーバーは、特定の種類のメッセージを検出したときに電子メールとSMS通知を送信するフィルターにラップされます。Scala、Finagle、Herokuを使用することにしました。ただし、私のクライアントは、自分のUbuntuサーバーでホストすることにした場合でも、システムをHerokuに縛り付けてはならないと主張しています。そのため、後でUbuntuで同じサービスをセットアップするのが困難になるHerokuプラグインの使用には懐疑的です。
誰かがこの問題に取り組むことについていくつかのアイデアを共有することができれば、私はそれを本当に感謝します。特に:
- UbuntuでFinagleを実行するために必要な特別なものはありますか?SBTを使用してすべてを「魔法のように」取得できますか?
- HerokuとUbuntuの両方でうまく機能するシンプルで安全な方法でメールまたはSMSを送信できる優れたソリューション、ライブラリ、またはサービスはありますか?
- Javaからメールを送信するには、通常、システムプロパティを使用します。Herokuのようなリモートサーバー用にこれをどのように設定しますか?
scala - gitライブラリを使用するIntelliJIDEAでscalaプロジェクトを設定する方法
IntelliJ IDEAを試してみたいのですが、どうすればいいのかわかりません。
githubでホストされているFinagleEchoServerを開始点として使用する新しいプロジェクトを作成しようとしています。
Macへのクリーンインストールから始めていると仮定します。IDEAをインストールし、ScalaプラグインとSBTプラグインを追加しました。Finagleを使用してhttpサーバーの例のコードを実行するプロジェクトを作成するには、どのような手順を実行する必要がありますか?
助けてください。私の質問はばかげた質問のように聞こえますが、SBTコマンドライン、Scala-IDE、IdeaなどからScalaプロジェクトを操作する方法は非常に多く、快適な開発環境を実現する方法がわかりません。 。
jquery - TwitterFinagleサーバーへのjQueryAjax呼び出し
Webページからサーバーに送信されたJSON文字列を取得するのに苦労しています。
Webページでは、次のことを行います。
サーバー側では、私のScalaコードは次のようになります。
何らかの理由で、リクエストの内容は空です。
ajax呼び出しを次のように変更した場合:
次に、データをパラメーターとして取得できます。
サーバーでJSON文字列を取得するにはどうすればよいですか?私はそれを間違って送信していますか、それとも間違って受信していますか?
scala - 単純な Scala SOAP クライアントに Finagle を使用する
Twitter の Finagle ライブラリを使用して SOAP サーバーへの HTTP 要求を実装するのに苦労しています。
以下のコードは、最初のテスト (java.net.URL を使用) を正常に実行しますが、2 番目のテスト (Finagle クライアントを使用) には苦労しています。私は何を間違っていますか?
また、私は命令的な書き方に引きずり込まれ続けています。Finagle をもう少し 'scala' らしくするのを手伝ってくれたら、とても感謝しています。
ここに行きます:
scala - Scala でバイト配列を XML に入れる方法
.Net Web サービスと対話しています。サービスの説明によると、サーバーは base64Binary タイプを想定しています。
これは私がSOAPパケットを構築しようとしている方法です:
上記のスニペットrequest.getContent().array()
は、PhoneGap で開発されたモバイル アプリケーションから受け取った HTTP リクエストです。
サーバーは、FileContents が無効であると応答します。何か案は?
scala - NettyのDynamicChannelBufferをStringに変更し、ChannelBufferに戻します
私のWebサーバーは、TwitterのFinagleライブラリを使用してScalaで作成されています。このライブラリは、Nettyに依存しています。そのため、リクエストの内容はDynamicChannelBufferとして返されます。次のようにターミナルからcurlを使用してサーバーに画像をアップロードすると、次のようになります。
次に、次のようなSOAPパケットを使用して、画像を読み取り、バックエンドWebサーバーに転送できます。
上記の例では、コード:(Base64.encode(request.getContent())).toString(UTF_8)
はリクエストコンテンツをbase64でエンコードされた文字列に変換します。
問題は、PhoneGapモバイルアプリから送信されたMultipartHttpリクエストから画像コンテンツを読み取る必要があることです。PhoneGapには、画像のみを送信するオプションがなく、マルチパートリクエストとしてファイルのアップロードを行うように要求されます。
マルチパートリクエストを分割するには、toString(UTF_8)を使用してrequest.getContent()の結果を文字列に変更し、httpマルチパートメッセージを個別のチャンクに分割して画像データパートを取得します。
これはくだらないことですが(後で改善します)、今のところはうまくいきます。imageBodyには、画像コンテンツが文字列として含まれるようになりました。
ここで、imageBodyをSOAPパケットに戻す場合は、次を使用して再度エンコードする必要があります。
この時点で、画像は文字化けしています。サイズは正しいように見えますが、文字列の変換またはエンコードで何かを台無しにしています。最初の例では、Nettyのエンコーダーを使用していますが、2番目の例では、標準のJavaエンコーダーを使用しています。その理由は、NettyのエンコーダーはChannelBufferタイプのオブジェクトしかエンコードできないためです。
あまり大声で言いたくないのですが、1日以上苦労しています。ここでの助けは大歓迎です。