【问题标题】:Would you use WCF Linq and JSON for an API你会为 API 使用 WCF Linq 和 JSON
【发布时间】:2011-03-04 17:33:39
【问题描述】:

好的,我正在构建一个 API,但也希望我自己的应用程序使用该 API。 我正在为我的 Web 服务和数据考虑 WCF、LinQ 和 JSON,为我的应用程序考虑 Silverlight。

我有几个问题。

1) 你会推荐 XML over JSON 还是 Json over XML? a) Json 会在本机更快地传输和反序列化,还是 XML 会更快地传输和反序列化?

2) 使用 LINQ 会阻碍任何人连接到我的服务表单 PHP 吗?

3) 你会推荐一些不同的东西吗?

【问题讨论】:

    标签: .net wcf silverlight json api


    【解决方案1】:

    伙伴慢点! ;-)

    我认为您对很多首字母缩略词感到有些困惑……让我们分解一下,更好地了解每种技术。

    我想这就是你想要的:

    • Web 服务形式的 API 和 silverlight 中的客户端应用程序。
    • 您还希望 Silverlight 以外的客户端使用您的 Web 服务 API

    对吗?让我知道,我们可以进一步分解。

    更新

    好吧,当你说LINQ的时候,你一定是指Linq2Sql吧?在这种情况下,那是您的数据层...所以您使用什么技术来访问数据并不重要,因为您所有的网络服务都应该提供DTOs

    至于序列化...因为您想使用 WCF,并且只要您使用 DTO,那么您应该独立于序列化构建您的 API。这可以通过您在 WCF 中配置的“绑定”类型来处理。所以,就目前而言,这应该无关紧要。

    请注意,因为您可以为每个服务提供多个“WCF 端点”,所以您可以提供一个 JSON 端点、一个 XML(restful)端点,甚至一个 SOAP 端点……而无需编写太多额外的代码。

    我个人更喜欢 XML,因为使用 Linq to Xml 在 .net 中解析它非常容易,但 JSON 不那么冗长,并且可以说占用的空间更小。

    回应您的评论

    嘿,里科,谢谢。不完全是。

    因此,您的 silverlight 应用程序将只是一个使用您的网络服务的客户端。

    您的网络服务会以 DTO 的形式为您的客户提供所需的任何数据。您当然可以在您的客户端中拥有某种系统来缓存 DTO,这样您就不必一直调用 Web 服务……或者您可以提出某种同步解决方案……但是方式会枯萎。 ...

    ...您的网络服务是唯一与数据库对话的服务,而数据库又存在于您的服务器上。因此,与您的 DAL(数据访问层)对话的是您的 Web 服务,而这反过来又可以实现 Linq2Sql 或任何其他数据访问技术。

    【讨论】:

    • 啊哈哈很棒的答案。我想我理解你的说法,从 Silverlight 的角度来看,我将使用 Linq 到 SQL 并发送对象,没有理由序列化为 json 或 XML,我不想构建业务逻辑 3 次你会怎么做你已经在 Linq2SQL 中做过并为 JSON 创建了一个端点你知道一个简单的例子吗?
    • WCF RIA 服务(我可能会为此设置推荐)也允许二进制编码,在处理 Silverlight 时应该比其他选项更快。
    • 是的,没错,我忘了 ria 服务。但这不会与他的小狗客户一起工作吗?
    • 安迪,抱歉,有什么好的 DTO 示例 DTO 只是我创建的一个类吗?有属性之类的?
    • 绝对,DTO 只是一个持久化数据的类。理想情况下,它不会有任何公共方法,尽管我的通常包含用于序列化或取消实现对象的方法......通常用于记录目的。您的 DTO 不应依赖于任何逻辑,它们应位于单独的程序集中。它们实际上只是轻量级对象,仅包含它们需要的信息。例如,您的数据库实体可能包含时间戳或外键,但您的 DTO 可能不需要知道这一点。最后,当您使用 wcf 时,他们可能需要 wcf 属性装饰...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-04
    • 2012-06-13
    • 2011-09-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多