我正在使用 WPF(C# 作为代码隐藏)在 Windows 操作系统中创建一个应用程序,并将数据存储在同一网络中的 Unix 机器中。我的应用程序需要一种与 Unix 机器通信的方法,以从中获取数据并将其显示在 Windows UI(在 WPF 中创建)上。
我的应用程序还需要知道通过广播连接到网络中的所有 Unix 机器。
对于上述要求,使用我的 WPF 应用程序连接到 Unix 机器的最佳方法是什么?
如果您要使用的数据是基于文件的,您可以在 unix 上使用 ftp 或 samba 服务器。samba 服务器的优点之一是它具有广播能力,并允许通过 netbios 发现其在网络中的资源。这将符合您的广播要求。
如果基于文件的存储还不够,请考虑使用 Web 服务。由于您是在 .NET 中编写应用程序,因此在 Unix 端使用 Mono 将是最容易的。您可以在 Mono http://www.mono-project.com/Writing_a_WebService中编写一个 Web 服务,它将监听来自您的 WPF 应用程序的请求。
我承认这个解决方案在性能、可扩展性和可移植性方面并不是最好的,但它对于 .net 开发人员来说是最快的。
关于您的应用程序需要知道 unix 机器列表的另一个要求更为复杂。蛮力方法是拥有一个主服务器,当它们启动时,它将监听来自 unix 机器的通知。它将将该列表提供给 WPF 客户端。
如果你想要一个性能更高、更便携的解决方案并且你有更多的开发资源,你可以使用这些框架之一在 unix 端实现一个 RESTful 服务REST frameworks
就开发时间而言,最复杂的方法是使用裸 TCP ip。这将需要在客户端和服务器端进行大量编码,以及使其稳定的漫长过程。同样,这取决于您的数据交互的复杂程度。
“将数据存储在同一网络中的 Unix 机器中”假设您的意思是它在数据库中,我会推荐某种 ORM(如 NHibernate)