2009-11-23 65 views
2

该公司有一个处于恶劣条件下的PHP应用程序。他们希望开始制定计划来重新设计它,但是他们需要以当前的设计运行,因为各种原因,我不会进入这里。用于数据访问的PHP + .Net Web服务 - 糟糕的设计选择?

他们希望对当前的设计进行一些增强,但这样做的目的是让这些增强功能可以在它们出现时由.NET版本部分重用。这样做的一个想法是使应用程序的数据和业务逻辑部分驻留为一个将被PHP端使用的.NET web服务。

我的问题是这会导致PHP中的问题? PHP能否快速有效地使用.NET Web服务?或者这只是一个糟糕的设计决定?

回答

2

为了使PHP快速使用.NET Web服务,您需要使用PHP5本机SOAP客户端API,从而使缓存可以在本地存储WSDL。如果你使用PHP4,你可以使用Nusoap,但它不像原生类那么快。

0

网络服务的主要优势在于它的互操作性,或被其他语言独立使用的能力。 PHP应该有一些东西可以让它消费Web服务,这样就可以实现;不会太大。缺点是可能会稍微慢一些,但这是您必须测试才能看到对整体解决方案有多大影响的问题。一般来说,大多数解决方案本质上并非对错,你必须测试它们对你的特定情况的有用性。

0

只要远离基于WSHTTP的Web服务并使用BASIC HTTP,PHP就可以使用.NET Web服务。为了安全起见,您可以使用SSL保护BASIC HTTP Web服务。当你在Visual Studio 2008中,并且你有一个ASP.NET(可以是MVC或不是,无所谓)项目打开时,右键单击该项目并选择“添加新项目”。您会看到Web下的一些东西,名为Web Service。这将创建一个.asmx文件,您可以找到有关如何创建这些基本Web服务的教程。

另一种选择是使用Windows Communication Foundation,它有很多有用的类,但它可能更复杂。 WCF服务的默认配置是WSHTTP,但也可以使用WCF创建BASIC HTTP Web服务。

4

我的问题是这会导致PHP的问题 ? PHP能否快速高效地使用.NET服务? 或者这只是一个糟糕的设计决定?

我在这里有两个想法。首先直接回答你的问题。我不相信这是一个糟糕的设计,如果.NET服务是书面语言不可知的,那么应该没什么问题。

第二个想法是一个“希望”。我希望选择使用.NET框架并不是因为写得不好的PHP。在我看来,由于执行不力,语言的改变是设计失败的地方。如果公司选择重新编写PHP,将会有更多的努力转化为新的语言,最终的结果将是一个内置传统支持的统一语言基础。但后来我是一个PHP粉丝。

2

Web服务的重点在于各种开发平台之间的互操作性。例如twitter是一个基于Rails的网站,它的服务通过其RESTful web-api以.NET,java,python等编写的各种桌面和网络应用程序消耗。就我所知,Facebook是基于PHP和C++的,并且有多少webapps通过api来使用它的服务。所以我不认为这是一个坏主意。问题是你如何实现这个web服务。意思是,你想使用它一次,然后摆脱它或长期起诉。如果第二个选项是真的 - 确保你设计你的web服务API。另外PHP可以轻松使用XML-RPC和SOAP。我使用了两个(由基于Perl的服务提供),没有任何问题或者对性能影响很大。

我认为使用.NET从PHP迁移不是最明智的选择 - 但这是有点主观的观点。根据我的经验,由于野兽的性质,它几乎总是以矫枉过正,设计错误,维护费用高昂和更多的车辆而告终。

P.S .: 我不是一个PHP迷,但我不相信为了转换而转换到.NET。 .NET基础架构的维护成本也更高,而且需要更多的劳动力。

0

根本没有什么问题,只是调查你的选择。

网络服务可以输出各种格式的数据。 SOAP/XML是默认的,但没有理由不能做YML,Xml序列化对象或我目前最喜欢的JSON(这使得从浏览器调用它非常容易)。

看看WCF服务,我相信他们应该取代Web服务格式。

最后,如果您正在寻找最佳实践,请查看S ervice Oriented Architecture。它是一个庞大而多变的领域,这正是他们所谈论的事情。