远程 exe 应用程序的 ORM 和推送通知

发布于 2024-11-29 09:19:02 字数 357 浏览 3 评论 0原文

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

因此我需要将大量对象/数据从中间层提取到应用程序 我想知道如何执行此

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

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

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

感谢您的任何提示

So i a, writing a 3-tier GIS (geo info sys) system.
But the viewer app is a full c# binary and not a web page

So i need to pull lots of objects/data from the midtier to the application
I am wondering how todo this

Viewer: c# binary
Backend: An SQL DB + file system for docs
Midtier: c#/nhibernate ORM/messagingserver/jobscheduler

So normally a midtier will generate a webpage for the viewer/browser
The middletier itself has colections of objects which it needs to send to
c# remote binary.. how do i do this

And more importantly, how do i push updates/notifactions from the DB to the midtier and then to
the c# app ???

Thanks for any hints

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

握住你手 2024-12-06 09:19:02

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

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

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

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

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

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

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

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

  • HTTP 轮询
  • HTTP 长轮询
  • HTTP 流式
  • WebSockets

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

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

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

So normally a midtier will generate a webpage for the viewer/browser

I'd disagree slightly with this. I'd say the midtier would generate the data that can then be consumed by the view. The view could be an ASP.NET WebForm, an ASP.NET MVC razor view or it could be a WinForm in a C# desktop application.

If you want true separation of data and view then you should probably consider making the backend of your system a web service that can be consumed by either a website/web application or a desktop client/binary e.g.

SQL DB + File System -> Business Logic/Mid-tier -> View (Web/Desktop/Mobile)

Your first view implementation would be the Desktop C# binary view.

And more importantly, how do i push updates/notifactions from the DB to the midtier and then to the c# app ???

Based on this I'm assuming that you want the C# application to instantly receive the updates and that although your app isn't a web app (HTML/JS etc.) it is in fact a web client.

Notifications like this tend to be achieved in a few ways.

  • HTTP Polling
  • HTTP Long-Polling
  • HTTP Streaming
  • WebSockets

The latter is now the standard for real-time bi-directional full duplex communication between a client and a server. However, if the frequency of updates is very low then you could simply implement a web service which your C# client could poll at long intervals to check for updates.

If the update frequency is reasonable, and your requirement for Push notifications suggests it is, then I'd suggest a realtime push system and therefore I'd suggest using a WebSocket server and client. There are a number of WebSocket server and client examples available such as:

If you'd rather remove the need to implement and host your own realtime messaging infrastructure then you could consider a hosted realtime service.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文