Tải bản đầy đủ (.pdf) (499 trang)

Cross platform web services using c sharp and java 2003

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (4.23 MB, 499 trang )

Cross-PlatformWeb
ServicesUsingC#and
Java
ISBN:1584502622
byBrian
Hochgurtel
CharlesRiverMedia©2003
(386pages)

Thiscomprehensivetext
providesanintroductionto
WebservicesunderC#and
Java,alongwiththe
underlyingstandardsthat
drivethem.Itshowshowthe
differenttechnologieswork
andcollaborate,then
describessecurityand
examinespracticalexamples.
CDContent
TableofContents
CROSS-PLATFORMWEBSERVICESUSINGC#ANDJAVA
Preface
SectionI-IntroductiontoWebServiceTechnologies

Chapter1
Chapter2
Chapter3
Chapter4
Chapter5


- IntroductiontoWebServices
- BriefIntroductiontoXML
- SOAP
- WSDL
- UDDI

SectionII-WebServiceImplementations


Chapter6
Chapter7
Chapter8

- .NETWebServiceswithC#
- WebServiceswithApacheSOAP
- WebServiceswithApacheAxis

SectionIII-WebServiceImplementations

Chapter9
Chapter10
Chapter11
Chapter12

- Javaand.NETWebServiceIntegration
- WebServiceSecurity
- PracticalApplicationofWebServices
- UsingWebServicesasaMiddleTier
CreatingYourOwnWebServices
Chapter13 Implementation

AppendixA - AbouttheCD-ROM
AppendixB - SoftwareUsedinThisBook
AppendixC - ApacheLicense
AppendixD - VisualBasic.NET
AppendixE - UsingPERLtoAccessWebServices
AppendixF - Microsoft’sUDDI.NETSDK
Index
ListofFigures
ListofTables
CDContent


BackCover
Astheneedforapplication-to-application
communicationandplatforminteroperabilitycontinues
togrow,WebServicedevelopersneedtobeskilledin
thetechnologiesandlanguagesthatmakethis
communicationpossible.WebServicesprovidea
languageandplatformindependentstandardfor
creatingandconnectingcodethatallowssoftware
applications(remoteobjects)tocommunicatewith
eachotherandusers,viaanetworkortheWeb.
Ratherthanfocusononespecifictechnologyor
language,Cross-PlatformWebServicesUsingC#&
Javaexplainshowtointegratethevarioustechnologies
ofWebServicesusingthetwolanguagesexpectedto
dominatethisgrowingarea.
KEYFEATURES
Focusesonthecross-platforminteroperabilityof
WebServices

Teachesallofthetechnologiesandunderlying
standardsofWebServices,includingXML,WSDL,
andUDDI
Coversdevelopmentof.NETandJavaWeb
Services
Showshowtointegrateapplicationsdeveloped
withotherlanguagesandlegacysystems
Providesaseparatechapteroncross-platform
implementationofWebServicesecurity,including


firewalls,SSL,ID,XMLsignatures,andtesting
CoverslatestWebServicestoolsoftheApache
group,includingSOAP,Axis,andTomcat
AbouttheAuthor
BrianHochgurtel,Erie,CO,isanindependentsoftware
developmentengineerandWebdevelopment
consultant.Heistheco-authorofVisualBasic.NET
andXMLandhaswrittenseveralarticlesonXML.


CROSS-PLATFORMWEBSERVICESUSINGC#ANDJAVA
BrianHochgurtel
CHARLESRIVERMEDIA,INC.
10DownerAvenue
Hingham,
Massachusetts02043
Copyright2003byCHARLESRIVERMEDIA,INC.
Allrightsreserved.
Nopartofthispublicationmaybereproducedinanyway,storedina

retrievalsystemofanytype,ortransmittedbyanymeansormedia,
electronicormechanical,including,butnotlimitedto,photocopy,
recording,orscanning,withoutpriorpermissioninwritingfromthe
publisher.
AcquisitionsEditor:JimWalsh
Production:Publishers’DesignandProductionServices,Inc.
CoverDesign:ThePrintedImage
781-740-0400
781-740-8816(FAX)

www.charlesriver.com
Thisbookisprintedonacid-freepaper.
BrainHochgurtel.Cross-PlatformWebServicesUsingC#andJava.
ISBN:1-58450-262-2
Allbrandnamesandproductnamesmentionedinthisbookare
trademarksorservicemarksoftheirrespectivecompanies.Anyomission
ormisuse(ofanykind)ofservicemarksortrademarksshouldnotbe


regardedasintenttoinfringeonthepropertyofothers.Thepublisher
recognizesandrespectsallmarksusedbycompanies,manufacturers,
anddevelopersasameanstodistinguishtheirproducts.
LibraryofCongressCataloging-in-PublicationData
Hochgurtel,Brian.
Cross-platformWebservicesusingC#andJava/BrianHochgurtel.
p.cm.
ISBN1-58450-262-2
1.Websitedevelopment.2.Internetprogramming.3.C(Computer
programlanguage)4.Java(Computerprogramlanguage)5.Crossplatform
softwaredevelopment.I.Title.

TK5105.888.H6172003
005.2'76—dc21
2002154754
PrintedintheUnitedStatesofAmerica
03765432FirstEdition
CHARLESRIVERMEDIAtitlesareavailableforsitelicenseorbulk
purchasebyinstitutions,usergroups,corporations,etc.Foradditional
information,pleasecontacttheSpecialSalesDepartmentat781-7400400.
RequestsforreplacementofadefectiveCD-ROMmustbeaccompanied
bytheoriginaldisc,yourmailingaddress,telephonenumber,dateof
purchaseandpurchaseprice.Pleasestatethenatureoftheproblem,
andsendtheinformationtoCHARLESRIVERMEDIA,INC.,10Downer
Avenue,Hingham,Massachusetts02043.CRM’ssoleobligationtothe


purchaseristoreplacethedisc,basedondefectivematerialsorfaulty
workmanship,butnotontheoperationorfunctionalityoftheproduct.
Firstofall,Ineedtothankmywifeforputtingupwithmehidinginmy
officeforsixmonthswhileIwrotethisbook.Herpatienceandsupport
wereastounding.
Ialsoneedtothankmyfriend,RodStephens,fortakingmeunderhis
wingduringthebookwewrotetogetherin2001.WithouthimIdoubtI
couldhavewrittenorevenproposedthisbook.
Acknowledgments
Firstofall,Ineedtothankmywifeforputtingupwithmehidinginmy
officeforsixmonthswhileIwrotethisbook.Herpatienceandsupport
wereastounding.
Ialsoneedtothankmyfriend,RodStephens,fortakingmeunderhis
wingduringthebookwewrotetogetherin2001.WithouthimIdoubtI
couldhavewrittenorevenproposedthisbook.

THECD-ROMWHICHACCOMPANIESTHEBOOKMAYBEUSEDON
ASINGLEPCONLY.THELICENSEDOESNOTPERMITTHEUSEON
ANETWORK(OFANYKIND).YOUFURTHERAGREETHATTHIS
LICENSEGRANTSPERMISSIONTOUSETHEPRODUCTS
CONTAINEDHEREIN,BUTDOESNOTGIVEYOURIGHTOF
OWNERSHIPTOANYOFTHECONTENTORPRODUCTCONTAINED
ONTHISCD-ROM.USEOFTHIRDPARTYSOFTWARECONTAINED
ONTHISCD-ROMISLIMITEDTOANDSUBJECTTOLICENSING
TERMSFORTHERESPECTIVEPRODUCTS.
CHARLESRIVERMEDIA,INC.(“CRM”)AND/ORANYONEWHOHAS
BEENINVOLVEDINTHEWRITING,CREATION,ORPRODUCTIONOF
THEACCOMPANYINGCODE(“THESOFTWARE”)ORTHETHIRD
PARTYPRODUCTSCONTAINEDONTHECD-ROMORTEXTUAL
MATERIALINTHEBOOK,CANNOTANDDONOTWARRANT
THEPERFORMANCEORRESULTSTHATMAYBEOBTAINEDBY
USINGTHESOFTWAREORCONTENTSOFTHEBOOK.THE
AUTHORANDPUBLISHERHAVEUSEDTHEIRBESTEFFORTSTO


ENSURETHEACCURACYANDFUNCTIONALITYOFTHETEXTUAL
MATERIALANDPROGRAMSCONTAINEDHEREIN;WE,HOWEVER,
MAKENOWARRANTYOFANYKIND,EXPRESSORIMPLIED,
REGARDINGTHEPERFORMANCEOFTHESEPROGRAMSOR
CONTENTS.THESOFTWAREISSOLD“ASIS”WITHOUT
WARRANTY(EXCEPTFORDEFECTIVEMATERIALSUSEDIN
MANUFACTURINGTHEDISCORDUETOFAULTYWORKMANSHIP).
THEAUTHOR,THEPUBLISHER,DEVELOPERSOFTHIRDPARTY
SOFTWARE,ANDANYONEINVOLVEDINTHEPRODUCTIONAND
MANUFACTURINGOFTHISWORKSHALLNOTBELIABLEFOR
DAMAGESOFANYKINDARISINGOUTOFTHEUSEOF(ORTHE

INABILITYTOUSE)THEPROGRAMS,SOURCECODE,ORTEXTUAL
MATERIALCONTAINEDINTHISPUBLICATION.THISINCLUDES,BUT
ISNOTLIMITEDTO,LOSSOFREVENUEORPROFIT,OROTHER
INCIDENTALORCONSEQUENTIALDAMAGESARISINGOUTOFTHE
USEOFTHEPRODUCT.
THESOLEREMEDYINTHEEVENTOFACLAIMOFANYKINDIS
EXPRESSLYLIMITEDTOREPLACEMENTOFTHEBOOKAND/OR
CD-ROM,ANDONLYATTHEDISCRETIONOFCRM.
THEUSEOF“IMPLIEDWARRANTY”ANDCERTAIN“EXCLUSIONS”
VARYFROMSTATETOSTATE,ANDMAYNOTAPPLYTOTHE
PURCHASEROFTHISPRODUCT.


Preface
ThegoalofthisbookistoprovideyouwithanintroductiontoWeb
ServicesunderC#andJava,alongwiththeunderlyingstandardsthat
drivethem.Thisbookshowshowthedifferenttechnologiesworkand
collaborate,andthendescribessecurityandexaminesmorepractical
examples.


StructureoftheBook
Inthefirstsection,thebookexaminestheunderlyingXMLstandardsand
theconceptsofremoteobjects.ManytimestheXMLthatworks
underneathWebServicescanbeignoredbecausethesoftwareoperates
atsuchahighlevel.Butwhenyourunintoglitchesoryoujusthappento
lookatarequestandresponsewithinaviewer,it’susefultoknowwhat
theXMLrepresentsandthefunctionitserves.
Inthesecondsection,JavaandC#technologiesthatdeployWeb
Servicesareexaminedandseveralexamplesaregiven.Thisinvolves

notonlycreatingtheservicebutalsocreatingsoftwareandWebpages
thatactasaconsumer.
Inthethirdsection,thedetailsofdeployingWebServicesareexamined.
ThisincludesusingtoolstomakeWebServicesfromC#communicate
withJavaandvisaversa.Thissectionalsolookscloselyatgatheringand
implementingthesecurityrequirementsnecessarytoprotectWeb
Services.
MostoftheWebServiceexamplesinthebookarequickandtothepoint,
butthethirdsectionthebooktakesacloserlookatthedeploymentand
testingofamorecomplexWebService.Thisallowsyoutoexaminehow
theWebServiceworkswiththevariousconsumersandhowtopass
morecomplexvalues.


HowtoUseThisBook
Thisbookbuildsonitselfasyoumoveforward.Thisfirstsectioncovers
thebasicsoftheunderlyingstandardsthatmakeWebServiceswork.If
youhaveabasicorgeneralunderstandingofthesestandards,youmay
wishtomoveontothesecondandthirdsectionsandreferbacktothese
introductorychaptersasneeded.
Manyoftheexamplesinthetextarefairlyself-containedsothatifyou
needaquickreferenceonhowtocreateaparticularWebService
consumerorserviceyoucanfinditquickly.Asthebookexaminesthe
differenttechnologies,eachchaptercontainsexamplesthataresimilar
sothereisaneasycross-reference.
Thebookassumesthatyouhavesomeunderstandingofhowtocompile
JavaandC#programs.Theexamplesineachchapterdoexplainwhere
toputcertainfilesandhowtosetenvironmentalsettings,butyoumay
wanttohaveintroductorytextslyingaroundsoyouhaveaquick
referencetoitemssuchastheJavaVirtualMachine(JVM)orthe

CommonLanguageRuntime(CLR).


WhatYouNeed
ThisbookrequiresthatyouhaveaPCrunningwitheitherNT,Windows
2000,orWindowsXPProfessionalorServerversionsoyoucanutilize
Microsoft'sInternetInformationServer(IIS).Notethattheprofessional
versionsoftheseoperatingsystemswillnotallowyoutouseSSL,but
youcanuseApachewithSSLonanyofthem.
YouwillalsoneedeitherVisualStudio.NETorthe.NETFramework
SoftwareDevelopmentKittocompileandexecutetheC#examples.
TocompileandruntheJavaexamples,youneedaJavaDevelopment
KitforcompilationandaServletcontainertoexecutetheexamples.The
bookusesTomcatfromtheApachegroupasthecontainerbutanyother
containersuchasSunOneServerorBEA’sWeblogicshouldworkjust
fine.Notethatyoudon’tneedtheprofessionalversionsoftheWindows
operatingsystemstousetheJavaexamples,butwithoutthemyou’llbe
limitedtojustJavaandwon’tbeabletouseanyofthecross-platform
examples.
Note AppendixBcontainstheURLsfordownloadingthevarious
softwareneededforthisbook.


AssumedKnowledge
Thisbookassumesthatyouhaveexperiencedealingwithobjectsand
object-orientedprogramming.Theexamplesinthebookare
straightforward,buttheassumptionisthatyouunderstandconceptssuch
asaconstructor,instantiatinganobject,andmethods.



SectionI:IntroductiontoWebService
Technologies


ChapterList
Chapter1:IntroductiontoWebServices
Chapter2:BriefIntroductiontoXML
Chapter3:SOAP
Chapter4:WSDL
Chapter5:UDDI


PartOverview
XMLandtheconceptofobjectsandremoteobjectsarethedrivingforce
behindWebServices.TheconceptofWebServicescomesfromtheidea
ofRemoteProcedureCall(RPC),whichisasimplewayofcalling
methodsfromacrossanetwork.TheproblemwithRPCwasthatevery
vendorhadadifferentstandardfortransportingthedata.ByusingXML,
thedatainWebServicesnowmovesinapredictablemanneracrossa
networkortheWeb.
SectionIfocusesonintroducingyoutotheconceptsandstandardsthat
makeupWebServices.ThisrangesfromhowWebServicescompareto
otherremoteobjecttechnologiestotheunderlyingXMLstandardsthat
compriseWebServicessuchasWSDL,SOAP,andUDDI.Thegeneral
conceptsofXMLarecoveredinChapter2inordertogiveyouaquick
referenceforthetermsusedinlaterchapters.


Chapter1:IntroductiontoWebServices
DownloadCDContent



Overview
Microsoft,IBM,andSunMicrosystemsareallpushingWebServicesas
thenextgreattechnologytoallowdeveloperstocreateremoteobjects
easily.Earlierremoteobjecttechnologies,suchasCOM+andCORBA,
weredifficulttoimplementandhadhighmaintenancecosts.Additionally,
inthecaseofCORBA,itwasexpensivetopurchasetheoperational
license.ThepromiseofWebServicesistofinallymakeremoteobjectsa
reality,butmanyofthedetails,suchassecurity,seemtobehiddenor
spreadacrossseveraldifferentWebsites.PlusthetermWebServicesis
genericanddoesn’thintatalltheunderlyingtechnologies.Thischapter
describesatahighlevelthetoolandstandardsthatmakeWebServices
possibleandtherelatedtechnologies.
WebServicesencapsulateRemoteProcedureCall(RPC)withXMLas
thedatapackaging.ThedesignofWebServicesconsidersthepitfallsof
theaforementionedremoteobjecttechnologiesandtriestoavoidthem.
AlthoughtheuseofWebServicesdoessolvemanyoftheproblems,it
alsocreatesmanynewproblems.Suchproblemsarediscussed
throughoutthebook.
ButbeforejumpingintoWebServices,itisimportantthatyouunderstand
severalbasicconceptssuchasobjects,libraries,classes,remote
objects,andthelike.Byunderstandingthesebasicideas,theevolutionof
Webserviceswillmakemoresense,andyou’llbegintoseewhytheuse
ofWebserviceshasmovedtotheforefrontofWebtechnology.


DefiningObjectsandWebServices
Theintroductionofobject-orientedprogrammingpromisedthereusability
ofcodeacrossmultiplesystemsandarchitectures.Manypredictedthat

programmerseventuallywouldnotneedtocreatetheirownobjects
becausecoderepositorieswouldpossessallthenecessarycodeinclass
files.
Somevendorstookadvantageofthisandprovidedclasslibrariesthat
tookcareofbasicfunctionality.Forexample,manycommerciallibraries
inC++containstandardwaysofdealingwithdateandtime.Thissaves
thedevelopertimebecausethedateandtimefunctionalityisalready
writteninastandardway.Whennewerlanguagesemerged,suchasC#
andJava,thisbasicfunctionalitycameaspartofthelanguage.
However,theconceptofacentralrepositorydoesnotworkinevery
situation.Forexample,becausebusinesslogicvariesfromcorporationto
corporation,itwouldbeimpossibleforarepositorytocontainthatcode.
Inthiscase,commerciallibrariescanonlyhelpbyprovidingbasicand
genericclassesthatarecommonlyneeded,buttheselibrariescannot
alwayscontainthenecessarylogicthatacorporationneedsbecauseits
situationissounique.Certainbusinesssituations,suchasinthebanking
industry,allowvendorstocreateprepackagedlibrariesbecause
governmentregulationsenforcecertainlogic.
Atfirst,objectswereonlyavailabletoprogramsrunningonthesame
machine.Forexample,ontheWindowsdirectoryofaPCthereare
severalDynamicLinkLibraries(dll)filesthatcontaininformationfor
Windowsandotherprogramstooperate.Ifyoudoasearchfor*.dll
fromyourWindowsExplorerintheWindowsdirectory,yourresultsmay
looklikeFigure1.1.



Figure1.1:SearchResultsFor*.DllInTheC:\WINNT
Directory.
Eachofthesedllscontainsinformationthatseveralapplicationsuseto

createobjects.ThedllsresideintheWindowsdirectorysoapplications
canfindthemwithoutmuchworkanddifferentapplicationscanthen
sharethesamedll.Togetabetterideaofalibrary,class,andobject,
takealookattheC#exampleinthefollowingsection.

Libraries,Classes,andObjects
Thebestwaytounderstandlibraries,classes,andobjectsistoseethem
inaction.Inthefirstcodeexample,C#isusedtodefinealibrary.Itisa
librarybecauseitdoesnotcontainamainmethodforthecodeto
execute,andbecausethetypeofprojectchoseniswithinVisual
Studio™.
ThislibraryexampledefinesthenamespaceHelloWorld.Thisisjusta
uniqueidentifierthatpreventsthecollisionofmethodandclassnames,
whichishelpfulinlargeprojects.Next,thecodedefinestheclass
MyHelloWorld.Aclassisacontainerthatpossessesallthe
functionalityandvaluesthataparticularobjectneedstocontain.Finally,
thelibrarydefinesthemethod,alsoknownasafunction,
DisplayHelloWorld.Thisistheonlyfunctionalityforthisclassother
thanthedefaultconstructor.Thus,anyobjectinstantiatedfromthisclass
willonlybeabletocallDisplayHelloWorld.


usingSystem;
namespaceHelloWorld
{
//simpleclasstodisplayHello
publicclassMyHelloWorld
{
publicvoidDisplayHelloWorld()
{

Console.WriteLine("HelloWorld!");
}
}
}
InthenextC#codeexample,thecode,oncecompiledintoan
executable,callsthefunctionalityinthelibraryjustcreated.Whenyou
compilethepreviouscodeexample,itcreatesadll.Whenyoustarta
newprojecttousethecodeinthefollowingexample,besuretoopenthe
SolutionExplorerwindowandclickon“References.”Thenbrowsetothe
locationofthedllcreatedwhenyoucompiledthepreviouslibrary.Figure
1.2showstheHelloWorlddlladdedtothe“References”intheSolution
Explorer.


Figure1.2:ShowsTheHelloworldDllAddedToThe“References”
OfTheProject.


OnceVisualStudio.NETknowswheretofindthedll,youneedtotellyour
executablethatyouwanttousethefunctionalityinthelibrary.Inthenext
C#example,thecodemustfirstdefinewhichnamespacesituses.
Rememberthatthepreviouscodeexampledefinedthenamespace
HelloWorld.BystatingusingHelloWorld;inthecode,the
executableknowstousethemethodscontainedinthelibraryexample.
TheexamplenowdefinestheclassSayHelloanddefinesamain
method.Themainmethodisanimportantdifferencebetweenalibrary
andanexecutable.Thelibraryonlycontainscodeforexecutablesand
otherlibrariestouse.Theexecutableactuallyruns.
Withinthemainmethodweactuallydefinetheobjecthiwhichisoftype
MyHelloWorld.RememberthatMyHelloWorldisthenameofthe

classdefinedinthelibrary.Theobjecthinowcallstheonlymethod
availabletoit,whichisDisplayHello().
usingSystem;
usingHelloWorld;

classSayHello
{
staticvoidMain()
{
MyHelloWorldhi=newMyHelloWorld();
hi.DisplayHello();
}
}
Figure1.3showstheexecutabledisplayingtheoutputdefinedinthe
libraryexample.



Figure1.3:SayhelloExecutableDisplayingTheOutputOfThe
DisplayhelloMethodDefinedInTheLibrary
Example.

UsingRemoteObjects
Usingobjectsinsoftwareisagreatwayofreusingcodeattheapplication
levelonalocalmachine.Ifyou’reinacorporationandyou’remaintaining
severalhundredorthousandworkstationsandtheapplicationsoneach
system,havingtheselibrariesoneverysystembecomesamaintenance
headache.Ifanupdateisneeded,everysystemwithinacorporation
needsthenewcodeinstalled.Remoteobjects,whichareobjects
instantiatedonacentralserverandcanbeaccessedthroughouta

networkincludingtheInternet,becomecriticalatthispoint.
Aremoteobjectisavailabletoaprogramacrossanetworkoreventhe
Internet.CommonObjectManifest(COM),CommonObjectRequest
Brokerage(CORBA),RemoteMethodInvocation(RMI),andRemote
ProcedureCall(RPC)allinvokeobjectsremotelyandaredescribedin
greaterdetaillaterinthechapter.Thepromiseofeachofthesemethods
allowsadevelopertochangecodeinoneplaceandthenallsystemsand
applicationsusingtheseobjectsinstantlyhaveaccesstothenewcode.
Thedisadvantagehereisthatifyoumakeacodingerror,allthesystems
nowaccessthaterror.Thiscausesalltheapplicationsusingthatcodeto
fail.Figure1.4illustrateshowaremoteobjectcanbesharedacross
multipleapplications.



Figure1.4:RemoteObjectsCanBeSharedBySeveralApplications
InABusinessSetting.InThisCase,TheRemoteObjectServer
ContainsObjectsForApplicationsRunningOnWorkstations,
Mainframes,Laptops,AndOtherServers.
Reachingthepromiseofremoteobjectshasbeendifficult.Implementing
CORBAtakesagreatdealofeffortandacompanyincursgreatexpense
topurchasetheObjectRequestBroker(ORB).AnORBistheserver
neededforapplicationstouseremoteobjects.Onlyasmallpercentage
ofprogrammersimplementCORBAonadailybasis,soitisalsodifficult
foramanagertohiresomeonewhounderstandsthetechnology.
COMandCOM+offerasomewhatsimplersolutiontoremoteobject
computing.Mostofthesoftwareneeded,suchasVisualStudioand
MicrosoftTransactionServer,arerelativelyinexpensiveandeasily
obtainable,butCOMandCOM+aretypicallyonlyavailabletoWindows
applications.Sotheseobjectsarenotavailabletoapplicationsrunning

underUNIXoranothernon-Microsoftoperatingsystem.Inaddition,COM
takesahighlyskilledprogrammerwhounderstandseverythingaboutthis
technology.Again,itisdifficulttofindaprogrammeratthislevel.
Thequestforremoteobjecttechnologiesthataresimplertouseand
implementbroughtRMIandRPCintotheforefrontbriefly.Theyare
simplyrequestandresponsesystemswhosefunctionissimilartohowa
Webpagerespondstoarequestfromabrowser.Theproblemherelies
withtheimplementationthateachvendordecidedtopursue,andthus
workingwithRPCsoftwarefromonevendorwasn’talwayscompatible


withanother’s.Againnothavingcross-platformcompatibilityprevented
remoteobjecttechnology’sgeneralacceptance.


×