在 .NET Framework 和 .NET Core 之间自动传递和拉取 JSON 数据
Posted
技术标签:
【中文标题】在 .NET Framework 和 .NET Core 之间自动传递和拉取 JSON 数据【英文标题】:Automatically Passing and Pulling JSON data between .NET Framework and .NET Core 【发布时间】:2019-08-08 19:03:03 【问题描述】:我是计算机科学的新手(所以希望我使用正确的词并提供正确的信息来回答这个问题),希望你们能帮助我。 我想在两个 .NET 解决方案之间自动传输 (JSON) 数据。
我在 .NET 中有两个解决方案:
Bot Framework SDK - 内置于 .NET Core 2.2 (https://docs.microsoft.com/en-us/azure/bot-service/dotnet/bot-builder-dotnet-sdk-quickstart?view=azure-bot-service-4.0)
据我了解:在 ASP.NET Core 中构建Qlik Sense .Net SDK。 - 内置 .NET Framework 4.5.2 (https://github.com/kolsrud/qlik-dot-net-sdk-hypercube-usage)
我想让这两种解决方案相互交流。
一方面:在 QlikSense.NET SDK 中,我们将所有数据存储到一个变量中(比如说变量“Sales”,保存 JSON 数据),如果 此变量已更新,我想将其转移到 Bot 框架 (并将数据存储在这里)。
另一方面:如果该变量是 已更新,我想将其传递给 Qliksense SDK。
总结:我想在 Qliksense SDK 和 Bot 框架 SDK 之间自动传输 (JSON) 数据。我怎样才能做到这一点?
再次,如果有不清楚的地方,请见谅。提前感谢您的帮助!赞赏!
编辑 1: 我尝试了什么?正如 Selvin 所问: 我唯一能想到的就是将 JSON 变量写入文本文件,然后从另一个脚本中读取该文本文件。但是,我认为这不是一个合适的“解决方案”。
【问题讨论】:
-1 用于转发相同的问题...***.com/questions/55218740/…2h ago 我在发布这篇文章前 90 分钟删除了那篇文章(我在第一条评论后直接删除了它)。为了让这篇文章更加清晰(因为我假设 Scripts 是正确的词)。 它仍然太宽泛了......你没有写到目前为止你尝试了什么,你在哪里失败了。 ...您的“问题”中也没有问题 嗨,你的问题很广泛,但我想知道你为什么认为使用文件是不对的?如果它有效,请不要敲它。通常,对于共享信息,您必须让某人或某物成为该信息的看门人,而文件可能就是您的答案(请务必使用文件锁定来序列化写入。)使用文件是否太慢?你认为你应该使用网络?但如果你这样做,谁拥有数据?你考虑过小型 Redis 服务器吗? (见redis.io)。问候,亚当。 谢谢亚当。可以肯定的是,您的解决方案是:.Net Framework Redis Server .NET Core? 【参考方案1】:有一些解决方案,您可以根据项目中的细节应用它们。
据我了解,您使用的是 Bot 框架 SDK,没有其他任何东西。基础 Nuget 是用 .NET Standard 2.0 编写的,可在 dotNet Core 和 dotNet Framework 中使用。因此,最简单的方法是升级/更改您的项目以在 dotNet Framework 而不是 dotNet Core 上编译。然后你可以毫无问题地引用第二个项目。
如果有更多我不知道的编译,您可以执行以下解决方案之一:
-
为同一台机器上的进程创建在它们之间发送“消息”(一个是您提到的文件,第二个是 HTTP 请求,第三个是队列,等等...) - 如果我知道,我可以提供更多详细信息您希望如何托管您的解决方案
尝试将 QlikSense 项目迁移到 dotNet Core。您可以使用官方指南检查迁移是否容易:https://docs.microsoft.com/en-us/dotnet/core/porting/third-party-deps 和这篇文章:https://www.stevejgordon.co.uk/migrating-full-net-framework-net-core
如果您想继续使用 dotnet Core,请在另一个库中搜索 QlikSense
【讨论】:
【参考方案2】:免责声明
这个答案假设(因为我无法从问题中辨别出任何此类细节)您已经让您的应用程序进行通信,并且能够序列化和反序列化 JSON,并且您需要帮助的是对象更新时自动发送数据.
使用封装处理更新
通过使用c#的类机制,你可以 - 确保您的“销售”变量仅通过您公开显示的更新方法进行更新 - 公开显示的更新方法也会将新数据发送到您的其他应用程序
class SalesContainer
private string _sales;
public string getSales()
return _sales;
public string updateSales (string sales)
_sales = sales;
sendData(sales);
private sendData(string json)
// your sending logic here
或者,您可以查看一下operator overload,以减少对现有代码库的更改。
【讨论】:
【参考方案3】:我了解到您有两个应用程序。他们不能直接相互交流。您需要第三方调解。文件、数据库、网络流或 MemoryMappedFile。 QlikSense.NET 应用程序将更新推送到中介,Bot Framework 应用程序从中介中读取更新。
我认为这是跨进程通信的问题,所以每个跨进程通信方案都是可行的。
【讨论】:
以上是关于在 .NET Framework 和 .NET Core 之间自动传递和拉取 JSON 数据的主要内容,如果未能解决你的问题,请参考以下文章
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files这个文件找不到
C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Temporary ASP.NET Files这个文件找不到??
“login”同时存在于“c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Fil
ASP.NET - 当前身份 (Machine\ASPNET) 没有对 'c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET