SOA,将方法公开为服务是一个好主意吗?

时间:2011-09-17 06:11:42

标签: c# soap soa sca

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

这样你不需要在你想要改变方法时重新编译,你可以改变你需要改变的任何东西,但它带来了网络开销:(

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

4 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

This way you do not need to recompile when you want to change the method...

事实并非如此。如果需要更改方法,则需要重新编译Web服务主机。

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

答案 2 :(得分: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 - 只要公共和类签名保持不变 - 你就可以了。

答案 3 :(得分:0)

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

但是,如果只有您的主程序访问此方法,那么使用它作为库是更好的方法。