Follow Slashdot stories on Twitter

 



Forgot your password?
typodupeerror
×
Programming IT Technology

.NET or CORBA? 75

DavidTurner queries: "My company is developing software to integrate various hardware systems and present a unified interface, plus system-level interaction. Essentially, an object hierarchy plus supporting services - clients, servers and drivers. We wish to replace our proprietary protocol with a standardized distributed object system. The choice has boiled down to .NET versus CORBA+GTK. We want interface contracts, OpenGL support, and embeddable forms (widgets). We also want rapid development. Which would you choose? Has anyone actually field-tested the relative merits of the two paths?"
This discussion has been archived. No new comments can be posted.

.NET or CORBA?

Comments Filter:
  • Python? (Score:2, Informative)

    by Anonymous Coward
    Have you considered python? I'm learning it now, but I've read some great articles about how companies rapidly develop amazing systems with Python. Yahoo! Mail I believe was originally Python, and then ported to C++. It just might fit the bill.
    • Does Python actually have real distributed programming support of any kind?!

      (If you're tempted to give an answer like, "Yes, it has network libs", then the answer is actually "no". If it has CORBA binding support, then we're talking!)
      • by FredNerk ( 121006 ) on Thursday February 06, 2003 @03:46AM (#5238792)
        Absolutely - it even has its own official CORBA mapping just like Java or C++. There are a number of free ORBs available like Fnorb [fnorb.org] and omniORBpy [sourceforge.net].
        • And that's not to mention a host of less common Distributed Object systems [vaults.ca] (some python only, some not).

          DOPY [mindhog.net] is my personal favorite ;-).

        • Not only is there CORBA support, but it is really good about running everything everywhere.

          For this project in particular:

          Upsides:

          It has UI bindings for Windows, Linux, etc.
          It has solid platform support.
          It has OpenGL bindings (although what you expect to use it for is a mystery).
          It has CORBA bindings.
          It's fairly platform independent (bytecode).
          It is strongly serializable.
          Very Simple but Very Working Threading
          Development can be rapid as all hell
          Introspection (more on that later)

          Downsides:

          Long Term maintainability depends on user discipline. Chances are if Clearcase and WebSphere are "a necessity" for you guys, then you don't have the quality of programmers required to pull of a real programming project and will need "management tools".

          --

          I use Python extensively due to it's introspection features. Nothing in Python is sacred. Need to create a class that pretends to be a map? A sequence? No problem! What about having special attribute handling (having a function handle attribute hits)? Not an issue.

          It can be very powerful. Most of my major server programs actually load to a Python prompt with the real stuff threading in the background. That way I can interrogate/modify the stuff--in realtime. Debugging anyone?

          Check out the xmlrpclib module for a taste of the adaptability. That code creates an object. Calling various methods on the object actually translates into HTTP XMLRPC calls. Looking at the code, it is mind-bogglingly concise and simple. The CORBA support is done similarly.

          I love that language.
      • Python got CORBA bindings and those are great! CORBA with C sucks, CORBA with C++ is nice, CORBA with Python rocks.

        Regards, Tobias
  • Java? (Score:1, Insightful)

    by Anonymous Coward
    Would Java work? There are a magnitude more Java developers then GTK/Corba.
    • Unforunately the quantity of java developers does not coincide with the quality you will get out of these java developers.

      Throw a stone, you're bound to hit a couple, but take aim first if you want to hit a good one.

      =)
  • by RevAaron ( 125240 ) <revaaron AT hotmail DOT com> on Thursday February 06, 2003 @12:29AM (#5237928) Homepage
    DISCLAIMER: You may not be interested in this combo because of a prejudice or (more likely) an existing hardware investment.

    Mac OS X + Cocoa may be an option worth exploring. Users of the Objective-C language and the Cocoa libraries find it quite excellent. I'm primarily a Smalltalk programmer, used to the very supportive development environment and mature and full-featured library provided by it... Which generally makes me hard to impress. However, in a couple dives into OS X application development, I have to say that it is a very nice setup.

    Part of the default Cocoa libraries is a pretty mature Distributed Object [apple.com] framework.

    Then again, for something as simple as distributed objects and a UI, I have everything that I need to do that already in Squeak. I can use protocols like XML-RPC or SOAP in this setting, or a faster protocol that is more specific to Smalltalk. :)
    • Is distrubted objects a part of OpenStep, too? If that's the case, the hardware concerns go away. . .
      • Yes, it is a part of OpenStep. I wouldn't say that this erases hardware concerns though- asking them to migrate to OpenStep would be far more silly (and quite possibly far more expensive) than the switch to Mac OS X, even with new Mac hardware. However, you may have meant to suggest a switch to Linux with GNUstep. And yup, GNUstep supports the same DO API, and it's working now.
        • OpenStep is a specification, not just the library.

          Implementations of it exist on all major operating systems.

          I fail to see where it would be so expensive compared ot a switch to Mac OS X, which would require a switch to new (and more expensive) hardware.
    • by Anonymous Coward
      yes....

      I personally shat myself with delight earlier this week when I discovered that there's a web service framework already available in OSX (for SOAP and XML-RPC). For some reason I thought all that talk about web services was marketing hype, but nope, it's there. It will even build a stub file from WSDL stuff. Cool!

      Check it out ... Cocoa rocks the house. I can't imagine programming with anything else any more.
  • by Anonymous Coward
    You obviously aren't programming in the right language. Don't worry about choosing the right object brokering architecture. Just program in Scheme and all your problems will be solved.
  • by Anonymous Coward
    CORBA + GTK

    You don't have to worry about patents or RANDs or changing specifications and implementions by a set of technologies owned by one company.
  • by Bastian ( 66383 ) on Thursday February 06, 2003 @12:39AM (#5237994)
    No, really. If you don't even know if either .NET or CORBA+GTK supports OpenGL, widgets, and interface contracts, you don't know enough about either architecture to make any kind of informed decision, regardless of what the /. crowd says.

    Personally, I'd be inclined to use CORBA+GTK for the simple reason that I don't like to be tied to any one platform, and last I heard Mono is not quite mature enough to make it a viable implementation of .NET for non-Windows platforms.

    But if .NET is even an option, you're probably working at a fairly dedicated Windows shop, so that's a moot point. . .
  • by maunleon ( 172815 ) on Thursday February 06, 2003 @01:06AM (#5238145)
    We had to choose between .NET and J2EE. We ended up with .NET. The decision was purely financial. When we put down on paper how much it would cost in software purchase in order for us to equip our team and deploy our solution, it turned out that we already had everything we needed for .NET

    Java enterprise development did not look cheap at all.

    Of course, you may be starting from a different point. We already had VS.NET licenses, fully licenses MS servers, etc.

    As for Corba vs. .NET, I believe .NET is a more elegant solution. That is just my opinion.
    Corba programmers are hard to come by, and .NET is still new. However, anyone who understands the concept of an enterprise app should pick up .NET easy. I believe CORBA is much harder to pick up for a programmer being introduced into a development team.

    • by farnsworth ( 558449 ) on Thursday February 06, 2003 @02:09AM (#5238491)
      We had to choose between .NET and J2EE. We ended up with .NET. The decision was purely financial.

      cost of ide (eclipse/emacs) $0

      cost of servlet container (tomcat) $0

      cost of ejb container (jboss) $0

      cost of compiler, built tools, version management (javac, ant, cvs/subversion) $0

      I'm curious how you evaluated .net to be cheaper than this. really, I am. what did you need to do that's not supported by these tools?

      • by jsse ( 254124 ) on Thursday February 06, 2003 @03:25AM (#5238730) Homepage Journal
        nah, usually it's not the case:

        cost of ide (websphere application developer) $5,000 *each*

        cost of servlet+ejb container (websphere application server enterprise version) $10,000

        cost of design tools, version management (SELECT Enterprise, Clearcase, etc.) $15,000

        cost of report server(you missed that one, it's pretty important for enterprise depolyment) $40,000 (java compliant report servers are very expensive)

        It's not like management are pathetic sadist who love to be slaughtered by software vendors, they've other concern like learning curve, enterprise level support, guaranteed availability and reliability.

        In fact, the cost of J2EE development is increasing these years. I'm kinda happy to see how .NET goes, because at least it introduces competition that would eventually lower the depolyment cost of J2EE. :)

  • by xagon7 ( 530399 ) on Thursday February 06, 2003 @01:08AM (#5238153)
    But to be quite honest, it is dufficult to give a proper recommendation without specifics.

    Here are my recommendations.

    Look into Java for you system, mainly since you are stating you need cross-platform compliance.

    You could use Java's RMI for this Jav architecture, which is the second fastest distrubited call framework available, and second only to sockets...SOAP, DCOM, and CORBA are respectably slower, CORBA being the slowest of the bunch.

    If you want to go the C/C++ route, use SOAP, which will allow you to be extensible and allow you to be crossplatform and ready for whatever your pointy haired boss wants to throw your way next week.

    I do NOT fully understand your necessity for OpenGL, nor do I understand the GTK requirement so my suggestions may be invalid.

    If you are looking for a cross-platform distributed application framework, again, look at SOAP and/or Java both are proven technologies.

    I FIRMLY believe SOAP has pretty much made CORBA obsolete.

    Flame on for my ignorance....
    • by FredNerk ( 121006 ) on Thursday February 06, 2003 @03:37AM (#5238761)
      You could use Java's RMI for this Jav architecture, which is the second fastest distrubited call framework available, and second only to sockets...SOAP, DCOM, and CORBA are respectably slower, CORBA being the slowest of the bunch.
      Sorry, this is just plain wrong. First, a quick google search finds many papers like this one [rutgers.edu] that show just how appalling SOAP is compared to other protocols. Leaving aside the text-versus-binary issue, the SOAP protocol itself sends many more messages per function call than the competition.

      Second, RMI runs over JRMP (a Java native protocol) or IIOP (CORBA's protocol). JRMP is slightly faster than IIOP, but both are comparable. In a multi-langauge environment IIOP would allow you to use CORBA to integrate your Java apps with apps written in other languages.

      This is not to say that SOAP is useless, or even bad. The broad base of support SOAP enjoys means it could become a lowest common denominator; a kind of the middleware for middle [cuj.com]. But it by no means replaces CORBA. There are many good articles on this topic from both the pro-SOAP [ibm.com] and the pro-CORBA [ieee1073.org] sides. As another poster said, when making these sorts of decisions it is important to research both sides rather than trying to measure the oppinion of slashdot.

      I firmly believe that SOAP and CORBA are complimentary technologies.

    • I'd be interested in some data backing the assertion that CORBA is slower than SOAP. My gut feeling is that because SOAP marshalls/unmarshalls everything to XML, which at least in Java means a lot of inefficient String processing, and in any case is much less compact than IIOP, that SOAP would be much slower. Do you have any links to concrete benchmarks?
      • The marshalling process is not going to have a significant impact on RPC performance when you're sending messages across a network. CORBA calls need to be marshalled as well, just to a binary format.

        However, it has been said that SOAP is more 'chatty' than CORBA, which would have an impact in a network situation.
    • by johnnyb ( 4816 ) <jonathan@bartlettpublishing.com> on Friday February 07, 2003 @01:12AM (#5248216) Homepage
      Problems with SOAP:

      1) It is NOT NOT NOT NOT NOT NOT NOT Object-oriented. In fact, they've stopped calling it the "Simple Object Access Protocol", and have just stuck with SOAP because it has NOTHING to do with object-oriented programming. You CANNOT pass references to remote SOAP objects as parameters and have it work seamlessly with the language.

      2) It is not nearly as compatible as CORBA. If you look at all of the current implementations, many of them are almost mutually exclusive. CORBA used to be the same way - a very long time ago. However, these days it is pretty rare that IIOP isn't properly supported between ORBs. So, for ORB portability CORBA is the way to go.

      3) CORBA is a complete architecture. SOAP is only the message-passing component, and a very poor one at that.

      4) SOAP messages are about 4x the size of CORBA messages, and take a whole lot longer to parse. So if you currently are using CORBA and are filling up a T1 line, moving to SOAP will mean that you need to buy 3 more.

      5) (a continuation of 3) CORBA has _language_ support for features such as transactions and security, so you don't have to implement bloody or vendor-specific hacks to implement such things. The CORBA PortableInterceptor interface is a wonderful, wonderful thing. The ability to seamlessly pass context information around without additional coding is quite amazing.

      In fact, the SOAP standard itself starts off by listing things where the designers were too bothered to be "simple" to actually implement a complete architecture. From the SOAP 1.1 standard:

      ==clip==

      A major design goal for SOAP is simplicity and extensibility. This means that there are several features from traditional messaging systems and distributed object systems that are not part of the core SOAP specification. Such features include

      * Distributed garbage collection
      * Boxcarring or batching of messages
      * Objects-by-reference (which requires distributed garbage collection)
      * Activation (which requires objects-by-reference)

      ==clip==

      These are standard features of CORBA. CORBA's Portable Object Adapter is just an amazing piece of technology.

      Plus, if you've ever tried to write WSDL vs. a CORBA interface, you'll find that interfaces are much easier.

      The only place where SOAP surpasses CORBA is if you are doing document-passing functions rather than parameter-passing functions. For example, if you were sending in a complete invoice (a lot of depth and loosely structured), you might use SOAP. However, for operations where the parameters are fairly structured, CORBA is clearly the winner.

      SOAP is an interesting technology for document exchange, but it's role in enterprise computing is highly, highly, highly overrated, and CORBA is a wonderful jewel that so many people overlook out of fear. But really, it's not that complicated.
      • SOAP is complicated and messy.

        XMLRPC, on the other hand, is really really easy to implement, and is very cross-language.

        It's just functional, and just passes data, but depending on your needs it might be enough.
  • .NET (Score:1, Insightful)

    by Anonymous Coward
    .NET has quite a bit more rapid development potential than GTK does.

    If you want to target x11, use GTK.

    If your primary target is win32, use .NET. Every GTK application I've seen on win32 sucks ass.

  • .Net will support opengl, but you should use directX instead because it will always be more supported by Microsoft.

    I do believe corba supports opengl.

    If you own Delphi use corba. If you want this app to run on Linux and Windows, do not use com/.net because there is only one (poor) unix implementation currently.

    If you choose .Net write the application in c#

  • Risk Management (Score:3, Insightful)

    by LarryRiedel ( 141315 ) on Thursday February 06, 2003 @02:46AM (#5238613)

    I think for me it would be more a question of building on something relatively stable vs relatively unstable. Considering Miguel seems to see .NET as a technology to succeed CORBA, I would feel ok saying the same thing. But CORBA and GTK are a platform that, although somewhat crufty, seem to have gone through much more real world use than .NET.

    Also, for the next several months at least, it seems like .NET suggests Windows and CORBA+GTK suggests *nix, although of course that is not an essential necessity, but maybe it is a constraint for some projects.

    Larry

  • CORBA everytime (Score:1, Informative)

    by Anonymous Coward
    i'm was a .NET 'Everett' beta tester (IMO it sucks). Might be ready for real-world in a couple of years.

    When I went through my single-serving hotmail account yesterday (weekly spam trawl) I found an email from MS warning me beta .NET kits exposed my computer to the slammer worm. Even though I have never installed MS SQL server!

    * anyways should be talking abour this NDA and EULA etc. *
  • by t_hunger ( 449259 ) on Thursday February 06, 2003 @06:27AM (#5239196)
    CORBA is a architecture that allows objects -- implemented in different languages and running distributed over a network consisting of mashines of different architectures -- to communicate. I fail to see how GTK or OpenGL get into the picture here. ..Of course you can use OpenGL, GTK or any other library in your CORBA objects (if you implement them in a language matching the library you want to use), but that got absolutely nothing to do with CORBA per se. CORBA's location transparency makes using such libraries a bit harder of course: You need to make sure all relevant objects are on the same mashine for one thing. Then you might end up with a multithreaded application because of the CORBA ORB you have choosen which might confuse some of the libraries you want to use.

    Having said this it is hard to give any advice based on the little information you provide. CORBA is a very powerful architecture, deffinitly more powerful then SOAP (No object-by-refernce or activation for example) and others. As allmost allways this power comes at the price of complexity. You'll need to sit down, figure out your requirements for the communications architecture you need and then go over the list of available alternatives.

    I can't really say much about .Net, having not used it yet. But in general I'd prefer to base my work on a architecture that has had some years to settle. And .Net is so far rather restricted to one plattform. Mono might change that in time, but with its head developer announcing that they'll just drop whichever part might get them into legal trouble I wouldn't want to base my company's products on that plattform. You might wake up one morning and find out that that mono suddenly no longer supports networking or something;-)

    Regards, Tobias
    • by DNAGuy ( 131264 ) <brent@nOSpam.brentrockwood.org> on Thursday February 06, 2003 @04:52PM (#5244647) Homepage
      If you want to compare remoting methods, than you have a list including CORBA, COM, .NET Remoting, and SOAP.

      CORBA and COM have proven track records and many developers understand them. In addition, many tools are available to integrate with these remoting technologies. However, CORBA and COM are difficult to configure to run over the public internet and there are many security considerations when doing so.

      SOAP runs over HTTP. As a result, it is as easy to set up as a web service. The security considerations around opening port 80 are understood. The endpoint can be logged if necessary, the same way web servers are. Of course, XML and HTTP are not very efficient mechanisms for RPC calls in a backend type situation where performance and scalability are paramount. SOAP's strength is the promise that disparate systems may be integrated over the Internet.

      The track record of .NET Remoting remains to be seen. It has the same advantages and disadvantages of COM and CORBA in terms of being a binary protocol. They tend to be reasonably fast but are difficult to run over the Internet. .NET Remoting's claim to fame is that it is the "native" binary remoting scheme for .NET. I don't know much about its performance though I would expect it performs favorably against COM.

      My two cents. Hope it's useful.
      • The security considerations around opening port 80 are understood.

        Wait until some next worm spreads itself via a bug in a web-service, and forces just about every admin to block port 80.

        Port 80 (as in "running Apache") is usually harmless; expose some serious capabilities to the net through it, and all of a sudden administrators see it as something they shouldn't expose to the general internet in the first place.
      • SOAP runs over HTTP

        It's okay to make that statement, provided we are all clear that what you hopefully really meant was that SOAP messages can be exchanged via HTTP bindings (both GET and POST). Likewise, SOAP messages can be exchanged via SMTP bindings. And pretty much any other protocol for which a protocol binding is defined.

        It simply worries me that far too many developers believe that SOAP is deeply connected to HTTP.

        Now, back to the original poster's question. I'm not sure what .NET has got to do with remoting of anything -- perhaps he was really asking about, well, '.NET Remoting,' the .NET standard for RPC. And even that is a misleading statement, for .NET Remoting can be bound to any of several protocols -- SOAP, Microsoft's BinaryFormatter, COBRA, DCOM, etc. etc. -- and each channel can have a unique set of attributes (e.g. encryption, authentication, etc.) -- and these attributes have their own properties (authenticate connection or autenticate every packet, etc. etc.). Personally, I like .NET remoting because it is very easy to write a client, and, via an XML config file, change the communication channel without recompiling. And making a client is pretty much as easy as using a local object. For example, in this fragment:

        Foo myFoo = new Foo();
        Foo.DoSomething();

        it is impossible to tell from this fragment if Foo is a local object or if Foo is actually running half-way across the planet. .NET makes it fairly easy to map types (in this case, the class Foo) to remoted instances. How the remote instance is found can be controlled via an XML config file. So if I suddenly want to run Foo on machine X, I change the config file. (Granted, the process needs to be singaled to reread the config file, or it needs to be restarted.) As someone who lived through the nightmares of DCOM and it's 'interesting' security models with those oh-so-helpful C0000005 error messages, .NET Remoting is a real joy.

        Oh, and I've also been through RMI, and, just my $0.02, .NET Remoting is a lot easier to get up-and-running. I won't comment on COBRA, as my experiences with COBRA ended about 5 years ago, and people keep telling me that it's much better these days...

  • Apples and oranges (Score:2, Insightful)

    by slipset ( 462038 )
    I think that a better questions to ask is whether to choose between .Net and J2EE, since CORBA is st a very small subset of these two technologies. CORBA is a technology used to find objects on a network, which is something that .Net and J2EE also provide, along with more usefull stuff as persistence, transaction,and security-handling

    Of course, there are most certainly other frameworks than .Net and J2EE which provide such services as well.
    • by t_hunger ( 449259 )
      CORBA has a lot of services too. There's a security service, nameservice and lots of others. Persistent object storage and transactions are among them, too.

      The downside is that not all ORBs do offer all services. That's better with J2EE and .Net: You got only one vendor with both, so their products are allways complete. The implementation is the definition of the standard after all:-)

  • by Anonymous Coward
    .NET is not fully viable yet. Sure it's out but it's not what I would call mature yet. However Java, J2EE App Servers like Weblogic or JBOSS, and SOAP are much further along. Also the whole Java thing is rather cross platform as well. .NET is Windows only. Even if you only have Windows boxes you need to think about how to scale your system over time. What happens if you rollout .NET and set all your standards and it ends up costing you a fortune to scale it up? Or worse you hit a roadblock and need to completely change your architecture from scratch?

    If you've got serious requirements then consider highend Sun hardware with Weblogic Java J2EE App Servers. Sun hardware is expensive but it really does scale very very well and the systems will last for many years. We still run production Sun boxes that are ancient. If you can't afford that and it's overkill, consider Low cost Linux blades or boxes and run Tomcat/JBOSS instead. Once you optimize a Linux build by stripping out everything you don't need and tune it, it's very efficient (same with Sun, ours are stripped down to the bare minimum at the OS level). Just slam as much RAM as you can into the hardware. Java needs elbow room to work but once it's got the RAM it works very very well. Of course you'll need good programmers who know what they are doing. One can screw up Java just as easy as .NET.

    To truly make a good recommendation, one would need a whole lot more information than what you provided. Perhaps Slashdot needs a RFP (Request for Proposal) option! Really, most of these questions are lacking in the proper information to provide proper advise. In this case we have no information about what the users current environment is and where they think it's going. Lot's of options and possibilities.

    Not so sure I would trust Microsoft for my Enterprise infrastructure. I always laugh my ass off when I see an MS Enterprise commerical. I almost choked to death when I saw the first MS Enterprise ads. Taking into account all of the recent security problems MS has had, I cannot trust them at all. We scan incoming and outgoing email about 4 times both ways. We probe for unsecured IIS loads on workstations, we look for MS SQL loads as well now. MS Servers are constantly being rebooted for no apparent reason other than "it works when we reboot it". They disappear on the network for no apparent reason. They lock up completely so we have to power them off. We have about 1,000 MS trained staff members to maintain the desktops and servers. We have 5 people managing the Unix Mission Critical systems. Of course those 5 people make a hell of a lot more money but they are worth it.

    I would not place the foundation of my network in the hands of Microsoft. I have 10 year old Unix systems still in production that just plain work.

  • CORBA is a system for cross-platform communications which is accessible from multiple languages. It is an object-oriented system (Hence the O in Corba expanding to "Object") which allows you to invoke methods living on different systems. For example, Tivoli TME10 (for example - the only CORBA product I'm at all familiar with) uses CORBA to start a scan on a remote "managed node" or "node" or whatever they call it now, and get the information back. It's just a method for handling (possibly) remote objects.

    .NET on the other hand is both the advanced version of DCOM, and a virtual machine similar to java, and a bunch of classes. CORBA only provides classes to handle CORBA; It's a framework, an architecture upon which you build. .NET is more like Java and less like DCOM; CORBA is like DCOM, only it's open and free.

    If you are using CORBA specifically to gain cross-platform interoperability, you have to look at the following questions:

    1. Is my chosen ORB available on all platforms I want to support?
    2. Is my code going to port to all platforms I want to support with a reasonable amount of effort? Is my whole toolchain available on/for all of those platforms?

    OpenGL support is irrelevant to CORBA, that's dependent on your operating system. You definitely don't want to be calling OpenGL functions through CORBA methods with a 1:1 mapping, as the overhead from your ORB will absolutely kill your performance, even if on the other end you're caching a stream of things to be done on schedule. You want to send (at most) high level events like "set up the field" and "put this thing on the screen" - handling motion is likely to be far too slow to be useful.

    As other posters have said, you haven't told us what your criteria is, and so as usual, your ask slashdot question is both unanswerable, and should never have made it through editor approval, especially to end up on the front page. Who did you slip money to to approve your story?

  • Neither maybe? CORBA is baroque and over-complicated, and likewise SOAP is bloated and overcomplicated. How about a nice little RPC like Java RMI or XML-RPC? I'm not aware of any other lightweight binary RPCs.
  • by r4lv3k ( 638084 )
    CORBA is an older distributed computing model that will probably be replaced by or enhanced with XML-based messaging solutions in the future. It is more difficult to develop with compared to web services. However, a .NET implementation will be even easier to implement than Java. Remoting (remote object proxying) is extremely simple and all the tools you really need are free. If your developers need coddling then use VS.NET w/Sourcesafe but IMHO it's just a fancy text editor :). Use SciTE, NAnt, NUnit, NDoc, CVS, and the free .NET tools. The basic questions you must ask yourself: - How will this system be integrated in the future? XML-based protocols can be integrated into a heterogenous environment... CORBA can too, but its nastier to implement. - How important is cross-platform support: - Must have, right now (in which case .NET is probably not an option). - Strategic (in which case Mono might provide a partial or complete solution in the future). If you use .NET, separate your UI classes from your business logic in separate libs. That way, if Mono doesn't support something in Windows Forms, you can still use the C# and hook it up to GTK+ with C bindings! Also, there's a C# wrapper for the SDL (do a google search for it). That might provide the 3-D support you need. SDL is *very* cross-platform. If you ever need any help, make me an offer! :) ralvek
  • Simple choice .NET (Score:1, Interesting)

    by Anonymous Coward
    Hate to say it but .NET rocks. It has all the network and protocol support you need and makes interfacing with C/DLLs/COM really easy, and WinForms is a dream to work with (wish I could say the same about Java). I don't love MS, but .NET is a terrific collection of technologies (if only Sun knew what they were bringing upon themselves when they shunned delegates and the WFC).

    Corba/GTK? Unless you really love working with and around outdated technologies, don't waste your time. Corba is dead, long live SOAP.
  • Assuming your serverside technology is flexible enough i.e. Java, Python, C++. You could implement both SOAP and CORBA as means of getting your clients to talk to servers.

    I've done this recently and it's a piece of cake.
  • Thanks everyone for the comments.

    As some of you inferred (and others didn't), the OpenGL requirements are purely on the UI side ;-).

    My concern about interface contracts was this: it is very easy to accidentally change a .NET interface, since they aren't explicitly separated from the code. However, it should be possible to just make a bunch of read-only interface definitions in a common directory.

    I think the biggest issue is (sadly) rapid development, and it is here that .NET establishes a clear dominance over the CORBA route. For the record, I love CORBA - IMHO it's the greatest middleware technology available.

    Our cross platform requirement is not critical - we will likely not deploy the client-side on *nix for some years, and the back-end is of course much easier to port.

    I am very concerned at the thought of having to host my services in IIS. Then again, connections are managed by a fairly thorough cryptographic challenge process.

    Not an easy decision! :-)

    • Visual Studio is an excellent program for creating and deploying .net solutions. Also there is a wide variety of documentation available to help.

      Though don't discount corba as it is supported by Borland's implementation of Delphi. C# and Pascal are quite a bit alike since the same person was the chief architect for both languages.

      One thing to consider is that .Net will likely improve rapidly and therefore change. While corba will likely remain the same due to the lengthy standards process it went through. The good thing for .Net here is that obviously it will improve, but if it changes a lot then you will have to work on maintainance more.

      Also Microsoft is beginning to phase out IIS.
  • .NET and CORBA/GTK are not really the same fruit. Of course the .NET moniker means everything and nothing, so that's part of the problem. However, you really need to consider what you want to do with the code underneath the RPC layer just as much as the RPC layer.

    My estimation is that the most popular Object-RPC layers (in order of popularity) are:

    COM/DCOM, Java-RMI, CORBA, .NET Remoting, Next/Apple Portable Distibuted Objects, GnomeOrbit

    Very quickly I expect .NET Remoting to move to the head of the pack with Java-RMI. However, in the meantime, .NET software interoperates with DCOM easily as well.

    One of the biggest changes in component development and remoting in the last several years was the shift from tack-on remoting solutions like COM/DCOM and CORBA to "language supported" remoting such as Java-RMI and .NET Remoting.

    If you have existing legacy code (in C/C++ for example) then you will want a system which makes this code easy to leverage. That means COM/DCOM, CORBA, or .NET Remoting (while .NET isn't exactly an add-on, importing legacy code into .NET is easier than building component wrappers in COM or CORBA IMO).

    If you have no legacy code, then you should choose between Java-RMI and .NET Remoting, and build your application in either Java or C#. Java has the popularity edge right now. In the near future, C#.NET is likely to win where connecting to legacy code is important, while Java will win where cross-platform support is important.

    - David
  • by tzanger ( 1575 )

    Something I've been putting a lot of energy in to lately is XWT [xwt.org] -- basically it's a remote widget system that takes all the plusses of X11 without the nasty lag. It uses XMLRPC or SOAP to talk to servers, which is where you'd get your OpenGL to work, I think. Spawn a simple XMLRPC server on the client to handle OpenGL functions on behalf of the app and you're set.

  • You might want to have a look at Ice from ZeroC [zeroc.com]. Ice is a new OO middleware platform that is IMO far superior to CORBA. Ice is GPL'd. For a comparison between Ice and CORBA, have a look at this page [zeroc.com].

He has not acquired a fortune; the fortune has acquired him. -- Bion

Working...