Recently in one of the discussions on Object Space I had posted regarding issues with .NET while developing Apps for the Enterprise.
Then I thought the question I was asking is a bit more than object space hence the new thread. So guys (MS) how long before we have some of the functionality in .NET those Java App servers have (actually not similar implementation as I don’t agree with the way the App servers have been implemented). Also a few additional features like being able to build scalable distributed apps that can run in n-tier configuration without having to build all the infrastructure required. Support for Integration framework using Messaging be it XML or what ever format. Also will we be ever getting an Application server with support for some thing similar to Java Naming Service and so on.
At PDC I noticed that you had done a lot of work on Indigo which I loved and was upset as I wanted them now. Which brings me to my second question why is there such a tight coupling between OS and .NET framework. OS is there to provide a hardware abstraction and all the base services one would need to write software. Then on top you would need something like .NET which can abstract the OS differences to make our life easier. Keeping to that tune one would imagine all the Indigo stuff can be taken out and sold as a separate application server product which can run on any OS (I mean MS OS 2000, 2003). So why not do that and build an application server with all the indigo capability and ship it in next few weeks I really don’t want to wait next 3 years for Longhorn to ship and be RTM'ed. By de-coupling .NET from the OS into an APP server implementation will ease the life of a lot of Enterprise Developers who don’t have to convince the Network Guys to change the OS just so we can use some nice features...you don’t know how hard that is.
Recently in one of the discussions on Object Space I had posted regarding issues with .NET while developing Apps for the Enterprise. http://channel9.msdn.com/AddPost.aspx?PostID=6040
I really want to hear something new from MS. after long conversations and E-mails with MS stuff both in PDC and MVP summit I get the impression that their notion of Enterprise Application rant mine or yours. While marketing people still listen, MS developers just try to convince you that what they done are sufficient.
As I post in object spaces thread, if we won't implement enterprise needs as open source we probably don't have any implementation. Even in the java world, most of the enterprise solutions are open source solutions. Microsoft marketing target isn't Enterprises therefore their effort are tunneled to more wizards and UI features and not to enterprises needs. In the end of the day behind the product you will find peoples and the product is mirror of it developers vision.
I just posted a long response on the other thread before realizing the discussion was spawned here under a new thread title, so here's a link for reference:
Since I'm posting again anyway, I'll add a few more comments along different lines. It's certainly true that Microsoft spends a lot of attention and money targeting people and needs other then enterprise business applications (home users, hobbyists, students, gamers, corporate desktops, etc), but they do put a good share of thinking and investment in enterprise business applications as well. How much depends on which part of the large company.
Microsoft definitely puts a high degree of importance on making their products easy to use, it's a pretty core part of the company culture, so I'm not surprised that sometimes it seems they are too obsessed with their "wizards and UI features". But it's a double edged sword, I'm not sure I'd want them less obsessed with it either.
I mention this in my other post, but I'll add it here as well. You might be interested in checking out http://www.microsoft.com/practices since it is the homepage of the group focused on trying to provide guidance on creating enterprise business systems using the Microsoft platform.
Thanks for your post. I am an avid reader of PAG and the Architecture Journal and must say they are very good initiative and have certainly helped developers mindset expands beyond using tools to the domain of design and you guys are doing a great work. First let me explain where I am coming from. I work for an ISV and we build enterprise apps that sit in the background doing b2b e-comm . So in that respect 90% of our code is server side and 10% GUI. Within our organisation we use everything from Oracle Forms, Clipper, Delphi, VB and .NET.
Firstly .NET is a great platform, Bill Gates may wax and wane about clear type but I think .NET is the best innovation from Microsoft J. A project like Mono when they imitate .NET just goes to show how good .NET is, as they say “imitation the best form of flattery”. From your response I understand most of the things I was asking for bar a few are already available from MS, in the form of COM+, BizTalk and so on. From a developers perspective all these offering are very fragmented and don’t really offer a cohesive unified approach. Enterprise developers are under pressure to deliver a lot in short time frame. A good enterprise application used to take 10 years to write and now is being done in 3. Thanks in part to RAD tools and other code gen advancements. Microsoft has done a great deal in this arena and now just needs to do a bit more. My arguments about enterprise development are two fold.
1. De coupling of APP server from the OS.
2. Better awareness for challenges faced by enterprise developers while using .NET.
- App Server: An ISV when developing software would like to target the broadest audience possible with minimum code change. With applications like COM+, MSMQ and IIS all tied to an OS the ISV/Enterprise Developer is forced to choose the least common denominator of all when developing applications. Looks at all the productive features in Indigo it would be some time before there is a widespread deployment of Longhorn and developers can target that platform. By offering all the futures tied to one OS worked well for MS in the desktop space and we all know the desktop wars were fought and won. The server side space in my opinion is a bit different, if you look beyond mail server and file servers. All other vendors like IBM, Sun and BEA to some respect offer an OS agnostic version of APP Server, except Microsoft. The enterprise developers would like to use the tools to get a job done based on the requirements and not based on the OS that is currently deployed in the data centre. The only way this would be possible is to offer an APP server which will host all the functionality in an OS independent container. This argument can be extended further to say when some one buys a File Server why do they need to pay for an APP server (i.e. IIS, MSMQ,…) that won’t get used. Why not have a pluggable architecture a bit like the Lego set of applications. If all one needs is a super fast file server then just get that and as needs grow add on more modules. This has worked well for other organisations not to mention the consulting dollars for MCS J. I do understand if all Microsoft is interested in is selling OS licence then what you are doing is just fine. But if you are really interested in the server side space and the enterprise developer mindshare then more needs to be done.
- Better support for Enterprise Developers: Traditionally Microsoft has helped developer’s stich its products together to offer a solution. This is fine for an end user application but does not bode well in Enterprise Integration Applications. When one looks all the topics covered in Tech Ed and other MS events they are targeted towards these sort of market i.e. How to integrate Office 2003 with Visual Studio .NET and so on. There is a need and a place for such efforts. How often do we have talks about building scalable distributed applications that can do 100-200 transactions per second and the challenges involved. How often do MS employees talk about the architecture of MSN, Hotmail or MSNBC and the challenges faced in building such systems. Also what lessons can be learnt from these that will help people developing smaller systems, also how would one go about doing the same using .NET.
During the PDC I sat through the Service Oriented Architecture and heard people talking about distributed systems from a tool vendors point of view little was discussed in terms of impact of changing business rules on a system and so on ( i.e. there is too much focus on code and less on more abstract things like business rules). Simple things like difficulty in implementing Model 2 controller or MVC in ASP.Net show that the features in ASP.Net were more targeted toward the small application developer rather than the Enterprise Market. In Visual Studio .NET Enterprise there is a very basic XML editor whiles the bulk of the work done by Enterprise developers revolve around XML Schemas and writing custom WSDL’s. It would have been nice if in VS.NET there was something like XML Spy for working with XML. Most of us get the contract for web services before we develop the web service yet VS.NET insist in using the opposite approach.
That is all for today any more I would end up writing a book…it is time for me to go back to my application. At the end of all this I am not expecting for you tell me that all this will be done by next week or something. I just wanted to plant a thought, “maybe a rethink is required” and one day that thought may grow to become a concrete project.
What did you think of the suggestion by dsuspense regarding something like the Spring.NET framework? Not so much on Spring.NET specifically, but on the idea of an enterprise application framework solving these problems instead of, or in addition to, something like a .NET Application Server? Viable answer? Totally different? No difference? I've got some thoughts on it, but was curious on others reaction first.
Touching on point 2, so far in this thread (and the prior one) I've heard PDC, TechEd, and the MVP Summit all mentioned as not really hitting the interests of professional enterprise application developers. I think my earlier comment relates to this in that some groups in Microsoft are more focused, and some less, on the interests of enterprise application developers. The enterprise application segment of developers in terms of numbers are actually not the majority of MS developers, so when you go to events like PDC that are intended for all MS developers, this becomes pretty noticable. So you do find some stuff that is interesting to an enterprise application developer, but also a lot of it is for other developer segments. Things like MSDN struggle with the same problem since they are focused on the entire MS developer market, again that includes a lot of different developer segments, so it can sometimes be tough to find the applicable and interesting stuff for you. Unfortunately I realize that answer may be insightful but isn't necessarily helpful. I know that the PAG/patterns&practices team has a summit that is focused on enterprise application developers, so you might be interested in looking at that, but it's not a very big event. I'm not sure of any other suggestions.
Generally though your comments and specific ideas are really good ones.
Just my point of view:
.Net Application server: Definitely Yes! I start to look at JBOSS. I think that we should migrate it to .Net. Migrate and not convert because we can use .NET (attributes, codedom/emit, generics, generic aware reflection and app domain) to create more faster and robust solution then JBOSS. But I think that JBOSS is good starting point, eventually several PhD's came out from that project and jboss already prove himself.
I don't think that Microsoft should do it alone. I think that MS with .Net community should do this immigration as open source initiative so both Microsoft and the community can gain benefits.
I don't think that Microsoft doesn't try to get a position in enterprise development. MS try to do it by investing in community, developers and so to penetrate enterprises from low level. Well, that might work (I'm not marketing genius ) but without competitive tools to other vendors in the market I really don't see MS as leading force in enterprise development.