我不是很关注你。MVVM 是小菜一碟,真的与你的问题没有任何关系。今天必须使用基于服务的架构,我只是想打击每个坚持在客户端直接使用 SQL 的老家伙/gal,并且看不到这样做的危险。
无论如何,您可以通过不同的方式解决这个问题。WCF很大,在我看来很大。使用它的一种方法,常见于应用程序(WP8.1,8.1 应用程序++)等小型应用程序,就是连接,调用您需要的方法并关闭连接。鉴于我了解您的需求,案例已解决。另一种方法是让每个服务的会话保持活动状态......(呃,负载平衡等)。
在过去的 4 年里,我自己一直在处理大型 LOB 应用程序,我可以说的是,如果我负责,我会做的非常不同。有一次,我将 JSON 端点与 SSL over HTTP 和 json.net 序列化程序一起使用。WCF 中默认的数据契约序列化程序根本不是好消息。JSON 允许与基于 JavaScript 的应用程序轻松通信,并且序列化程序不会像 datacontract 序列化程序那样崩溃。地址/基地址可能存储在您的配置文件中,因此可能会在部署时更改(您可能有很多服务器,用于不同的环境)。
这是一篇涵盖该主题的非常古老的帖子(除了 JSON 之外还支持 SOAP);WCF 服务的 REST / SOAP 端点
别傻了,现在直接调用你的服务!使用界面(必要时包装)并将其提供给您的视图模型以获得正确的 TDD!它还将允许您用另一种通信形式完全替换 WCF。
WCF 也有替代品。
IIS?在 IIS 中托管 WCF 而不是适当的服务?没办法,把这个想法冲进滑铁卢;)(内部笑话)
编辑:
顺便说一句:您的服务必须已经在运行,您的客户端才能连接到它!或者没有任何东西会监听您配置的端口。如果您是自托管,您可以使用参数以调试模式启动,即像您可以调试的常规应用程序一样启动您的服务。在 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};);
}
希望能帮助到你,
干杯,
斯蒂安