7


2

.netのミドルウェアサーバーに使用するテクノロジー

これがばかげた質問かどうかはわかりません! 有用なヒットなしでウェブを検索しました。 私はドットネットユーザー(C#)です。サーバーを開発したいのですが、ミドルウェアサーバーと呼ばれる場合があります(実際にはわかりません)。これは次のタスクを実行し、変更できないサーバーと多くのクライアントがありますサーバーを要求し、結果を受け取ります。 クライアントを変更できます。クライアント要求を受信するソフトウェアを開発し、サーバーがビジーかどうか、またはサーバーでキューに入れられているタスクの数を確認し、サーバーがビジーの場合はクライアント要求を一時データベースに保存します。一時データベースからサーバーに転送し、結果を受信して​​クライアントなどに転送します。質問は

  1. ドットネット、WCF、 Webservives、リモート、または他の?

  2. 次のようなタスクがあると仮定して、このタスクはどれほど複雑ですか トランザクション処理、負荷分散、ロギング、セキュリティチェックメカニズムなど?

  3. これらのタスクを実行するために何を読む必要がありますか?

  4. 検索中に、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


NETでは、ミドルウェアサーバーに推奨されるアプローチは、COM +経由で.NET APIを提供するhttp://msdn.microsoft.com/en-us/library/ms973484.aspx [エンタープライズサービス]を使用することです。

COM +は、ポイント2で言及したすべての機能を.NETアプリケーションに提供します。

WCFはRemotingに優先しますが、相互運用性がすべてです。 セキュリティおよびトランザクション機能を提供しますが、これらはアプリケーションオブジェクトではなく、2つのエンドポイント間の通信を対象としています。