我有一个使用JSON消息与客户端通信的web服务,运行时本身不知道数据模型,这就是为什么我使用json.net模式来验证来自客户端和服务本身的消息,但是它在性能方面造成了大量开销。
仍然包含足够的上下文以理解我正在做什么的简化代码。
public class Template
{
/// <summary>
/// Template known as
/// </summary>
public string Name { get; private set; }
/// <summary>
/// Razor Template
/// </summary>
public string RazorTemplate { get; private set; }
/// <summary>
/// Json Schema definition
/// </summary>
public string Schema { get; private set; }
private JSchema _schema { get; set; }
private JSchema JSchema
{
get
{
if (_schema == null)
_schema = JShema.Parse(Schema);
return _schema;
}
}
private void Validate(JObject obj)
{
// Schema validation Error messages.
IList<string> ValidationError;
// Schema validation.
if (!obj.IsValid(JSchema, out ValidationError))
{
throw new Exception(string.Join(",", ValidationError.ToArray()));
}
}
public string RunTemplate(JObject jobj)
{
// Validate Json Object.
Validate(jobj);
// Code here that access our RazorEngine cache, and add then run Razor Template, or directly run a cached Razor Template...
return "Here we return string generated by RazorEngine to sender.";
}
}假设我运行了一个简单的"Hello @Model.Name!“验证json有字符串名称的模板--这是15-20 乘以的速度--如果我完全注释掉验证的话。
是否有更有效的方法在IsValid模式中使用Json.Net?
发布于 2015-08-29 13:28:12
请确保更新到NuGet上可用的最新版本的NuGet架构,在使用旧版本验证某些架构时,性能很慢。
此外,还有Json.NET模式业绩最佳做法网站上的文档。
https://stackoverflow.com/questions/31851961
复制相似问题