【问题标题】:Is not changing "http://tempuri.org/" reference is just lack of professionalism or more?是不是改“http://tempuri.org/”的引用只是缺乏专业性还是更多?
【发布时间】:2012-10-09 01:15:48
【问题描述】:

更改任何网络服务中的“http://tempuri.org/”默认引用的原因仅仅是为了:

1 : 表明我了解命名空间。

2:为了表现专业。

如果它没有给任何技术方面的好处

我们为什么要继续更改它,这可能最终会显示一些错误。

【问题讨论】:

  • 这就是“如果它没有坏,就不要修复它”适用的地方。保持它作为天妇罗没有任何问题。
  • 随机轶事:每次我读到“temprui”,我的脑海里都会想到鸡肉天妇罗。

标签: .net web-services namespaces


【解决方案1】:

您对您的 Web 服务没有说太多,但通常命名空间仅在与 XSD 结合使用时才有用。如果您使用的是 XSD,那么命名空间很有用,原因与它们在 C 风格语言(C#、Java、C++)中的用处相同 - 将您的“类”与其他程序区分开来。

如果您的 Web 服务的使用者试图与另一个 Web 服务构建混搭,并且该程序员需要将来自您的服务的 XML 与来自另一个服务的 XML 结合起来,那么这些命名空间开始变得非常重要(尤其是如果另一个 Web 服务像您一样,选择不更改默认命名空间)。

或者,更简洁:

一个 XML 实例可能包含来自多个 XML 词汇表的元素或属性名称。如果每个词汇表都有一个命名空间,则可以解决同名元素或属性之间的歧义。
http://en.wikipedia.org/wiki/XML_namespace

就个人而言,我发现 XML 命名空间的命名是一个让我的代码与众不同的机会。花时间和精力给你的代码起一个正确的名字会给其他专业人士一种印象,即你已经花时间和精力来正确编码。可以这样想:如果您有一个带有名为 fUnctiontodoSomeThin() 的函数的 API,您可能会对它的功能感到满意,但有些人会想知道为什么程序员没有花时间和精力拼写和使用大写字母正确/一致。也许他/她没有花时间将他们的数据库调用包装在 try/catch 块中?这可能会导致我去寻找另一个 API(当然,其他所有条件都相同)。

【讨论】:

  • 当您不打算处理错误时,为什么将数据库调用包装在 try catch 块中是错误的?
  • @TomasZubiri 嗯?这是一个 5 年前的帖子的随机和任意示例。怎么样......“也许他/她没有花时间拒绝因错误返回的 Promise。”
【解决方案2】:

我们使用命名空间作为向客户端应用程序发出信号的一种方式,即服务合约或数据合约在版本之间进行了重大更改(即返回类型已更改、参数顺序已更改等)。否则,您的客户端应用程序将继续尝试解析返回的值,就好像它们在旧合同中一样。解析将失败,并出现令人费解且难以理解的错误消息。或者更糟糕的是,解析可以通过交换值成功(即更改数据协定中两个字符串属性的顺序)。

更多关于WCF Service Versioning的信息。

【讨论】:

    猜你喜欢
    • 2021-06-03
    • 2020-02-02
    • 1970-01-01
    • 2012-01-06
    • 2011-05-28
    • 1970-01-01
    • 1970-01-01
    • 2014-06-29
    • 2010-09-15
    相关资源
    最近更新 更多