2011-09-17 61 views
1

示例不是在您的主程序中创建类库并引用它,而是将该方法公开为Web服务。SOA,将方法公开为服务是一个好主意吗?

这样,您就不需要重新编译,当你想改变的方法,你可以改变你需要什么但是改变,它配备了网络开销:(

这样做,但不能肯定的思考。(不顺心的网络开销似乎没有必要???)。

回答

2

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

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

这是不正确的。如果你需要改变的方法,你需要重新编译Web服务主机。

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

+0

是的,你需要编译Web服务,但不是消费者客户端应用程序。 – 001

+0

是的,如果系统的整体架构假设有客户客户端应用程序,那么使用SOA是一个好主意,正如我所提到的。 –

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的 - 只要公众和类签名保持不变 - 你的罚款。

+0

多数民众赞成如何你写一个标准的程序:) – 001

0

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

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

相关问题