2012-04-04 14 views
1

これはwcf Webサービスとどのように機能するのですか?Webサービスのリレーション?

私が持っている


グループ(グループID)
タグ(TagsID)
ユーザー(ユーザーID)

今すぐグループはプログラムに関連付けられている、タグがあると言うことができます(IDに関連付けられている)プログラムまた、それらのすべてに関連付けられたグループおよびユーザーに関連付けられています。例えば

グループCSHARPはプログラムとタグWebサービスと残りコンピューティングに関連しているが、残りのタグはまた私が関連付けられているすべてのグループを返しますどのようにグループasp.netに関連しています安心して?

私が持っている:

IGroupService
IProgrammeService
ITagService
IUsers

どのように私はそれらを関連付け、タグなどに関連するグループとのグループに属するユーザーを返すのですか?

+1

私は質問を理解していますか分かりません。あなたは、これらの情報のすべてをサービスへの一回の呼び出しで返そうとしているのですか?そして、これらの関係(そして循環参照の可能性が最も高い)を持つこのタイプのオブジェクトグラフについて、データ契約がどうなるのだろうか? –

+0

@KevinJunghans:それを答えにしてください。 –

答えて

1

私はその質問をよく理解しています。あなたは、これらの情報のすべてをサービスへの一回の呼び出しで返そうとしているのですか?そして、これらの関係(そして循環参照の可能性が最も高い)を持つこのタイプのオブジェクトグラフについて、データ契約がどうなるのだろうか?

私は多分最新の情報で質問を混乱させるでしょうが、私は最後にこのスタブを1つ取ります。私はもっ​​と混乱しているのは、 "エンティティ"という言葉への言及だと思います。これはEFの質問ですか?リンクがEFの問題である場合、私はコードファーストのアプローチが取られていると仮定することができます。グループをタグにリンクする例は、次のようになります。あなたのクライアントにプロキシを作成します

 public List<Group> GetGroups(string TagName) 
     { 
      List<Group> groups = (from g in _program.Groups where 
      (from t in g.Tags where t.Name == TagName select t).Count() > 0 
       select g).ToList(); 
      return groups; 
     } 

あなたはSOAPを使用している場合は、サービスを呼び出す:

public class Group 
    { 
     public Group() 
     { 
      Tags = new List<Tag>(); 
     } 
     public string Name { get; set; } 
     public List<Tag> Tags { get; set; } 
    } 

    public class Tag 
    { 
     public string Name { get; set; } 
    } 

は、特定のあなたはこのような何かをするだろうLINQのを使用してタグを持っているすべてのグループを照会するには次のようになります。

:あなたはREST APIを作成している場合

 string tagName = "rest"; 
     List<Group> groups = proxy.GetGroups(tagName); 

それは、単純なHTTPリクエストになります

http://server/api/GetGroups?tagName=rest 

このサービスでは、グループを表すXMLまたはJSONが返されます。

サービスのオペレーションとデータコントラクトが含まれていると思われる多くのインターフェイスをリストします。エンティティによってサービスを中断する必要は必ずしもなく、特定の操作とデータ契約をどこに置くべきかについても混乱する可能性があります。サービスが複数のエンティティの情報を返す場合は、サービス全体でデータコントラクトを繰り返す必要があります。エンティティによるサービスの中断は、大きな利益をもたらすものではなく、あなたとそのサービスのすべてのユーザにとってより困難になります。

+0

はい、1回の呼び出しですべてではありません。あなたは小さな例を挙げることができますか? –

+0

私はまだ例を示すのに十分な情報がありません。どのタイプのバインディングをWCFで使用していますか?これはRESTfulなAPIですか、あるいはSOAPを使用していますか?関係を持つあなたのオブジェクトの完全な定義は何ですか? 1回の呼び出しですべてを提供したくない場合は、どのようにそれらを分割していますか?あなたのオペレーション契約は定義されていますか?もしそうなら、それは何ですか?どの部分を試してみましたか、正確に何をしていますか? –

+0

私はエンティティをどのようにリンクしているのですか?次に、それをどのように呼び出すかの小さな例ですか? –