さまざまなデータ型を保存し、さまざまなクライアントに提示する必要がある中規模/大規模プロジェクトを考えています。
私が今苦労しているのは、さまざまな種類のオブジェクトを格納し、必要に応じてクエリを実行できるデータおよびサービス層を構築する方法です。
例として、クライアントが個々のサーバーのブロードキャストのみを読み取ることができるクライアント サーバー アプリケーションについて考えてみましょう。次に、花屋やレストランが通りにいる人にスマートフォンでデータをブロードキャストするシナリオを考えてみましょう。
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 つはフラワー ショップの花) を持ち、それぞれが異なるメンバーを持つことができます (たとえば、メニューには価格と材料があり、フラワー ショップのデータには花の名前と名前があります)。説明、数量および/または価格など...)、この「クライアント」サンプルは拡張できます。
このようなタイプのアプリケーションをどのようにモデル化すればよいですか? 未確認のさまざまな種類のデータを格納するには、どのようなデータベース スキーマを使用すればよいですか? サーバーとクライアント アプリケーションはどのように相互に通信する必要がありますか? そして最も重要なのは、クライアントがブロードキャストされたデータ型を (ジェネリック型から) どのように取得する必要があるか?