我正在开发一个需要在表层(基于MVVM的客户端)和业务层之间进行通信的项目。应用程序将安装在单个计算机上,因此可以使用基于.net远程处理的方法执行。但是,我被建议使用WCF,因为.net远程处理已被弃用,WCF是可行的方法。
所以我将WCF服务实现为WCF库项目。我添加了一个服务引用(通过在解决方案中发现服务使用visual studio工具),它已在客户端成功添加。一切正常,因为在调试会话期间,visual studio启动服务库,客户端可以成功连接到它。
现在,由于客户端和服务主机将安装在同一台机器上,我正在考虑使用命名管道传输和自托管WCF服务。这对我来说非常混乱: -
答案 0 :(得分:0)
我不是很关注你。 MVVM是蛋糕,真的与你的问题无关。今天使用基于服务的体系结构是必须的,我只是想要在客户端坚持使用直接SQL的每个老家伙/ gal,并且不要看到危险。
无论如何,你可以解决这些不同的方式。在我看来,WCF是 BIG 。一种使用它的方法,在应用程序(WP8.1,8.1 apps ++)等小应用程序中很常见,只是连接,调用所需的方法并关闭连接。案件解决了,因为我了解你的需求。另一方面是为每个服务保持会话活跃......(呃,负载均衡等)。在过去4年里,我一直在研究大型LOB应用程序,我能说的是,如果我负责,我会以非常不同的方式完成它。曾经,我会使用带有SSL over HTTP的JSON端点和json.net序列化器。在WCF中默认的datacontract序列化程序根本不是好消息。 JSON允许与基于JavaScript的应用程序轻松通信,并且序列化程序不会像datacontract序列化程序那样像瓷器那样破坏。地址/ baseaddress可能存储在您的配置文件中,因此可能会在部署时更改(您可能有许多服务器,适用于不同的环境)。
这是一篇非常古老的帖子,涵盖了主题(支持SOAP除了JSON); REST / SOAP endpoints for a WCF service
不要愚蠢,现在就直接打电话给你的服务吧!使用界面(必要时换行)并将其提供给您的viewmodels以获得正确的TDD!它还允许您使用其他形式的通信完全替换WCF。
还有WCF的替代品。
IIS?在IIS中托管WCF而不是正确的服务?没办法,把这个想法从滑铁卢中冲下来;)(内部笑话)
修改强>
BTW:您的服务必须已经运行,以便客户端连接到它!或者什么都不会听你配置的端口。如果您是自托管,则可以使用参数在调试模式下启动,即启动您的服务,就像您可以调试的常规应用程序一样。在Program.cs中;
if (args.Length > 0 && String.Equals(args[0],"debugmode", StringComparison.OrdinalIgnoreCase)
{
Service1.Create(); // Debugging!
}
else
{
// Hosting
service = new Service1{ServiceName="YourService"};
ServiceBase.Run(new ServiceBase[] {service};);
}
希望它有所帮助,
干杯,
了Stian