简体   繁体   English

将IIS / ASP.NET站点移植到LAMP?

[英]Port an IIS/ASP.NET site to LAMP?

I run technology for a medium sized company that is about to acquire another medium sized company. 我为一家即将收购另一家中型公司的中型公司运行技术。 Our technology is all LAMP (Linux/Apache/MySQL/PHP), the company we are acquiring is all Microsoft stack (IIS/MSSQL/ASP.NET). 我们的技术全部是LAMP(Linux / Apache / MySQL / PHP),我们要收购的公司是全部Microsoft堆栈(IIS / MSSQL / ASP.NET)。 None of the developers on staff currently do .NET nor have ever supported Microsoft server infrastructure. 目前,没有任何开发人员会使用.NET,也从未支持Microsoft服务器基础结构。 I'm having a tough time deciding what to do with the situation... 我很难决定如何处理这种情况...

Do we port all the MS stuff to LAMP (not interested in going the other way for various reasons including my team's personal inexperience with it, the cost of licensing when we are trying to slash overhead, etc)? 我们是否将所有MS东西都移植到LAMP(由于各种原因,包括我团队的个人经验不足,在尝试削减开销时的许可成本等,对以其他方式不感兴趣)?

Do we run both technologies in parallel with separate teams to support each and write a bunch of middleware so they can talk to each other? 我们是否将这两种技术与独立的团队并行运行以相互支持,并编写大量中间件,以便他们可以相互交流?

Neither of these choices are optimal. 这些选择都不是最佳选择。 Has anyone ever been faced with a situation like this and how did you proceed? 有没有人遇到过这样的情况,您如何进行? Keep in mind we are talking about large infrastructure in both cases with high traffic volumes and fairly extensive backend systems. 请记住,在这两种情况下,我们都在谈论大型基础架构,高流量和相当广泛的后端系统。 Any ideas will be welcomed. 任何想法都将受到欢迎。

I've never done this before, so take my opinion with a grain of salt. 我以前从未做过此事,因此请多加保留。 But I would suggest NOT rewriting an existing application. 但是我建议不要重写现有的应用程序。 I mean, if it's a 1-page application which just tells you "Hello" when you click a button, then yes, rewrite it in PHP. 我的意思是,如果它是一个1页的应用程序,它在您单击按钮时告诉您“ Hello”,那么可以,用PHP重写它。 But business applications that make money aren't as simple as that, and you'll be starting from scratch to rewrite something that took the other company x years to develop. 但是,赚钱的业务应用程序并不是那么简单,您将要从头开始重写某些东西,而这花了另一家公司x年的时间。 Not to mention you'll have to support and maintain the application you're taking over, even while you rewrite it in PHP. 更不用说即使在PHP中重写应用程序,也必须支持和维护您要接管的应用程序。

If you have smart developers on your team now, and they have capacity, they'll be able to learn ASP .NET. 如果您现在在团队中拥有聪明的开发人员,并且他们有能力,他们将能够学习ASP .NET。 But it might be best to hire some ASP .NET resources to help your team learn it and bear the weight (maintenance and support) of the application you're taking over. 但是最好是租用一些ASP .NET资源来帮助您的团队学习它,并承担您要接管的应用程序的负担(维护和支持)。 Your teams can work together to find integration points between the two applications. 您的团队可以共同努力,找到两个应用程序之间的集成点。

Faced with the choice of writing integration points, or writing an entire business application from scratch, I'd take my chances at writing integration points. 面对选择编写集成点或从头开始编写整个业务应用程序的选择,我会把握机会编写集成点。

As part of the acquisition, are your company taking on the IT support team of the acquisition? 作为收购的一部分,贵公司是否要承担收购的IT支持团队?

While eventually there are likely to be 'efficiency savings' that they'll want to make from consolidating back office staff, there is a strong argument to keep both teams supporting their 'own' systems in order to keep the lights on. 虽然最终他们可能希望通过合并后台人员来实现“效率节省”,但是有强烈的理由认为,让两个团队都支持自己的“自己的”系统以保持正常运转。

Then you need to analyse the overlap - do you end up with systems on each stack doing similar things. 然后,您需要分析重叠部分-您是否最终使每个堆栈上的系统执行相似的操作。 If so, look to consolidate onto the preferred platform and remove the other. 如果是这样,请考虑合并到首选平台上,然后删除另一个平台。 Also look at (regardless of current skills), which stack best needs the business needs in the coming years. 还要看看(不管当前的技能如何),这些技能最能满足未来几年的业务需求。 LAMP might be perfect right now, but there may be arguments for moving to .net to meet future needs. LAMP现在可能是完美的,但是可能会有争论转向.net以满足未来的需求。 Then again maybe not, but needs to be assessed. 然后也许不是,但是需要进行评估。

Is there a business need for the 2 sets of systems to share data? 这两组系统共享数据是否需要业务? If so, at what level? 如果是这样,在什么级别? Creating (web)services to encapsulate shared functionality and make it available to the other system may be one way to go (SOA effectively). 创建(网络)服务以封装共享功能并使其可用于其他系统可能是一种方法(有效地实现SOA)。 Alternately you may need to share a backend initially and have .NET talking to a MySQL databases or somesuch. 或者,您可能最初需要共享一个后端,并让.NET与MySQL数据库或类似数据库通信。

This is a very complicated question. 这是一个非常复杂的问题。

If the two applications provide similar functionality, then I would run both side by side until the one you want to keep has all of the functionality of the other one. 如果两个应用程序提供相似的功能,那么我将并排运行直到您要保留的应用程序具有另一个应用程序的所有功能。 Then I'd switch the customers over and eventually throw it away. 然后,我将客户切换过来,并最终将其丢弃。 If the customers are receptive, switch them now. 如果客户接受,请立即切换。

If they are radically different apps then I'd most likely just maintain both going forward. 如果它们是截然不同的应用程序,那么我很可能会继续保持两者。 Given that these are large applications, any rewrite is going to be painful and have a high probability of failure. 鉴于这些都是大型应用程序,因此任何重写都将是痛苦的,并且很有可能失败。 It's best to just get used to the idea of having different tech stacks in house. 最好只是习惯于在内部使用不同的技术堆栈的想法。

One thing, by maintaining both apps you will be in a better position to keep the acquisition as quiet as possible as far as the client base is concerned. 一件事,通过同时维护这两个应用程序,您将处于一种更好的位置,可以尽可能地减少对客户群的收购。 Clients that already use an app typically only change horses if they feel the app they are using is no longer going to be supported. 已经使用应用程序的客户端通常只会在感觉不再支持使用的应用程序时换马。 At that point, you can guarantee that some will leave regardless of how good the other system is. 到那时,您可以保证无论另一个系统的性能如何,其中一些都会离开。

If the acquisition is going to result in a change in marketing (for example, the other company's logo changes etc) then I would again suggest to just maintain both. 如果收购将导致市场营销发生变化(例如,另一家公司的徽标发生变化等),那么我再次建议仅保留两者。 The clients are going to be nervous enough as it is. 客户会很紧张。

The point of all the above is that this is more of a business problem than a tech issue and boils down to the reasons you acquired the other company in the first place and how you will present it to the existing clients. 综上所述,这不仅仅是技术问题,更是业务问题,归结为您首先收购另一家公司的原因以及如何将其展示给现有客户。 If the company was acquired for the technology or their client base, then leaving it alone is a good idea. 如果该公司是为该技术或其客户群而收购的,那么不理会它是一个好主意。

BTW, I've done this a couple times. 顺便说一句,我已经做过几次了。 The only difference was going the other route from PHP to .Net. 唯一的不同是从PHP到.Net的另一条路。

In one case the app was relatively small, but had a huge base of users. 在一种情况下,该应用程序相对较小,但是拥有大量的用户。 We ended up using some URL rewriting rules so that the user base never even knew the app changed underneath them. 我们最终使用了一些URL重写规则,以便用户群甚至都不知道在其下面的应用程序已更改。 It was a collection of web services. 它是Web服务的集合。

In another case, the app was large, had a big user base, and had a very public skin. 在另一种情况下,该应用程序很大,拥有庞大的用户群,并且具有非常公开的外观。 Again, we heavily leveraged url rewriting to preserve google placement as well as bookmarks. 同样,我们大量利用URL重写来保留Google位置以及书签。 The biggest problem we had was development on the original site couldn't stop while we built the replacement. 我们遇到的最大问题是,在我们构建替代产品时,原始站点上的开发无法停止。 This presented a lot of challenges in that every feature had to go through both teams. 这就带来了很多挑战,因为每个功能都必须经过两个团队。 In the end, the project took about 3 times longer than expected but because we had some highly skilled people on it it ultimately succeeded. 最终,该项目花费了比预期多三倍的时间,但是由于我们拥有一些高技能的人才,因此该项目最终获得了成功。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM