0

因此,我编写了一个 3 层 GIS(地理信息系统)系统。但是查看器应用程序是完整的 c# 二进制文件,而不是网页

所以我需要将大量对象/数据从中间层拉到应用程序我想知道如何做到这一点

查看器:c# 二进制
后端:用于文档的 SQL DB + 文件系统
中间层:c#/nhibernate ORM/messagingserver/jobscheduler

所以通常中间层会为查看器/浏览器生成一个网页
中间层本身有对象的集合,它需要发送到 c# 远程二进制文件.. 我该怎么做

更重要的是,我如何将更新/通知从数据库推送到中间层,然后再推送到 c# 应用程序?

感谢您的任何提示

4

1 回答 1

0

所以通常中间层会为查看器/浏览器生成一个网页

我有点不同意这一点。我会说中间层会生成视图然后可以使用的数据。该视图可以是 ASP.NET WebForm、ASP.NET MVC razor 视图,也可以是 C# 桌面应用程序中的 WinForm。

如果您想要真正分离数据和视图,那么您可能应该考虑将系统的后端设置为 Web 服务,该服务可以由网站/Web 应用程序或桌面客户端/二进制文件使用,例如

SQL DB + 文件系统 -> 业务逻辑/中间层 -> 视图(Web/桌面/移动)

您的第一个视图实现将是桌面 C# 二进制视图。

更重要的是,我如何将更新/通知从数据库推送到中间层,然后再推送到 c# 应用程序?

基于此,我假设您希望 C# 应用程序立即接收更新,并且尽管您的应用程序不是 Web 应用程序(HTML/JS 等),但它实际上是一个 Web 客户端。

像这样的通知往往以几种方式实现。

  • HTTP 轮询
  • HTTP 长轮询
  • HTTP 流式传输
  • 网络套接字

后者现在是客户端和服务器之间实时双向全双工通信的标准。但是,如果更新频率非常低,那么您可以简单地实现一个 Web 服务,您的 C# 客户端可以长时间轮询以检查更新。

如果更新频率合理,并且您对推送通知的要求表明是合理的,那么我建议使用实时推送系统,因此我建议使用 WebSocket 服务器和客户端。有许多可用的 WebSocket 服务器和客户端示例,例如:

如果您不想实现和托管您自己的实时消息传递基础架构,那么您可以考虑托管实时服务

于 2011-08-16T11:51:31.813 回答