0

さまざまなデータ型を保存し、さまざまなクライアントに提示する必要がある中規模/大規模プロジェクトを考えています。

私が今苦労しているのは、さまざまな種類のオブジェクトを格納し、必要に応じてクエリを実行できるデータおよびサービス層を構築する方法です。

例として、クライアントが個々のサーバーのブロードキャストのみを読み取ることができるクライアント サーバー アプリケーションについて考えてみましょう。次に、花屋やレストランが通りにいる人にスマートフォンでデータをブロードキャストするシナリオを考えてみましょう。

class SoCalledServer
{
    public AccessibleClientData Broadcast(ClientData broadcastMessage)
    {
        Broadcast(broadcastMessage)
    }
}

class RestaurantClient : AbstractClient
{
    public SomeGenericDataType menu;
    public RestaurantClient()
    {
        menu = new SomeGenericDataType<List>();
        menu.Add("Sushi");
        menu.Add("Fried potatoes");
    }

    public override void BeginBroadcast()
    {
        server.Broadcast(menu);
    }
}

class FlowerShopClient : AbstractClient
{
    public SomeGenericDataType flowersOnSale;
    public FlowerShopClient()
    {
        flowersOnSale = new SomeGenericDataType<List>();
        flowersOnSale.Add("Daisy");
        flowersOnSale.Add("Rose");
    }

    public void BeginBroadcast()
    {
        server.Broadcast(flowersOnSale);
    }
}

この例では、2 つの異なるタイプのデータ (1 つはレストランのメニュー、もう 1 つはフラワー ショップの花) を持ち、それぞれが異なるメンバーを持つことができます (たとえば、メニューには価格と材料があり、フラワー ショップのデータには花の名前と名前があります)。説明、数量および/または価格など...)、この「クライアント」サンプルは拡張できます。

このようなタイプのアプリケーションをどのようにモデル化すればよいですか? 未確認のさまざまな種類のデータを格納するには、どのようなデータベース スキーマを使用すればよいですか? サーバーとクライアント アプリケーションはどのように相互に通信する必要がありますか? そして最も重要なのは、クライアントがブロードキャストされたデータ型を (ジェネリック型から) どのように取得する必要があるか?

4

2 に答える 2

1

もう1つのアイデアは、それらをXMLまたはJsonとして逆シリアル化/シリアル化することです。いくつかのヒント:

        // get stuff here
        String json = GetJsonString(expression));

        List<T> result;
        using (var ms = new MemoryStream(Encoding.Unicode.GetBytes(json)))
        {
            var serializer = new DataContractJsonSerializer(typeof(List<T>));
            result = (List<T>)serializer.ReadObject(ms);
        }   

またはXML: http: //msdn.microsoft.com/en-us/library/system.xml.serialization.xmlserializer.aspx

オブジェクトをXML/Jsonに変換して送信できます。次に、保存するために、クラスが不明な側で匿名オブジェクト(指定されたクラスなし)としてそれらを逆シリアル化します。

これにより、クラスが不明な場合でも、常にすべてのデータを保存することができます。いつでもどこでも。

于 2012-12-29T12:44:37.110 に答える
1

このサービスはこのデータをどのように操作しますか? 保存するだけでしょうか?このデータを使って何らかの計算を行いますか? あなたの説明は一般的すぎます。

データの書き込み/永続化/読み取りのみを行いたい場合、文字列を保存して、クライアントに解析を任せることができます。IDに基づいてクエリを実行できます。キー/値データベースとドキュメント データベースは次のように機能します。

あとは、サービスの責任を考えて、それに応じた内部構造を設計する必要があります。

于 2012-12-29T12:28:16.020 に答える