Клубове Дир.бг
powered by diri.bg
търси в Клубове diri.bg Разширено търсене

Вход
Име
Парола

Клубове
Dir.bg
Взаимопомощ
Горещи теми
Компютри и Интернет
Контакти
Култура и изкуство
Мнения
Наука
Политика, Свят
Спорт
Техника
Градове
Религия и мистика
Фен клубове
Хоби, Развлечения
Общества
Я, архивите са живи
Клубове Дирене Регистрация Кой е тук Въпроси Списък Купувам / Продавам 07:16 21.05.24 
Компютри и Интернет
   >> .NET
Всички теми Следваща тема *Кратък преглед

Страници по тази тема: 1 | 2 | 3 | 4 | >> (покажи всички)
Тема Remoting vyprosche?  
Автор БOИЛ ()
Публикувано27.06.03 08:58



Zdraveite !
Problema mi e slednia :
Chrez Remoting tehnologiata i VB.NET se mychim da napravim Aplication Server.
Podkarahme go gore-dolu za sega , obache imam neshto za pitane :
Naprimer pt Clientskoto prilojenie se vika method na AppServer-a , koito method triabva da zapylni obekt DataTable prez ADO.NET ot MS SQL Server 2000.
Vyprosyt mi e :
Po kakyv nachin stava predavaneto na DataTable-a na APp Servera , i toi po kakyv nachin go vryshta . Zashtoto pyrvia nachin koito mi doide na uma e kato vhoden parametyr na methoda . Obache ako predam DataTable-a ByRef -> toest adresa mu e na Clientskoto prilojenie ...Ako e ByVal , togava kakvoto i da se pravi na AppServera to ne se vryshta obratno pri clienta ....
T.e. kakyv e nachina za predavane i vryshtane na danni ot i kym AppServera ?
Като допъlnitelno info za AppServer-a : Izpolzvame :
MarshalingByRef, Server Acivated Object,SingleCall

Blagodaria predvaritelno!

P.S. -> ideiata za cluba e mnogo dobra . Tyi kato tova e nova tehnologia , nadiavam se malko po malko da se ojivi ....Az lichno pisha na VB.NET ot malko poveche ot godina , no vse oshte imam oshte mnogo,mnogo da ucha ....



Тема Re: Remoting vyprosche?нови [re: БOИЛ]  
Автор шeф нa Coди Дeвня (full optional)
Публикувано27.06.03 19:19



az lichno bih go serializiral kato XML pri clienta, prashtam go kato stream na server-a, server-a poluchava xml stream, ot tozi xml si prava data table na server-a, rabotia si varhu neia, pak ia serializiram v xml s promenite i ia prashtam kato stream obratno na clienta koito si ia obrushta v datatable

tova koeto ti se opitvash na napravish mnogo prilicha na DCOM, koeto e veche mnogo ostariala tehnologia i e izcialo zamestena ot web services/SOAP/XML scenarios

tova koeto az se opitvam da ti obesna mnogo prilicha na web services

taka che moeto mnenie da razuchish web services i da minesh kam tozi rod komunikacia za da ne ti se naloji da prenapisvash skoro app server-a si :))))


XM TurboCT .. where comfort meets power

Тема Re: Remoting vyprosche?нови [re: БOИЛ]  
Авторrosen (Нерегистриран)
Публикувано28.06.03 17:18



Пиши на кирилица бе, кютук



Тема Re: Remoting vyprosche?нови [re: шeф нa Coди Дeвня]  
Автор БOИЛ ()
Публикувано30.06.03 08:48



Blagodaria ti za otgovora ....
Za Web Services chestno kazano ne se biah zamislial ...No vse pak Remoting uj e naslednik na DCOM /pone taka go obiaviavat/ ...A za Web Services - te ne sa li za Web Aplications ? Ako sa -> niama da mi svyrshat rabota ....



Тема Re: Remoting vyprosche?нови [re: rosen]  
Автор БOИЛ ()
Публикувано30.06.03 08:49



Ti mai ne si malko ГЛУПАВ .....Nai - veroiatno si obyrkal cluba ...."Cigani i Romi" se namira malko po-gore...



Тема Re: Remoting vyprosche?нови [re: БOИЛ]  
Автор Fahrenheit (ASNative)
Публикувано30.06.03 11:18



Мне, и за други работи ще станат. Какво ще ползва методите на сървъра няма голямо значение... дали друг сървър (web) или клиентско приложение... Генерираш си проксито и си пушка :)

ASNatives can usually be found in dark rooms where the only light is the glow of a CRT …


Тема Re: Remoting vyprosche?нови [re: БOИЛ]  
Автор шeф нa Coди Дeвня (full optional)
Публикувано30.06.03 11:23



по принцип да ... web services се появиха когато DCOM срещна the internet ... и тъй като DCOM има нужда от paired connection, а това през http не става ... и се появиха web services ... които според мене са гениални ... web services са subdomain на .net remoting infrastructure ... като всяка технология е направена да решава определен домейн от проблеми ...

ако мислиш че имаш нужда точно от remoting има една книга "Advanced .NET Remoting" ... не съм я чел ама мисля че ще ти свърши работа ако можеш да си я поръчаш ...

освен това решението което аз ти предложих прилича на това което всъщност става при remoting: значи, за да може един обект от един application domain да се подаде като параметър на метод на обект от друг application domain "нашия" обект трябва да се сериализира и прати на другия application и там да се реконструира. За да стане това обекта трябва да бъде маркиран с [serializable] custom attribute или да имплементира ISerializable интерфейс. Локални обекти които не могат да бъдат сериализирани не могат да бъдат предавани като параметри на друга апликация .. тоест те не са remotable ...

имаш 2 начина да предадеш един обект на remote application:
1. by value: тоест копие на обекта се сериализира се праща на remote application като binary stream където се реконструира отново
2. by ref: тоест праща се reference към обекта на remote application-а, където от този ref се конструира proxy към нашия обект ... и channal-a по който текат messages остава отворен ... всяко извикване на метод на този обект генерира roundtrip между proxy/stub двойката ... така че с DataTable ... просто performance-a ще си разкаже играта ...

доколкото разбрах тебе те интересува втория начин ...

тука има едно обаче ...

начи DataTable наследява MarshalByValueObject който както става ясно от заглавието му не може да се предава by ref при remoting ... обаче това е направено с цел ... по принцип е лоша идея да се предават by ref големи обекти при remoting, защото по channel-a между proxy/stub двойката става прекалено голям трафик и следователно performance-a пада значително ...

по-принцип DataSet и DataTable са единствените обекти който наследяват ISerializable и могат да се ползват при remoting ама by value :(

такааа ... начи аз лично виждам два начина за процедиране от тук нататък -- my way or the hard way :)))))

1. the hard way: правиш си свой клас който наследява MarshalByRefObject и правиш copy/paste от сорсовете на DataTable там ... което лично на мене ми звучи като да те пуснат в ада и ти да си избереш най-големия огън и да се цопнеш в него :)))

2. my way: пращаш си DataTable by value, променяш си го и го връщаш на клиента като return value, при което той си сменя reference-a към него и готово ... ако не можеш да върнеш DataTable като return value, тогава го сериализираш в XML или в квото си решиш пращаш го като string на клиента, на сървъра го реконструираш в DataTable, работиш си върху него, пак го сериализираш на string, връщаш го на клиента като return value, клиента си го рекунструира на DataTable и всички са щастливи ... и не губиш performance :))))

нещо то сорта :

DataTable myMethod(DataTable dt);





XM TurboCT .. where comfort meets power

Тема Re: Remoting vyprosche?нови [re: шeф нa Coди Дeвня]  
Автор БOИЛ ()
Публикувано30.06.03 14:10



Отново ти благодаря за обстойния отговор...
Тук също го пробвахме този вариант /DataTable-a да се връща като Rетурн Валуе / и се получи/и то без да сериализра / ... Най-вероятно ще се спрем на този вариант ...
А между впрочем четох няколко глави от книгата на Инго Раммер - Advenced .Net Remoting, където в прав текст си пишеше ,че когато се изпозва MarshalByValue , тогава изпълнението въобще не е "Remoting" а си се изпълнява на клиента ....По този начин според мен си губи смисъла ...



Тема Re: Remoting vyprosche?нови [re: БOИЛ]  
Автор шeф нa Coди Дeвня (full optional)
Публикувано30.06.03 22:07



начи сериализация винаги има ... дали ще я направиш ти или .нет е въпрос на ентусиазъм :)))

а за MarshalByValue и MarshalByRef се бъркаш нещо ... значи това се отнася за параметрите на метода на обекта, а не за самия обект ... обекта ти е винаги remote ... щото ако можеше ти да отидеш при него или той да дойде при тебе нямаше да има нужда от remoting въобще ... :))

това което са искали да кажат в книгата е че методи на обекта-параметър който маршал по референсе към сървъра се изпълняват на клиента ... скив по-долу примера ... начи при маршал бай реф: Execute ще се изпълни на клиента обаче тебе не те интересува това толкова колкото те интересува MyRemoteMethod, а той винаги се изпълнява на сървъра ....

примерно:

class CMyLocalObject
{
void Execute()
{
doSomeThingHere();
}
};

class CMyRemoteObject
{
void MyRemoteMethod(CMyLocalObject o)
{
for ( int i = 0 ; i < 1000 ; i++ )
o.Execute();
}

};

void main()
{
CMyLocalObject o;

CMyRemoteObject r = CreateObject(...);

r.MyRemoteMethod(o);
}

начи представи си какво става при подаване на параметъра с референсе и като валуе :)))

начи при валуе се праща копие на CMyLocalObject при което MyRemoteMethod завърта един бърз цикъл до 1000 и излиза ... всичко става на сървъра щото той си има копие на CMyLocalObject и не трябва за нищо да се обръща към клиента ...

а при референсе се праща референсе от тип CMyLocalObject на MyRemoteMethod при което той конструира прокси код който реферира към CMyLocalObject и при всяко едно извикване на CMyLocalObject::Execute() се прави извикване по проксито на CMyLocalObject::Execute() ... тоест имаш 1000 отивания и връщания между клиента и сървъра .... което хич не е гот :(


XM TurboCT .. where comfort meets power

Тема Re: Remoting vyprosche?нови [re: шeф нa Coди Дeвня]  
Автор Vroomfundel (непознат )
Публикувано02.07.03 17:14



Добър отговор и добър пример. И все пак идеята за ползване на WebService си е по-добро решение. Само да не тръгнеш да предаваш самия DataTable през уеб метода, напъхай си го в DataSet.






Страници по тази тема: 1 | 2 | 3 | 4 | >> (покажи всички)
Всички темиСледваща тема*Кратък преглед
Клуб :  


Clubs.dir.bg е форум за дискусии. Dir.bg не носи отговорност за съдържанието и достоверността на публикуваните в дискусиите материали.

Никаква част от съдържанието на тази страница не може да бъде репродуцирана, записвана или предавана под каквато и да е форма или по какъвто и да е повод без писменото съгласие на Dir.bg
За Забележки, коментари и предложения ползвайте формата за Обратна връзка | Мобилна версия | Потребителско споразумение
© 2006-2024 Dir.bg Всички права запазени.