1

示例 不是创建类库并在主程序中引用它,而是将方法公开为 Web 服务。

这样,当您想更改方法时无需重新编译,您可以更改任何需要更改的内容,但是会带来网络开销:(

考虑做但不确定。(不喜欢网络开销似乎没有必要???)。

4

4 回答 4

2

解耦层是一个好主意的原因有很多,SOA 是实现这一目标的最激进的解决方案之一,但避免编译使用组件可能不是决定是否要解耦的好标准。

于 2011-09-17T06:25:38.687 回答
1
This way you do not need to recompile when you want to change the method...

这不是真的。如果需要更改方法,则需要重新编译 Web 服务主机。

只有当您拥有分布式网络应用程序时,使用 SOA 才是一个好主意,而且很可能还需要跨平台。如果本地应用程序使用服务来执行应用程序的常规任务是错误的。

于 2011-09-17T06:20:13.637 回答
0

您可以在不使用 Web 服务的情况下实现 SOA 样式。这将模仿您试图实现的分离。只要公共方法没有改变——那么你就不必重新编译消费者。唯一不正确的情况是您使用版本化文件并且更改了版本。

public class MyFakeService
{
   public static int DoSomethingHere(int value1, int value2)
   {
       // Do stuff here

   }
}

现在在您的消费者中......

public void MyMethod()
{

int value1 = 3;
int value2 = 4;

int newvalue = MyFakeService.DoSomethingHere(value1, value2);
Console.WriteLine(newvalue);

}

无论您如何更改 MyFakeService - 只要公共和类签名保持不变 - 您都可以。

于 2011-09-17T11:49:06.157 回答
0

Web服务的想法是不要停止重新编译。如果您不了解客户端并且需要在客户端和服务器之间建立公共通信路径,则应该使用 Web 服务。例如,当您部署 Web 服务时,即使是 .Net 客户端也可以通过查看 wsdl 并调用服务来生成代码。

但是,如果只有您的主程序访问此方法,则将其用作库是更好的方法。

于 2011-09-17T15:35:08.537 回答