2009-03-07 13 views
0

私は、主にネットワーク指向の新しいアプリケーションの設計を始めています。私は、良い建築設計やOOPクラスモデルを思いついた人からアドバイスを探しています。どのようにネットワーク指向のアプリケーションを構築しましたか?

基本的なアーキテクチャおよび/またはクラス構造について説明してください。あなたは通信ビットを抽象化しましたか?あなたはどんなクラスの実体を考え出しましたか?

このアプリケーションには、リスナークラスとクライアントクラスの両方があります。これはフィードアグリゲータに似ていますが、HTTPではなく永続的な接続を使用します。つまり、私はソケットに接続し、データが両方向に流れる永続的な接続を持っています。それから私にも永続的に接続するクライアントがあり、データの一部(またはすべて)をそれらに送信します。

また、私はWCFまたは.NET 3.0または3.5(私はVS2008で開発しているのでC#3を使用することはできますが)のものは使用できません。私はWindows 2000と互換性がなければなりません。

答えて

0

私は数週間前に書き始めたクライアント/サーバーアプリケーションの最後にあります。私はWCFを.netの&サーバに使用しました。

しかし、サーバーはTCP/IP上のASCIIだけを理解していたネットワーク上のデバイスにも接続する必要がありました。

通信ビットを抽象化しましたか?

はい。私は推測する。私はあなたの質問を100%理解しているかどうか分からない。サードパーティのデバイスへの私のTCP接続では、私が書いたクラスの背後にあるTCP接続と通信の詳細が隠されていました。問題のデバイスは、ASCIIコマンドをIR信号に変換して、衛星放送の料理やDVDプレーヤーなどを制御します。エンティティはあなたが思いついたのは何クラス

_irService.SendCommand(someAsciiCommand); 

:私は私のサーバーがしなければならなかったすべては次のように電話をかけることであるクラスにTCP通信を抽象化?

私のドメインに基づいています。あなたのドメインは、あなたのドメインが何であるかに基づいていなければなりません。私はそのことを理解しているかどうか分からない。あなたのドメインはあなたのオブジェクトを指示するでしょう。

私のドメインでは、VLCを利用したUDP上でのマルチキャストブロードキャストのスケジューリングと再生を担当するサーバーアプリケーションを扱っていました。これらのマルチキャストブロードキャストは、あらゆる面で設定可能でなければなりません。

ドメインを分析したところ、ブロードキャスト、チャネル、デバイス、ブロードキャストプロセス(vlc.exeプロセスの開始とそのライフサイクルの維持を担当するクラス)で構成されたモデルが登場しました。

ドメインは、ネットワーキング技術にほとんど影響を与えませんでした。私はドメインを操作することを可能にするWCFのいくつかの二重の "サービス"で終わった。しかし、ネットワーキングの選択肢はドメインによって決定されていませんでした。自分のオブジェクトのバイナリシリアル化によるTCP接続が欲しかったので、私のクライアントがコールバックを介してリアルタイムの更新を得ることができるように、サーバーとの双方向通信が必要でした。これらのオプションは、私のドメインがどのように見えるかにかかわらず私に利用可能でした。

0

「ネットワークアプリケーション」は、さまざまな可能性のある要件とデザインを網羅している明確なカテゴリではありません。定義上、並行性と待ち時間に対処する必要があります。堅牢性は常に課題です。すべてのハードウェアおよびソフトウェアコンポーネントの最小の共通点である可用性を持つシステムを設計するのは簡単です。O/Sとアプリケーションのコンポーネントをアップグレードする必要があります:すべてのソリューションを停止するか、ホット/コールドスタンバイ、またはフェールオーバー機能が必要なのでしょうか?ネットワークはエキゾチックな方法で(少なくとも私たちにとっては貧しい純粋なソフトウェアの人たちにとって)失敗します。ルータやスイッチ、DNSサーバ、悲観的な心の枠組みとの相互作用。

1つの警告:分散アプリケーションを設計する際には、オブジェクト指向ではないようにしてください。オブジェクトはソフトウェアの複雑さを管理する場所にありますが、ワイヤでプッシュする瞬間に膨大な数のパフォーマンスとバージョン依存性の問題が発生し、醜いヘッドが発生します。サービス指向アーキテクチャーは流行語ですが、設計上の原則として役立ちます。メインフレームの連中は...年齢のため

二つの一般的な書籍の提言を、これを知っていました:

  • Designing Concurrent, Distributed, and Real-Time Applications with UMLは数年前ですが、家にあなたが直面する課題をもたらします(あなたは本当にハード持っている場合は特にかソフトリアルタイムの依存関係)。ちょっと理論的だけど、複雑さにある程度の敬意を払うのに役立ちます!
  • Enterprise Integration Patternsは、新しいコンポーネントと従来のコンポーネントを統合するために使用できるさまざまなデザインオプションを体系的に見ています。
関連する問題