2011-11-12 8 views
1

私は現在、C#Windowsフォームアプリケーションを開発しており、サーバーとやりとりする予定です。サーバーは、私が開発したモバイルアプリケーションからの投稿を受信し、投稿が受信されると、Windowsフォームアプリケーションに通知を送信し、通知を送信する必要があります。そして今のところ私はそれのためのWCFサービスを作成し始めています。WCFサービスにはどのような運用契約を結ぶことができますか?

これは、私が意味するサンプルシナリオです。

などのシナリオです。私のモバイルアプリケーションが自分のサーバーにメッセージを送信します。私のサーバーがメッセージを受信すると、私のWindowsフォームアプリケーションは、受信したメッセージの内容を示す新しい通知を表示する必要があります。

サービスの運営のために、私は投稿を受け取るためにどのような方法を入れるべきですか?

[OperationContract] 
bool receivePosting(int n); 

答えて

2

どの方向あなたが通信したいと私は非常に明確ではないよ:

  • あなたの「サーバー」が保存されています新しい投稿のWinformsのアプリを通知する必要がありますか?

か:

  • あなたのWinformsアプリは、新しい投稿について "サーバー" を尋ねます?

"server"はWCFワールドでは特定の役割に使用されているため、引用符で囲みます。最初のオプションを想定し

、あなたがこれを実行する必要があります。

  • あなたのWinformsアプリはWCFサーバにする必要がある - 例えばサービス契約、運用契約、データ契約を定義し、実装する必要があります。

  • この場合、投稿サーバーはWCF クライアントになります。投稿を保存/受信するたびに、あなたは通知を送信するためにあなたのWinformsアプリでWCFサービスを呼び出します(これは本当に、この設定では、あなたの役割が予約されている - のWinformsアプリはWCFサーバである)

運営契約に関して - あなたのWinformsアプリは新しい投稿について何を知る必要がありますか?事実、新しい投稿が受信されただけですか?投稿全体の内容、またはその部分だけ?

いずれの場合でも、「投稿サーバー」が呼び出して、関連するすべての情報をWinforms WCFサーバーに渡すことができるWCFサービス上のメソッドを定義する必要があります.2回以上呼び出す必要はありませんただ1つの通知のために。

[ServiceContract] 
public interface IPostingService 
{ 
    [OperationContract] 
    void NotifyAboutPosting(Posting post); 
} 

とあなたのPostingクラスは、データコントラクト、次のようになります:

だから、サービス契約があるかもしれない

[DataContract] 
public class Posting 
{ 
    [DataMember] 
    public int ID { get; set; } 
    [DataMember] 
    public string Description { get; set; } 
    [DataMember] 
    public DateTime PostingTimestamp { get; set; } 
} 

あなたがそれらの二者間で送信する必要があるものは何でも - あなたのデータでそれを定義しますあなたのサービスコールの引数である契約

+0

こんにちは、あなたの返信ありがとうございます。私は上記の私の主な記事を編集しました。私が望むのは、サーバーがメッセージ/イベントの新しい投稿を受け取ったときに、その投稿をキャプチャしてwinformsアプリに送信して、その情報を含む新しい投稿を受け取ったことを通知します。 – Thomas

+0

編集:datacontractスキーマを使用するためにインポートする必要があるものは何ですか? – Thomas

+0

@Thomas: 'DataContract'は' System.Runtime.Serialization'名前空間に存在します –

関連する問題