小编Syl*_*ain的帖子

如何在同一主机上同时支持DataContractSerializer和XMLSerializer?

在我们的生产环境中,我们的WCF服务使用XMLSerializer进行序列化.为此,我们的服务接口具有[XMLSerializerFormat]属性.现在,我们需要更改为DataContractSerializer,但我们必须与现有客户端保持兼容.因此,我们必须使用两个序列化程序公开每个服务.

我们有一个约束:我们不想重新定义每个合同接口两次,我们有50个服务合同接口,我们不希望有

IIncidentServiceXml 
IIncidentServiceDCS
IEmployeeServiceXml 
IEmployeeServiceDCS
IContractServiceXml 
IContractServiceDCS
Run Code Online (Sandbox Code Playgroud)

我们怎么做?


更多信息

这是对我们迄今为止所尝试的内容的描述,但我愿意尝试完全不同的方法:

我们尝试通过自己的ServiceHostFactory类中的代码创建所有端点.基本上我们创建两个端点两次.问题是在运行时,WCF抱怨该服务有两个具有相同联系人名称但具有不同ContractDescription实例的端点.消息说我们应该使用不同的合同名称或重用相同的ContractDescription实例.

其他尝试:

我们还尝试通过为每个ContractDescription实例使用不同的命名空间来实现.这样我们将保持相同的合同接口(IIncidentService),但有两个不同的命名空间:

http://ourcompany/XML/IIncidentService
http://ourcompany/DCS/IIncidentService
Run Code Online (Sandbox Code Playgroud)

有了这个,我们能够得到更远,但服务崩溃与一个奇怪的例外:

An ExceptionDetail, likely created by IncludeExceptionDetailInFaults=true, whose value is:
System.InvalidOperationException: An exception was thrown in a call to a WSDL export extension: System.ServiceModel.Description.XmlSerializerOperationBehavior
contract: http://ourcompany.cs/XML:IUserServiceWCF ----> System.NullReferenceException: Object reference not set to an instance of an object.
   at System.ServiceModel.Description.XmlSerializerMessageContractExporter.ExportFaults(Object state)
   at System.ServiceModel.Description.MessageContractExporter.ExportMessageContract()
   at System.ServiceModel.Description.XmlSerializerOperationBehavior.System.ServiceModel.Description.IWsdlExportExtension.ExportContract(WsdlExporter exporter, WsdlContractConversionContext contractContext)
   at System.ServiceModel.Description.WsdlExporter.CallExtension(WsdlContractConversionContext contractContext, IWsdlExportExtension extension)
Run Code Online (Sandbox Code Playgroud)

.net c# wcf xml-serialization datacontractserializer

5
推荐指数
1
解决办法
3400
查看次数

如何从空的工作目录使用`hg cat`?

我有一个位于 x:/projects/repo1 的仓库。工作目录已被清空hg update null。我想将某些文件的最新版本从那里提取到本地目录。

我试过这个:

x:\projects\repo1> hg cat -o c:\sql\%s scripts\*.sql -r tip
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

scripts\*.sql: No such file in rev 14f07c26178b
Run Code Online (Sandbox Code Playgroud)

如果工作目录不为空,则相同的命令可以正常工作。是否有充分的理由说明这不起作用?或者你知道另一种将一些文件从那里提取到本地目录的方法吗?

mercurial

5
推荐指数
1
解决办法
1581
查看次数

如何获取数据库表的子表列表?

我必须编写一个删除脚本来删除数据库表中的行.但是,该表有很多子表(外键),那些子表也有子表.

还有所有的关系外键,我想(先叶表了依赖图)利用这些信息获取表的列表,我不得不删除,以正确的顺序.

如何以正确的顺序获取给定表的子表列表?

t-sql sql-server

5
推荐指数
1
解决办法
6248
查看次数

如何获取自Mercurial中的特定修订版以来受影响的文件列表

自rev 3456以来,如何获取变更集中受影响的所有文件的列表?

注意: 我试过hg log --rev 3456:tip --template "{files}"\n但有几个问题

  1. 如果更改集影响多个文件,则它们都显示在同一行上.
  2. 如果文件涉及许多changsets,这也会多次显示相同的文件.

mercurial

5
推荐指数
1
解决办法
1197
查看次数

如何命名和组织测试具有多个参数的方法的单元测试?

鉴于此方法必须进行测试:

// Search the given value using the provided search options
// Return true if the searchValue was found; false otherwise 
bool Search(string searchValue, bool useExactSearch, bool useIndexing)
Run Code Online (Sandbox Code Playgroud)

我有6个重要的searchValues(一个带有ponctuation,一个带有重音符号,一个带换行符等),我需要使用useExactSearch和useIndexing的每个可能的组合进行验证.这意味着54个测试用例.

你怎么样的?你真的写了54个单元测试吗?如果是这样,你怎么称呼它们?您是否仅针对最重要的案例编写测试?您是否编写了一个单元测试,它循环遍历一个参数值和预期结果表?如果我进行单个单元测试,则在持续集成报告失败时更难找到哪个案例被破坏.

language-agnostic unit-testing

5
推荐指数
1
解决办法
228
查看次数

如何在文档数据库模型中为“参考数据”建模?

我正在创建我的实体的文档模型以存储在文档数据库 (RavenDB) 中。我正在建模的领域围绕Incidents. 事件具有来源、优先级、类别、影响级别和许多其他分类属性。在 RDBMS 中,我有一个事件表,其中包含优先级表、类别表、影响表等的外键,但我不知道如何在文档数据库中处理它(这是我的第一个 Doc BD)。

我有两种类型的参考数据:

  1. 简单的查找值:Countries, States, Sources, Languages。属性:它们只有一个名称,但这是一个多语言系统,因此每种语言都有名称。支持的操作:创建、删除、重命名、停用和合并。

  2. 复杂参考数据:与 Simple Lookups 相同,另外:其中一些有很多字段,并且有自己的业务规则和验证规则。例如,两个Priorities不能具有相同的Rank值。有些具有更复杂的结构,例如CategoriesSubcategories.

我应该如何将它们建模为(或作为文档的一部分)?


PS:文档数据库建模指南的链接也将不胜感激

nosql document-database ravendb

5
推荐指数
1
解决办法
3609
查看次数

如何控制节点express.js应用程序中排队请求的最大数量?

我写了一个只有一条路线的快速应用程序。处理程序将传入请求的正文保存到 couchdb 数据库。

我编写了一个 C# 客户端应用程序,它使用线程异步发送 10000 个小请求。某些请求失败并显示此异常消息“无法建立连接,因为目标计算机主动拒绝”。

我想这是因为节点进程达到了排队连接的最大数量。是对的吗?

这个应用程序是一个概念证明,我的真实应用程序中不会有这么大的负载,但我想测试限制并了解它们是如何工作的。

我有两个问题:

  • 有没有办法控制排队请求的最大数量?我可以将其设置为“无限制”吗?如果不是,最大值是多少?为什么有最大值?

  • 在我的节点应用程序中,有没有办法让我捕获并记录那些丢弃的请求?在生产应用程序中,我想知道我的服务器已达到最大请求数。

更多信息:

  • 我在 Windows 上运行这个
  • 我尝试过 app.listen(3001, 'localhost', 10000) 来设置 backlog 参数。相同的结果。

node.js express

5
推荐指数
1
解决办法
6724
查看次数

如何迭代ES6/2015类实例的属性

鉴于这两个类

class Foo{
  f1;

  get f2(){
    return "a";
  }
}

class Bar extends Foo {
  b1;

  get b2(){
    return "a";
  }
}

let bar = new Bar();
Run Code Online (Sandbox Code Playgroud)

什么代码会从bar实例中获取此属性列表?['f1', 'f2', 'b1', 'b2']

这是一个巴别样本


更新

这应该是@Marc C答案的一部分:

使用装饰器我可以轻松地将不可枚举的属性转换为可枚举的属性:

class Bar extends Foo {

  @enumerable()  
  get b2(){
    return "a";
  }

}
Run Code Online (Sandbox Code Playgroud)

这是装饰源:

function enumerable() {
  return function(target, key, descriptor) {
    if (descriptor) {
      descriptor.enumerable = true;
    }
  };
}
Run Code Online (Sandbox Code Playgroud)

这是一个巴别样本

javascript ecmascript-next

5
推荐指数
1
解决办法
1230
查看次数

为什么JSON.parse()无法解析date.toJSON()创建的内容?

使用镀铬金丝雀测试

我可以将日期转换为JSON:

> (new Date()).toJSON()
  "2012-05-03T22:27:30.530Z"
Run Code Online (Sandbox Code Playgroud)

我可以将它转换回日期:

> typeof (new Date("2012-05-03T22:27:30.530Z"))
  object
Run Code Online (Sandbox Code Playgroud)

为什么我不能使用JSON.parse()将其解析为Date?JSON.parse返回一个字符串,而不是Date:

> JSON.parse('{"DateValue":"2012-05-03T22:27:30.530Z"}').DateValue
 "2012-05-03T22:27:30.530Z"
Run Code Online (Sandbox Code Playgroud)

javascript json

4
推荐指数
1
解决办法
1350
查看次数

如何确保块元素将在表中的同一行?

我有一个<table>最后一列包含一些动作<button>的地方.其他列包含文本段落.因为它们包含文本,所以它们的宽度尽可能地扩展,然后文本换行.这对所有列都很好,但最后一列.我不希望动作列中的按钮换行; 我希望他们在一条线上.我该怎么做?

有关问题的演示,请参阅 jsfiddle.

html css

4
推荐指数
1
解决办法
151
查看次数