基于JSON的架构,如何最好地同步前端和后端?

7
我看到你想在一个新的基于REST的.NET系统中使用JSON,这很好,但有一件事情让我困惑。如何保持应用程序的两端的JSON同步?我的意思是如果你执行GET:www.mysite.com/item/12345,那么.NET端会查询数据库,检索id为12345的项目,并将其解析为对象模型Item,然后序列化为JSON并返回。如果你执行POST:www.mysite.com/item并传递数据,请问如何确保该数据与.NET端的JSON同步呢?
{
    "Id": "12346",
    "ItemName": "New Item",
    "ItemCost": 45
}

然后,应用程序的.NET端会接收到它,并将其反序列化为一个Item对象,然后将其交给数据库添加。如何让你的JS对象模型和.NET对象模型序列化同步?这只需要手动维护吗?还是有一种聪明的方法可以根据.NET模型的序列化提供JSON的模板?我只是想了解最佳实践和常规做法,不知道客户端如何知道要传递什么JSON给服务器端。

非常好的问题。它让我考虑通过反射和动态生成的JavaScript来构建这种桥梁... - Humberto
我一直在考虑一个想法,即提供一个轻量级的服务,消费者可以调用该服务并返回一个JSON对象(基于序列化的.net对象),然后可以对其进行填充和发送。但仍然存在神秘的元素,消费者知道某些属性将存在并且可以被操作。我猜这将是一个JSON Web引用? - David
1个回答

1

个人而言,我发现在.NET环境下“驱动”这些变化更容易。不想教你如何做某些简单的事情,但是JavaScript是一种非常松散绑定的语言,这意味着可以在运行时添加更改/功能/属性,而在.NET中,以更严格的方式测试和稳定您的POCOs要容易得多。

我最近尝试过的一种方法是从我的服务中生成空的POCOs来创建对象,在适当的时候进行操作,然后将它们推回到服务中进行持久化等操作。这仍然无法解决在JavaScript中工作时的那种“西部荒野”般的感觉,但至少数据合同可以在表面上匹配。


1
我刚刚回复了另一个人,他提出了非常类似的想法。从概念上讲,我认为它的工作方式应该是客户端有类似于 var item = GetItemTemplate() 的东西,它调用一个非常薄的服务来返回一个空的序列化对象。然后客户端操作它并将其发送回来,知道它只能是正确的格式。 - David

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接