7
2
これがばかげた質問かどうかはわかりません! 有用なヒットなしでウェブを検索しました。 私はドットネットユーザー(C#)です。サーバーを開発したいのですが、ミドルウェアサーバーと呼ばれる場合があります(実際にはわかりません)。これは次のタスクを実行し、変更できないサーバーと多くのクライアントがありますサーバーを要求し、結果を受け取ります。 クライアントを変更できます。クライアント要求を受信するソフトウェアを開発し、サーバーがビジーかどうか、またはサーバーでキューに入れられているタスクの数を確認し、サーバーがビジーの場合はクライアント要求を一時データベースに保存します。一時データベースからサーバーに転送し、結果を受信してクライアントなどに転送します。質問は
ドットネット、WCF、 Webservives、リモート、または他の?
次のようなタスクがあると仮定して、このタスクはどれほど複雑ですか トランザクション処理、負荷分散、ロギング、セキュリティチェックメカニズムなど?
これらのタスクを実行するために何を読む必要がありますか?
検索中に、Javaではミドルウェアなどを見つけますが、Javaでは見つけません ドットネット。 理由は何ですか?
4 Answer
5
短い答え:サーバーのオーバーロードをバッファリングしたいだけなら、サウンドから、リクエストを非同期で処理することで逃げることができます。 WCFはMSMQをネイティブでサポートします。 MSMQはDTCをサポートしているため、メッセージをトランザクション的に配置および削除できます。
ミドルウェアのより大きなトピックは、かなり「ファジー」な用語です(トランザクション、ESBなどの用語もそうです)。 MSはこの分野に製品を持っています。 これも:
キューイング技術(メッセージ指向ミドルウェア)MSMQ(代替 IBM Websphere MQ、Rabbit MQなどが含まれます)
XA / ACID / TPモニター-Microsoft DTC
EAI-マイクロソフトには統合のためのBizTalkがあります(他にも多くの ベンダーはこちら)
ESB-MicrosoftにはBizTalkがあります。 [ラインスルー] * サービス仮想化のためのMS Managed Service Engine(MSE)。* これは廃止されました
RESTful統合の場合、http://www.asp.net/web-api [WebAPI]
BPM / BPEL-繰り返しますが、MSにはBizTalkがあります。 ビジネスレベルも含めることができます 監視と報告
運用面-あなたが説明したように-管理、監視、 サービスの負荷分散、調整、SLA契約など
Webサービス(およびWS拡張)の場合、WCF。 多数あります ここでの構成オプションは、プロトコルを切り替える間でコードを変更する必要性をほとんど取り除きます。
そして、これは表面をひっかいているだけです:)
1
ミドルウェアは非常に広義の用語であり、具体的にはプロキシについて話します。
もちろん、これもミドルウェアです。
他の答えは、クライアントとサーバーの通信に使用しているテクノロジー(Webサービス、REST、jsonなど)、サーバーロジックの複雑さ、処理する必要のあるリクエストの数、 …
シナリオで動作する可能性のある最も単純なものは、サーバーの負荷に応じて、2つ以上のサーバーにリクエストを転送するロードバランサー(http://en.wikipedia.org/wiki/Load_balancing_(computing))です。 サーバーインスタンスを複製できる場合にのみ機能することは明らかです。
サーバーがビジーの場合にキューを格納するミドルウェアを置くことは機能しますが、そのプロキシのキュー容量を超える可能性については何も保証されません。
1
#1の場合:
タスクに関する追加情報を入力してください.1。 クライアント数の概算5、100、10000、1000000 2。 クライアントとサーバー間で強制的に行き来するデータの推定サイズ3。 クライアントはインターネットまたはイントラネットのどこで作業しますか? セキュリティによる制限はありますか? 4. クライアントはスタンドアロンアプリケーションまたはWebアプリケーション(ページ上のページまたはウィジェットなど)になりますか?
#3の場合:
#2で述べたすべてをタスクの一部として実装する必要がある場合、いくつかの本を読んで実装できるとは思わない。 または、実装の結果は生産要件からはほど遠いものになります。 アーキテクトを雇うか、経験豊富なチームに外注することをお勧めします。 一般的な情報だけを読むことをお勧めします-「エンタープライズアプリケーションアーキテクチャのパターン」Martin Fowler著。 しかし、読むだけで経験を置き換えることはできません。
#4:.Net用のミドルウェアシステムもあると思います。 Java、.Net、C ++で動作する商用ミドルウェアシステムがあります。
IMO Microsoftは、Javaコミュニティ以外のアプローチを選択しました。 彼らは、あなたが「ミドルウェア」と呼ぶものを構築できるフレームワークを提供しました。 最初にWCFとRESTを調べます。 キューはDBに簡単に実装できます。 WCFとMS MQを十分に検討していない場合。 MS MQが気に入らない場合は、Amazon SQSをご覧ください。 BizTalkを十分に検討していない場合。
P.S. Javaおよび.NETプラットフォームは非常に大きいため、両方で必要なものを作成できます。 プラットフォームに何かが欠けていると思うからといって、.NETからJavaに、またはJavaから.Netにジャンプすることは意味がありません。
0
COM +は、ポイント2で言及したすべての機能を.NETアプリケーションに提供します。
WCFはRemotingに優先しますが、相互運用性がすべてです。 セキュリティおよびトランザクション機能を提供しますが、これらはアプリケーションオブジェクトではなく、2つのエンドポイント間の通信を対象としています。