Welcome to MSDN Blogs Sign in | Join | Help

Welcome to The Metaverse

Navigating the service-oriented, identity aware metaverse

News

  • Disclaimer:
    The content of this blog are my own personal opinions and do not necessarily represent Microsoft's position, commitments or strategy. In addition, my thoughts and opinions often change, and as a weblog is intended to provide a semi-permanent point in time snapshot you should not consider out of date posts to reflect my current thoughts and opinions.




    Add to Technorati Favorites
When to use ASMX, ES or Remoting

This subject never ends!

I have just got back from MGB (Microsoft Global Briefing) where I engaged in many, many conversations with our technical and architectural consulting staff. By far the most pressing questions were around Service Orientation which I will cover in later posts, and “when should I use ASMX, ES or Remoting” ... or in more direct terms, “whaddya mean we shouldn't be using .NET Remoting for Project x?????”.

On my return to Redmond this morning, there were three emails asking questions about this and a few people asking for my view of blog conversations (such as this one on Rocky Lhotka's site and this one on Michele Leroux Bustamante's “DasBlonde” site) discussing the same subject. Rather than answer each one individually, I thought it best to share this information more broadly ...

Okay, to answer the question, let's bear in mind the Four Tenets of Service Orientation while we discuss our options:

  1. Service Boundaries are Explicit
  2. Services Are Autonomous
  3. Services expose Schema and Contract, not Object and Type
  4. Services integrate using Policy

Let's start by considering a few key scenarios and which technologies are most appropriate:

I am building my service boundary
Use ASMX enhanced with WSE if required. By implementing your service in ASMX/WSE, your service will automatically have an explicit boundary, expressed in a standards-based schema, sharing standards-based schematized data documents and will communicate over open standards transports. This cannot be said of ES or Remoting components!

Inside my service, I need to spread my implementation across n physical tiers and therefore need to call objects on remote machines
If you can implement the logic on each of the physical tiers as individual services, do so! By implementing mini-services inside your larger service, you'll be more closely aligning yourself with Microsoft's entire Distributed Applications strategy and will reap great benefits when Indigo is released.

Operations within my Service involve retrieving, storing and processing high volumes of complex data and requires many traversals between objects
Consider consolidating the code which performs the highest number of communication traversals on the same physical box to avoid the penalty imposed by traversing the network.

Consider creating Mini-Services for the portion of your Services that are most intensive implemented as ASMX Web Services which broker calls to internal ES/COM+ logic or databases etc. The reason for this is that Web Services have a great scale-out story and enables you to quickly, simply and effectively improve the scalability of the most computationally or communicatively expenive parts of your system through the use of Load Balancing.

If you must physically separate components (ie: on separate boxes) which need to exhange large amounts of data or communicate intensively, use .NET Enterprise Services (ES) components on each tier. Design all methods to be as chunky as possible (aim to perform a complete business operation in one traversal wherever possible). The reason we opt for ES here is that ES uses DCOM on the wire and is by far the fastest technology on the Microsoft platform for remoting object invocations and data exchanges. Again, consider wrapping access to this portion of your Service with an ASMX service. You can then take advantage of the scalability improvments that Load Balancing can give you as discussed above.

If you call ES components on the local box, consider configuring and activating them as Library (in-process) rather than Server (out-of-process) components wherever possible - especially if you are able to locate all Web Service and ES/COM+ code on the same physical box.

I need to handle custom message formats on the wire
This is one of only two scenarios where the use of .NET Remoting is recommended today. .NET Remoting gets you very close to the wire and allows you to write your own custom formatters and sinks etc. This allows you to directly format the message going onto or coming from the wire.

I need to communicate between two components in different AppDomains inside the same process
This is the second of the two scenarios where .NET Remoting is recommended. Remoting has explicit high-performance support for cross-AppDomain communications. Note that this is only for communications between AppDomains inside the same process. If you have two .NET components that must be hosted in two different processes (on the same machine), we recommend implementing the logic as .NET ES components hosted in COM+.

Okay, so hopefully we now understand these scenarios, let me just make a few statements. Some may be a surprise, some may repeat things I (and others have already said). Hopefully, but the end we'll have cleared up a few misconceptions:

.NET Remoting is NOT the fastest way to call a remote object!
.NET Enterprise Services is! We're currently preparing a paper that will be published on MSDN in a few weeks which clearly illustrates this fact. Note that by remote, I mean an object that runs in a process remote from yours ... whether it's on a remote process or a remote machine!

Networks annihilate performance!
While networking technology has improved enormously in terms of performance, so have motherboards, processors, memory and disks. So much so in fact that in relative terms, the network is now slower than ever before compared to the speed of the processor. This means that (again, in relative terms) your code has to wait longer than ever before for data to traverse a network. There is a truism that “in the world of distributed computing, try not to touch the network” and it's never mattered more than today!! Of course, sometimes we must and that's why we build technologies like ethernet, frame-relay, TCP/IP, RPC, DCOM, IIOP, HTTP, FTP, HTML, SOAP, etc. But it doesn't matter which technology you use ... it rarely matters how big your payload or how fast your data stream, traversing the network will significantly slow your system. So, if you don't have to traverse the network, don't! Try and co-locate as many things that need to talk on the same physical box. Where you must traverse the network, do so as infrequently as possible.

Chunky interfaces remote better than chatty ones
Following on from the point above ... I can't count the number of times I have been asked to troubleshoot a system which “is performing badly” only to find that some poor design/implementation choices have forced the underlying remote object technology to traverse a network multiple times per use of a given object. Instead of implementing logic on the caller that, for any one business process, makes many calls against a remote object, instead consider moving the logic to the remote component and calling it once. The performance improvements from such simple changes can be colossal!

DO implement interfaces such as ...

[Serializable]
class Customer
{
    string name;
    int age;
    DateTime dob;
}

[WebService]
class CustomerServices
{
    ...
    [WebMethod]
    int AddCustomer(Customer cust);
    ...
}

DO NOT implement interfaces like this:

class CustomerServices
{
    ...
    int CreateCustomer();
    void SetCustomerName(int id, string name);
    void SetCustomerAge(int id, int age);
    void SetCustomerDob(int id, DateTime dob);
    ...
}

[N.B. Both of the above examples are used purely for illustrative purposes and are not necessarily how one would go about designing a real customer services application.]

The latter sample requires several method calls to create and then initialize a Customer and if the customer object is remote, this will result in several network traversals - one for each method call (plus a few extras that your Distributed Application technology adds on top). Obviously, this is a poor design for a distributed component, but you'd be amazed at how many such designs are out there in the wild!

ASMX & WSE are your best bet for building interoperable Services today
By now, you should be getting the picture with Web Services and should hopefully be understanding their value. Of course, one of the largest forces driving the IT world towards standardizing on wire protocol support is the fact that all our customers are fed up with having to deal with a million incompatible API's and protocols. Web Services are the best chance we have of building applications that are broadly interoperable. The best way to build such services today is by building your services using ASMX and enhancing these services with WSE if you need next-generation Web Services protocol support such as WS-Security.

.NET Remoting is NOT a good bet for this goal. Remoting uses an older SOAP Encoding mechanism which means it will not be broadly interoperable moving forward. Also, .NET Remoting does not support WSDL which is why you have to ship assemblies from the server onto the caller. It also has no security mechanism built in and is not Microsoft's strategic technology for Service development. All in all, .NET Remoting ? Web Services!

So where are we?

Hopefully, this post should have cleared up most misconceptions around a number of subjects related to where to use Microsoft's current stack of Distributed App technologies in different scenarios and where not to use those technologies.

Moving forward, Indigo will provide an alternative path for those implementing Service Oriented Distributed Applications (SODA ... oh no ... I've just coined another acronym!!! Like we needed any more!!!!). The Indigo path will be more consistent, powerful, flexible and extensible than anything that has been seen before. It will reset the bar by which all other SODA platforms are be measured. Tall claims, and some may say, biased. Nonetheless, bear with us. As they say (in the UK at least!), "the proof is in the pudding". We're now engaging our Technical Adoption Program (TAP) and Beta planning is underway so before too long, you'll be able to experience for yourself the benefits of Indigo.

Posted: Wednesday, July 21, 2004 5:31 PM by RichTurner666

Comments

TheChaseMan's Frenetic SoapBox said:

# July 21, 2004 10:45 PM

John Cavnar-Johnson said:

Bah! Once again you guys at Microsoft dis MSMQ by ignoring it. I'm frankly astounded that you could discuss this and not even mention MSMQ. Explicit boundaries - MSMQ's got it. High perf across the network - MSMQ'S got it. Custom message format - MSMQ's got it.

The worst thing about this advice is that you're still playing to the object-oriented obsession of developers. We all know that using distributed objects is a suboptimal approach to distributed computing. Just when I think that Microsoft is getting it (WSE 2.0 and Indigo certainly have good support for messaging applications), you come out with crap like this. Not that I disagree with anything you said (every bit of it is true), but what you left unsaid is so much more important for developer who really want to develop high-performance distributed apps.
# July 21, 2004 10:05 PM

Timothy said:

Rich, what's your opinion on the use of remoting for monitoring the internals/configuration of a Windows service, as described in the following MSDN article?

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dndotnet/html/config_winservices.asp
# July 22, 2004 12:37 AM

anon said:

Many organizations have several layers of firewalls separating the web machines from the app/db machines. Aren't there some configuration issues with getting DCOM to work through firewalls without a bunch of jumping through hoops or leaving gaping holes in the firewall? One of the nice things about remoting is that you can specify exactly which port(s) you want to use, no need for RPC Mapper or anything like that.

Comments?
# July 22, 2004 7:08 AM

drebin said:

It seems to me that things have come full circle.

Apps went from server, to client-server, to n-tier client server, and almost back to client-server. Middle-tier performance and functionality is just too much of a hit - the important stuff needs to be done right in SQL. It seems everyone is moving away from middle tiers because it's too much work, for slow performance and limited re-unsability (because there are no two requirements that are the same).

Point is, MSMQ has it's place, but I think it's VERY limited in terms of security, speed (obviously) and how complex you get. Remoting seems too complex and Web Services seem too slow and bloated. And there's always DCOM? Ugh. No.

So - even if I did want to do any sort of middle-tier handling, doesn't seem like there
are any reasonable alternatives. If you are in-house, remoting makes sense; if on the internet then web services makes sense - but I don't think we are there yet in terms of a good solution that is fast and powerful.
# July 22, 2004 8:43 AM

anon said:

Once you get past a few learning curve issues with remoting, it is actually quite simple to use...speed is not too bad if you use TCP channel with Binary Formatter...
# July 22, 2004 9:33 AM

Rich Turner said:

A few responses to the above comments

On MSMQ:
--------
Sure, you can put whatever you like in the message body, but the message on the wire is still a proprietary message format. This is why one needs an MSMQ-MQ bridge technology in order to get these two systems to talk together. MSMQ is also not without other problems - message limit of 4MB, little built-in security, etc. Don't get me wrong, MSMQ is near and dear to my heart - it's saved my life on a number of occasions. I'll write up our queueing story in a subsequent post - I was talking to the MSMQ & Indigo Queueing guys just this morning! Bear with me ;)

On OO vs. Messages:
-------------------
Sure, distributed object technologies are not particularly well suited to distributed environments. This is something I have said a number of times now. The future is all about message passing, but messages comforming to schemas with broad support. HOWEVER, one shouldn't remember that the primary developer experience remains, and will continue to remain classes and objects. Technologies such as Indigo allow the developer to use either a messaging type mindset or an OO type mindset, but without much of the risk associated with either.

On Interop
----------
Will blog on this individually.

On the Firewalls issue
----------------------
Will blog on this individually.

On Drebin's post above
----------------------
I think that what we're seeing is that pragmatism is coming to the fore and we're applying the necessary functionality and logic in the cloud and trying to make it as accessable, available and flexible as possible. Stating that middle-tier functionality is too much of a hit does not deal with why. Sure there are some challenges right now, but the problem is that even when we build n-tier systems, we still treat them monolithically. By adopting a SO mindset, we eradicate many of the assumptions that mame our perf or interop or availability etc., and introduce less ambiguity and introduce more agility without the usual hindrances.

You're right that today, you have to make some choices about which technology to use to host/expose your services. In the future, this will become less of a problem since technologies such as Indigo provides a more globally applicable platform.
# July 22, 2004 1:51 PM

John Cavnar-Johnson said:

Re: MSMQ

Yes, MSMQ uses a proprietary message format. As does DCOM and Remoting (effectively). In truth, the on-the-wire format is not that important to most projects (even when it should be unfortunately). That said, I'm looking forward to WSRM. The 4MB limit is an annoyance, to be sure, but little else. It's very easy to overcome. As far as security, only DCOM has a better story here (although I really think that's more theory than practice because a vanishingly small number of organizations really are able to implement DCOM security). However, you don't even mention the whole host of problems that you get when you bring ES and DCOM into the mix of a .NET application. Every major project that I know of (and I'm talking about dozens of projects) that uses ES has run into serious bugs that really threatened the success of the project. Let's face it, when people like Sam Gentile and Clemens Vaster have problems implementing a solution with your technology, there is something seriously wrong.

Re: OO vs Messaging

You've succintly expressed the fundamental problem with Indigo (although I assume you meant either "should remember" or "shouldn't forget"). Your tools are all about classes and objects, but the real world isn't[1]. You don't have to hide messages from developers. You need to promote "message" to a first-class concept, on a par with "object" and "data". I want to see a Message Designer tool equivalent to the Class Designer in VS 2005. I want to have a Strongly Typed Message like the Strongly Typed Dataset, and I don't want to depend on fragile technology like the XML Serializer to make the transition. Real business developers (you guys call us Morts) have been using "message-like" constructs since the beginning of programming (C structs, COBOL records, all those one row ADO Recordsets that got passed around). It's about time Microsoft gave us some better tools. Indigo could be the vehicle for those tools. It has all the right ingredients, but your team seems to think that messages have to be "low-level" plumbing that only bitheads are interested in.

[1]http://weblogs.cs.cornell.edu/AllThingsDistributed/archives/000486.html
# July 22, 2004 2:59 PM

Rich Turner said:

Actually, you couldn't be more wrong!

In Indigo, messages are a first-class concept. In Indigo, one can pass and consume messages or one can expose a service implemented as a class and have Indigo do the necessary serialization and de-serialization to / from SOAP (as in ASMX today). In the version of Indigo we released at PDC, Message-based programming was performed at a lower-level of the API stack, but things have changed a lot since then. There is now one Indigo application programming model and messages and services live there side by side.

As I said, we strongly believe that developers are going to want to deal with Customer.RequestNewPin() rather than parsing XML. This is why we're doing HUGE amounts of work to completely revamp our XML serialization engine so that we can serialize and de-serialize code-bound structs and method calls to/from the wire.

Oh, and ADO recordsets are not "messages" - they truly are serialized objects. The difference is that it would take considerable effort to deserialize an ADO recordset on a non-Microsoft platform since ADO serializes a bunch of infrastructure stuff into the payload that allows an ADO object to be reconstructed at the receiving end. On the other hand,[Serializable] structs and classes are very concise and don’t serialize .NET specific infrastructure goop. [Serializable] objects will serialize to conform with the WSDL published schema so any receiver can more easily de-serialize such constructs.

I can't make concrete statements around tools for Indigo right now, but I would be surprised in the extreme if we don't see decent service design surfaces and tools that evolve from Whidbey’s Whitehorse toolset released in Orcas (version of .NET and Visual Studio that ships around Longhorn timeframe). Indigo Message types should essentially be WSDL declared types and Whidbey ships a great WSDL design surface.

With regards your issues with wire formats. Yep, MSMQ, ES/COM+ are proprietary formats and Remoting has SOAP encoding issues moving forward. This is exactly the point of what I have been saying. If you use these technologies in order to publish your services, the only platforms and technologies which can consume these services are ones which can understand these protocols.

This doesn't mean platforms & technologies other than Windows, it includes Windows also. If you can write pure .NET applications that avoid interop (and encapsulate any interop scenarios that are absolutely necessary) then you're going to be in a much better place in general. If you can do this, there's less switching between native and managed code stacks, more security and reliability assurances will hold true and your apps will generally perform and operate better.

You’re only looking forward to WS-ReliableMessaging? What about WS-Security – this overcomes the limitations of DCOM security that you pointed out and is available for production use today in WSE2 and will be in Indigo too. What about WS-SecureConversation, WS-Trust, WS-Discovery and WS-Addressing? Support of the WS-* protocols will drive a level of sophistication, flexibility, interop and power into our apps and infrastructure that has never existed before.

I am sorry you’ve had problems with ES, but it is still not a technology to dismiss so easily. Sure, there are some things you need to take care of, but it does provide a powerful, stable, secure app hosting infrastructure and programming model, and let’s face it, it’s a heck of a lot easier to develop .NET ES code than COM+ C++ code. Clemens and I actually worked together to create Proseware (a substantial SO sample that will be published soon). I left all the coding to him and in the original versions he opted to implement each service’s internal logic in ES. We’ve since modified some of the services so that they expose a variety of programming and hosting models (for the purpose of illustration), but the internals of each service are invisible to the other services, nothing else needs to know when that happens. You’ll be glad to know that we also have MSMQ in there too to illustrate how to buffer two parts of a system with different reliability/availability/performance characteristics.

Have we got it all right? No. Have I (or any other Microsoftie) ever claimed that? No. Will we ever get it all right? No, but we'll have a damn good try! We're in a transition period right now. We're moving from native to managed code. We're creating managed infrastructures that supercede the capabilities of prior native equivalents. In the meantime, we're providing bridges to help you cross to managed code with us. Bear with us - this will take some time, but we will get there. Indigo will be a truly major piece of infrastructure which will eradicate vast areas of difficulty that plague us today.
# July 22, 2004 3:56 PM

John Cavnar-Johnson said:

No one would be happier than me if I’m wrong, but the rest of your comments don’t give me much hope. Specifically when you say “we strongly believe that developers are going to want to deal with Customer.RequestNewPin() rather than parsing XML”, that suggests that the programming model offers a choice between ASMX style (pretend the service is an object) or the WSE 2.0 style (which to my mind is far superior to ASMX). Even in WSE 2.0, the developer has to choose between processing raw XML or depending on the XML Serializer to perform its black magic to cruft up an instance of a class. Yes, I know about custom formatters. I’ve written several for System.Messaging because I hate being forced to make that choice and I’m working on converting them over to WSE 2.0.

Here’s exactly what I want from Indigo. I want a tool to design Message types, e.g. the PurchaseOrder message, that will let me specify the various components of that message (ShipToAddress, BillToAddress, LineItems (a collection of 1 or more LineItem), etc.) This tool would either start from an existing XML document or let me design from scratch. The output of this tool would be a .NET type and an XML instance document (with dummy data). It would probably also spit out an XSD schema, but that can hidden from the user (no one wants to look at an XML schema, they are just too hideous for polite society). The .NET type would be more like a value type than a typical class. It would have members to hold the values from the XML document (the wire format). It would contain code (generated by the tool, but tweakable by the developer) to move from XML to .NET and back again. It would have no other behavior (no business logic, no validation, etc.). Finally, the tool would let me specify which services send or receive the PurchaseOrder message.

Let me point out what I think the really significant differences between my scenario and what I expect from Indigo:
1. It encourages explicit message definition, treating message types as a primary artifact of system design. This is possible today with WSE 2.0 (and, to lesser extent, System.Messaging, and, if you really dig deep enough, even in ASMX), but the tool support is nearly non-existent.
2. The code that transforms the wire format to the .NET type is visible to and malleable by the developer, not hidden behind layers of formatters, temporary assemblies, and attributes. I think this feature is really important if you want to promote true service orientation.
3. Messages are independent of the services that exchange them. The big problem with WSDL is that the “identity” of a message is tied to a particular service invocation. This is really frustrating when you try to model almost any business process, because the same business document gets passed through any number of services before it reaches its final resting place (usually a relational database).

Now to respond to a few other points. I said I was looking forward to WSRM because most of the other good stuff from WS* is, as you point out, available in WSE 2.0. WSE 2.0 is a considerable advancement of the state of the art in designing and building messaging applications. It’s well-designed with a nice set of extensibility points. I wrote my own “toy” transport in a day and a half. I’m just hoping that Indigo improves on that model. Also, I fully understand what goes with passing an ADO recordset across the network. My point was really this. Business applications fundamentally need a way to describe documents. When your development tools don’t support that, you come up will all sorts of ugly hacks. We VB programmers have been doing it for years. I would assert that the vast majority of all the ADO recordsets that were passed across the wire had exactly one row. Most of us who did it knew, at least in general terms, how horribly inefficient it was. We did it because it was the programming construct we had that most closely resembled a business document. One last point about ES (and I promise I’ll stop berating you about it). The best description I found of Clemens presentation about Proseware included the following line: He even showed where he'd found bugs in the OS and how he'd had to work around them[1]. I would never dismiss Enterprise Services, but I won’t recommend it either, without pointing out that it depends on the interaction of two very complex and powerful technology stacks (.Net and COM+) which have fundamentally different conceptual frameworks. In any event, thanks for the stimulating conversation.


[1] http://benjaminm.net/PermaLink.aspx?guid=87ce6b8b-0fbf-4f0d-86c9-d9e780a1cb6a
# July 23, 2004 10:47 AM

Rich Turner said:

Re Tools:
You should take a look at Whidbey's design surfaces - they pretty much already provide you what you're describing. They'll get better still for Orcas which syncs with Longhorn and Indigo.

Re: Messages vs. Objects:
Messages have their place. Messages are very practical and useful on the wire, but are not particularly developer friendly. Objects are very developer friendly, but have traditionally been a challenge on the wire. Indigo merges these two paradigms making the structure of messages on the wire match internal object representations (and vice-versa), and does not force the developer down the messaging OR object path - the developer can work in either world as they see fit. Indigo does a heck of a lot of work to make the object developer's code message friendly and makes the message developer's world a nice, safe, performant place to live.

Re: Contract First:
You can do this today - you can take a WSDL definition of a service and generate the service stubs and the client proxies using WSDL.EXE (which again, has been significantly enhanced in Whidbey providing more control and less ambiguity)

Re: Malleability of transformation:
We compile the code that performs the wire transformation to method call invocation for perf reasons. In Indigo though, you have complete control over the format of the message and can add your own channel provider to munge, format, transform your message formats as you see fit.

Re: WSE:
WSE *is* the state of the art - that's it's purpose! It's a speedboat release giving you a tactical advantage if you really need to be on the bleeding edge of things. Indigo is a more strategic technology with even more control and flexibility.

Re: ADO:
Agree with much of what you've said although I would suggest that most ADO recordsets returned a collection of information about something rather than just one row (which I agree was all to common an occurrence). You say that ADO recordsets closely resembled a business document ... you had documents that were structured like the ADO recordset object???? Surely not?! ;) To my mind, the reason that many apps ended up serializing ADO recordsets was that developers were frankly just too pressured/unaware/lazy to create a struct declaration and marshal the data between an ADO recordset and said struct. Passing serialized ADO objects between tiers of your system also incurs a huge performance hit compared to passing [Serializable] structs. We're writing a paper right now that clearly illustrates this hit!

Re: ES:
He's absolutely right too! Clemens and I see very much eye-to-eye on most of this stuff ... and with the issues he's pointed out. Proseware illustrates ways to overcome some of these problems. As I said though, we're in transition. Making .NET and COM work together is *NOT* a simple thing. I thought I knew a fair bit about it ... and then I read Chris Brumme's Blog (http://blogs.msdn.com/cbrumme) - I had NO idea just how much complexity there is in trying to weld the two runtimes together to make them work - in many ways, it's absolutely amazing that they do ... but thanks to amazing architects and engineers like Chris, they do. If you know what you're doing, you can build some AWESOME systems using ES. If you don't, you can quickly shoot yourself in the foot, but that's the situation with any complex technology.
# July 23, 2004 12:03 PM

John Cavnar-Johnson said:

So close, and yet so far away. The 'messages aren't developer friendly' meme is why I'm prepared to be disappointed by Indigo. As long as your team believes this, I don't think Indigo will reach its full potential. Objects wouldn't be very developer-friendly if we had declare all our parameters as strings and pass in the class definition and the current values of each member on every call, so that the system could compile the class, call the constructor and pass it to us, but that's about what's expected of messaging applications today.

What I don't understand is why, when you have all this technology that will convert between XML and .NET types, you can't create a wizard that makes that code part of the .NET type. Why do we have to depend on formatters? And why do you insist on making messages an attribute of a particular service (which is what your "contract first" stuff does). Class identity isn't scoped to the context of the method that accepts it as a parameter. Life would really suck if every string was considered a different type for every method that used a string parameter. These are the things that lead me to believe, despite your protestations to the contrary, that messages will still not be first class entities in Indigo.
# July 23, 2004 2:34 PM

Michele Leroux Bustamante said:

FYI - SODA is already an existing term, for some time ;)

Service-Oriented Development of Applications

Not well known but I've seen courseware on the subject. Perhaps you can swap that around for Distributed Service-Oriented Applications, Distributed SOA, DSOA...LOL

Oh, and I posted some thoughts after this blog entry here: http://www.dasblonde.net/PermaLink.aspx?guid=88cc6682-39b8-484c-8224-2d031223d8b5
# July 24, 2004 9:20 AM

Rich Turner said:

John - Indigo's inner core is a messaging engine that is transport, protocol and message format/encoding independent. Indigo primarily deals with SOAP messages, but you can write translators to encode/decode the SOAP messages into other wire formats/representations if you wish.

Rather than go back and forth here, I encourage you to examine Indigo when it hits Beta in H1/05 or if you're really eager to engage in our early adopter programs.

Rich
# July 27, 2004 2:33 PM

Rich Turner said:

On SODA: Damn looks like I shouldn't bother Trademarking the acronym then I guess? ;)
# July 27, 2004 2:36 PM

Jackie Goldstein's Weblog said:

# July 30, 2004 5:35 AM

Emitter said:

# August 13, 2004 5:00 AM

Kurt Schenk said:

Many customers have a requirement to place web server in a DMZ and an application server behind a second firewall. Using ES opens a whole slew of firewall issues related to which ports to open, which is why remoting and web services are probably superior in this situation. However, the thought of an ASP.NET Web site making web service calls to a application server sends chills down my spine regarding performance overhead. What is the recommendation in this type of scenario?
# August 19, 2004 2:13 PM

Rich Turner said:

That's absolutely what we're recommending Kurt! We'll be publishing a paper in a few weeks which will hopefully eliminate / reduce much of this kind of concern. In general, you should not see a massive slowdown when moving from ES to ASMX. Of course, the amount of slowdown is dependant on:
1) The size of the data being transferred between tiers or Services
2) The amount of time spent on the wire compared to doing work.

Point 2 above is by far the biggest perf issue in distributed systems. The number of round-trips between services / tiers in order to complete a task should be absolutely minimized, and the amount of work being done within the called method should be maximized. If you're spending the majority of time traversing the network, then yes, you'll see a slowdown. If on the other hand, you've followed my guidance, you'll not be traversing the network unless absolutely necessary and the time you spend traversing the network will be but a fraction of the amount of time spent making a call.
# August 19, 2004 2:30 PM

Brendan Tompkins said:

Good SOA and Indigo Blog
# August 20, 2004 9:53 AM

Willy-Peter Schaub said:

# January 21, 2005 3:13 AM

kajalsinha said:

It sucks... please provide me a simple solution and don’t roam around the different technologies... think better and give better, fast and reliable.

It was DCOM/COM+ then ES, Remoting, WebServices now Indigo tomorrow it will be something else...

Can somebody explain me why Microsoft wants their own technologies to become legacy... ( I think its just for money and sqeezing out their own clients). Hey don’t misunderstand me I am not a linux lover as well…

I am someone who thinks technology should be stable and least changing be it free or paid. A good example is C/C++.

Even java has done good job but its slow enough.

I know it that sometimes in 2011 microsoft  will again introduce something new. And believe me changes in the messaging model of the framework is a big pain in the as*.

Please design such a technology which will remain constant for years and for any new development we just need to design and plug the component rather than porting the existing solutions to a new framework.

Or I prefer to design a framework of my own using Java/.NET using Threads and TCP/IP channel or by using even more neutral layer. I think that will be more reliable and I know its time consuming but I will save myself from taking headaches... and now it’s too much...  Its better to go for your own Framework  and rely least on the framework introduced by proprietary people.

Thanks

Kajal Sinha

http://www.kajalsinha.com (will be up and running from 1st March 2007).

# January 23, 2007 8:58 AM

Only Human | Devoted to technology v.2.0 said:

W lutym w ramach propozycji pytań do Steve'a Sinofsky dostałem parę propozycji, których jak na złość

# April 21, 2008 12:12 PM
Anonymous comments are disabled
Page view tracker