Új hozzászólás Aktív témák
-
Sokimm
senior tag
Szeretnék valakit találni, aki elmagyarázná a struktúrát a windows visualstudio-s web api-s c#-os rendszerről.
Kérem akinek van lelki ereje telefonon segíteni, írjon privátban.
Max 20 percet rabolnám az idejét. -
Sokimm
senior tag
Ez esetben akkor írok, hátha valaki válaszol.
Ha létre akarok hozni egy olyan weblapot, ami mögött sql komplex feltételhalmazhoz kötött (gui-ból kijelölt adatok alapján, dinamikusan változó) lekérdezések vannak, akkor mi a járható utam? A visualstudio .net alapon hozna létre minden formot. (drag and drop a felülettervezés? Nem lenne komplex a weblap, csak 10 gomb meg 3 táblázat (dinamikus rádiógomobkkal meg checkboxokkal).
És hogy fut majd a dolog? Az msSQL-hez csatlakozáshoz fut a szerveren az adatbázis, ez oké. A weblap index.hmtl-je mint belépési pont is a szerveren található, és elindítja a .net keretrendszerből felépült strukturált form-omat (mindennel együttvéve, sql, feltételek, gui, stb)?
És ha a szerver linux, akkor honnan rántja a .net-et? Vagy mit jelent a .net egy webform készítésénél?
Ezen túlmutatóan ha objektumorientáltan akarom a táblázat elemeit megjeleníteni (leképzeni), mert mindegyik elem egy halmaz információt hordoz, akkor c#-ot hogy tudok egy weblap mögé tenni? (ez már gondolom mélyebb kérdés)
Köszi a válaszokat előre is. -
martonx
veterán
"A visualstudio .net alapon hozna létre minden formot. (drag and drop a felülettervezés? Nem lenne komplex a weblap, csak 10 gomb meg 3 táblázat (dinamikus rádiógomobkkal meg checkboxokkal)."
Ilyen nincs. A webfejlesztés nagyon nem olyan, mint a winforms Szóval nincs mese, fel kell majd kötni a gatyát
Hacsak nem az évek óta elavult, depreciated Asp.Net Web Forms-ra akarsz alapozni, amit felejts el nagyon gyorsan.A .Net 2017 óta cross platform (feltéve, hogy a brutál elavult Asp.Net Web Forms-ot szóba se hozzuk, mert az még nem volt cross platform, csak Windows szerveren futott), tök mindegy neki, hogy linuxon vagy windows-on fut.
"Ezen túlmutatóan ha objektumorientáltan akarom a táblázat elemeit megjeleníteni (leképzeni), mert mindegyik elem egy halmaz információt hordoz, akkor c#-ot hogy tudok egy weblap mögé tenni? (ez már gondolom mélyebb kérdés)"
2022-t írunk, a kérdésed szerintem az évtizede elavult Asp.Net Web Forms-ra vonatkozik. Javaslom egy nagy lendülettel ugorj a mába, és tarts pár év gyorsképzést magadnak.
Az internet tele van anyagokkal.Ezt a projektet meg egyelőre felejtsd el, amíg ennyire durván nem vagy tisztában semmivel, és koncentrálj a Hello World és ToDo szintű projektekre.
Én kérek elnézést!
-
ReSeTer
senior tag
Helló!
Van egy programom ami adatokat olvas ki egy excel fájlból.
Szeretnék egy olyan megoldást csinálni, hogy az user egy szövegszerkesztővel megnyitható fájlban tudná átírni bizonyos változóknak az értékeit (oszlopok azonosítója), hogy ha véletlen a forrás excelben változtatnak valamit és eltolódik a figyelt oszlop, akkor egyszerűen betudná állítani egy átírással, hogy továbbra is jó helyről olvasson a programom.Milyen megoldást javasoltok? Ini fájl? txt? Írni nem kell a fájlba, csak olvasni.
Melyik method-ot ajánljátok hozzá? -
quailstorm
nagyúr
válasz ReSeTer #9754 üzenetére
Json, vagy XML.
INI egy rémálom, TXT meg 80-as évek.Találj ki valami jó kis objektumos reprezentációt, aztán szerializáció, deszerializáció.
DataContractTudom, hogy nem ez a legszebb megoldás, amit linkeltem, de ezt régi .NET-en is meg lehet oldani külső libek, NuGet és függőségek nélkül.
[ Szerkesztve ]
-
cattus
őstag
válasz quailstorm #9755 üzenetére
Ha jól értem az az igény, hogy ember számára könnyen olvasható / szerkeszthető legyen, amire se a JSON se az XML nem igazán alkalmas, én inkább YAML / TOML-t mondanék.
Do the thing!
-
quailstorm
nagyúr
Lehet én vagyok kocka, de nekem a json már bőven az ember által jól olvasható kategória, beautified formázással. Itt van rá NewtonSoft és System.Text.Json opció is.
Tény, hogy a DataContract az nem szép Json-t exportál, ahhoz a szövegszerkesztőben kell automata formázni (nálam Notepad++ és JSTools plugin, vagy Visual Studio Code).
TOML-t én elvetném, annyira nem tiszta annak sem a szintaxisa. YAML valóban megfelel az olvashatóság és az objektum konvertálás kritériumainak is, elsőre nem jutott eszembe, köszi, hogy bedobtad.
@ReSeTer: mennyire "kocka", aki szerkeszteni fogja azt a szöveges fájlt? Mennyire állandó a konfigurációs fájl struktúrája? Ha nagyon egyszerű, vagy állandó, akkor egy GUI-t sem nagy cucc összedobni hozzá.
[ Szerkesztve ]
-
fatal`
titán
válasz quailstorm #9755 üzenetére
WCF mihez kell? Az SOAP és már semmire se használnám.
NewtonSoft.Json, de .NET alatt van már beépített JSON szerializáció/deszerializáció.
A JSON nekem is olvashatónak / szerkeszthetőnek minősül, ha le van dokumentálva.
-
quailstorm
nagyúr
Semmihez nem kell WCF. Az csak egy példakód DataContract szerializációra és deszerializációra. Linkelhettem volna ezt is.
Múlt héten kellett pont, ideiglenes megoldásként egy projektbe. Nem volt szabad berakni külső libet és régi .NET*, a DataContract-os szerializáció meg nagyon könnyen elérhető, mert csak a System.Runtime.Serialization reference kell hozzá.*Tehát Newtonsoft-ot nem szabad, de System.Text.Json meg még nincs.
[ Szerkesztve ]
-
válasz ReSeTer #9754 üzenetére
Miért nincsen védve az excel vagy annak bizonyos részei a nem kívánt változtatásokkal szemben? Minden lapot/cellát védeni kéne ami az appnak bemenetéül szolgál.
Ha a programod függ a konkrét excel dokumentumtól, akkor ha képtelen vagy elérni azt, hogy ne barmolják szét a bemenetül szolgáló excelt, akkor azt is képtelen leszel elérni, hogy aki "szétbarmolja", az majd pontosan vezesse, hogy mit "barmolt" szét...
szerintem...
[ Szerkesztve ]
-
ReSeTer
senior tag
válasz joysefke #9760 üzenetére
Azt az excel-t nem én irányítom, de ha változik is valami, általában csak annyi, hogy arrébb megy néhány oszlop, mert beszúrnak egyet, vagy törölnek egyet. Ez van.
Többiek:
Aki szerkesztené, az semmiféle programozási kódot nem tud olvasni, csak ha tényleg egyértelmű mint pl:példaoszlop = A
példaoszlop2 = BEzt könnyen lehetne szerkeszteni is. Ezért is jutott eszembe az ini, mert anno a játékokban is lehetett változtatni dolgokat rajtuk keresztül, és semmi programozási tudásom nem volt.
De ha az egy rémálom programozási oldalról, akkor hagyjuk.
Valami hasonló? Nem akarom én túlbonyolítani, egyszerű olvasásról van szó.A program amiről szó van, egy egyszerű exe, egyszerű userform-mal. Nincs semmiféle config fájlja, amit én beírtam neki eredetileg, azokat az értékeket használja.
Ha én csinálok neki egy userform-t ahol belehet írni, hogy éppen melyik oszlop melyik, akkor azt minden egyes indításnál be kellene írni tudtommal. Amint bezárod, következő indításnál megint az eredeti értékek lesznek.
Kezdő vagyok, javítsatok ki nyugodtan, ha hülyeséget írok.[ Szerkesztve ]
-
quailstorm
nagyúr
válasz ReSeTer #9761 üzenetére
YAML az van olyan egyszerű és letisztult, mint az INI, én azt javaslom ebben az esetben. De INI-hez is létezik library: például.
Én INI-vel úgy találkoztam, hogy GSD (PROFIBUS). Ahhoz képest a GSDML (PROFINET, XML alapú), az sokkal könnyebben használható programozás oldalról. INI-be nem tudsz szerializálni és deszerializálni sem (vagy kutatni kell olyan libet, ami tud).
-
válasz ReSeTer #9761 üzenetére
Azt az excel-t nem én irányítom, de ha változik is valami, általában csak annyi, hogy arrébb megy néhány oszlop, mert beszúrnak egyet, vagy törölnek egyet. Ez van.
Az excel a programod publikus API-ja. Ha a másik fél nem tartja magát hozzá, akkor a te programod sem tud stabilan működni. Ha a másik fél valamiért nem tudja magát fixen (legalább verziószerűen) az API-hoz tartani, akkor koncepcionálisan rosszul van kidolgozva az az API. -
ReSeTer
senior tag
Ok, köszönöm a válaszokat, megpróbálok valamit összehozni ezekből.
-
Sokimm
senior tag
Sziasztok!
Hogyan lehet for ciklssal array-t deklarálni?
Itt a példa amit szeretnék:for(int i=0; i<3 ;i++)
{
int[] arrayname + i = new int [];
}
És ezt szeretném a végén látni:
arrayname0
arrayname1
arrayname2Valahogy érzem, hogy nem lesz ilyen, ez esetben milyen nyelven megvalósítható ez szerintetek? (ez már off topic )
-
vlevi
nagyúr
Kétdimenziós tömb lesz az, amit te keresel. Vagy, pontosabban, egy olyan tömb, aminek az elemei int[] tömbök.
attól még nem lesz 3 külön változód, de külön tudsz majd rá hivatkozni, a sorszámukkal.tombom[0][9]=7;
Ez a legelső array-nek a 9. elemébe beleírja a 7-et.Ha jól írtam le, mert most telefonról nem tudom ellenőrizni.
-
Alexios
veterán
De hol szeretnéd a végén látni? Azt leszámítva hogy a változóneveknek fordítási időben már ismertnek kell lennie is ott lenne a probléma, hogy c#-ban nem fognak csak úgy globális változók létrejönni, szóval ami a cikluson belül jön létre, az utána már azon kívül nem lesz elérhető.
Ha c#-ban nem lehet ezt megcsinálni, akkor miért szeretnéd más nyelven, főleg ha a fentebb említett megoldások sem jók, hanem kell az hogy legyenek ilyen változónevek, mi a cél?Technikailag amúgy javascriptben pl. megoldható, csak felmerül a kérdés, hogy miért akarnál ilyet csinálni?
[ Szerkesztve ]
-
Sokimm
senior tag
válasz Alexios #9768 üzenetére
Bár mindenkinek szól a válasz, de neked lett címezve, sry
Egy dinamikus tartalmú SQL táblából táplálkozik, és grafikusan meg kell jeleníteni egy fa struktúrát, aminek a szintjei és a szinten található elemeinek darabszáma nem konstans.
Erre a táblán belül hivatkozások vannak, ki kinek a gyermeke, de nem tudunk egyéb infót.
Ciklusok futtatásával darabszámot előre definiálni lehetne, ha strukturált lenne a fa, de van ahol a 4. mélységben ágazik 100 felé, van ahol egy szakaszon a 2. szint szépen növekszik arányosan. Erre kellene egy dinamikus tárhely, amit előre nem foglalok le (vagy nem is deklarálom), mert lehet ma 4 array-ből megúszom, lehet holnap 30 lesz, vagy több.
Ha a két dimenziós tömbbel gondolkodom, akkor az első cím információtombom[x][9]=7;
nem tükrözi azt, amit az adott fa leszármaztató ID lehetne, amikor én adok neki "nevet".int[] arrayname4 = new int [];
Így még kell egy kapcsolótábla is, hogy melyik array melyik fő x címei alatt mit is kell "érteni".arrayname4 == tombom[1][...]
arrayname34 == tombom[2][...]
Szándékosan ugrottam 30-at, mert nem biztos, hogy a köztes elemek fa elágazások. Azok "példányok" is lehetnének, tovább nem osztódnak.A dictionary-s megoldásnak utána nézek thx! (nagyon dinamikus a méret, a sorrend, bár nem én fogom változtatni c#-ból a tartalmat, én csak "használom" az információkat)
A végén a monitoron szeretném látni.
Viccet félretéve, ha van egy arrayname34-es elágazásom, ami alá csak "begyűjtöm" az adott array alá tartozó elemeket, akkor meghívni / kiolvasni, csoportban kezelni (grafikus tábla struktúra) el tudom képzelni, de így most minden "ős" alá kell egy ciklust írnom, hogy fussa végig kik tartoznak alá. Ez így elég erőforrásigényes.Ha c# ban nem lehet, akkor még érdekelne, hogy melyik nyelv képes futás időben deklarálni változót, ennyi az érv. js-ben lehet? Utána nézek thx!
[ Szerkesztve ]
-
quailstorm
nagyúr
Ide egy gráf adatstruktúra kell.
Szerencsére megvan a lehetőséged, hogy kész függvénykönyvtárat használj:
[link] [link] [link]
Ha szeretnéd a hátterét kicsit elolvasni.Az össze vissza elnevezett változóid meg teljes tévút és felejtsd el. Objektumokban kéne gondolkozni és a relációk adattagként tárolásában.
[ Szerkesztve ]
-
Sokimm
senior tag
válasz quailstorm #9770 üzenetére
Ez szuper, thx!
-
martonx
veterán
Abszolút rosszul állsz hozzá. Ezt bármilyen nyelven meg lehet csinálni, csak nem úgy ahogy te próbálod.
Felejtsd el az array-t. Csinálsz egy objektumot, amiben van egy lista.public class MyGraph
{
public string Name;
public List<MyGraph> Children
}És ebbe végig fel tudod építeni az egész gráfot,
Én kérek elnézést!
-
Alexios
veterán
Rég volt már algoritmusok és adatstruktúrák órám, de ahogy mondja quailstorm is, egy fa struktúra alapvetően egy irányított gráf, szóval abban érdemes gondolkodni.
Kész megoldás helyett/mellett ajánlom hogy olvass utána az adjacency matrix/adjacency list struktúráknak, mert gráfok leírására van kitalálva, és bármely programnyelvben tudod implementálni.
Itt egy példa rá c#-ban: [link][ Szerkesztve ]
-
válasz martonx #9772 üzenetére
Kérdése alapján már a táblákban kódolva van a struktúra (ki-kinek gyermeke) ezt kéne dekódolni és meghatározni, hogy a gráf csúcsai hogyan nézzenek ki kódba öntve, illetve hogyan tárolják a köztük lévő relációkat.
A kérdés nekem arra utal, hogy nem tudja, hogy a "normál" tömbökön túl van még dinamikusan bővíthető tömb, több dimentiós tömb illetve más ravaszabb struktúrák. Tapogatózik, hogy hogyan lehetne sok relációt flexibilisen tárolni, felépíteni.
Sokimm
Én azzal kezdeném, hogy
-(1)
körbenéznék, hogy milyen az általad használt UI-keretrendszerben támogatott gráf-megjelenító komponens van és melyiket szeretnéd viszont látni.-(2)
Megnézném, hogy annak mi a publikus interfésze, milyen formában várja a gráfot. Valószínűleg előírja a csúcsok és esetleg élek osztály-formátumát. Neked ehhez kell alkalmazkodni, ebben a struktúrában kell felépítened az adatbázis alapján a gráfot. Feltéve, ha nem akarsz saját UI- komponenst gyárani-(3)
Megnézném, hogy az adatbázis által kódolt gráf-csúcs szomszédossági információt hogyan tudom dekódolni és ebből előállítani azt a runtime-struktúrát ami a UI-komponensnek kell.Minnél közelebb van az adatbázis által kódolt struktúra ahhoz ahogyan a UI komponens várja annál inkább jobb pozícióban vagy. Minnél távolabb, annál rosszabb.
-(4)
Lehet hogy kell egy C# és/vagy gráfalgoritmus gyorstalpaló. Kérdésed alapján csak az egydimenziós tömböket ismered. Jó lesz ha képbe kerülsz a List<>, Queue<>, Stack<>, Dictionary<,>, HashSet<>, LinkedList<> típusokkal C# oldalon, ha csinálni is kell valamit a gráfokkal. Ugyanez vonatkozik a gráfalgoritmusokra. Feljebb volt is egy olvasós link #9770.[ Szerkesztve ]
-
martonx
veterán
válasz joysefke #9774 üzenetére
"Kérdése alapján már a táblákban kódolva van a struktúra (ki-kinek gyermeke) ezt kéne dekódolni és meghatározni, hogy a gráf csúcsai hogyan nézzenek ki kódba öntve, illetve hogyan tárolják a köztük lévő relációkat."
Igen, ez elég egyértelmű volt
És erre küldtem a minimalista példa kódot, mert szemlátomást emberünk csak és kizárólag fix dimenziós tömbökben tud gondolkozni, ti meg rögtön gráf-os legbonylultabb esetek lekezeléséhez alkalmas módszerekkel kezdtétek bombázni, miközben jó eséllyel olyan bonyolultságú a gráfja, mint egy meghajtón lévő mappákban lévő file-ok szerkezete. Aminek leképezéséhez semmi spéci nem kell, csak az én példa classom.
Persze ez is csak feltételezés, mivel nem sok konkrétumot tudtunk meg.Én kérek elnézést!
-
Cégnél hogy szokott kinézni az új kollégák kiképzése? Helyben történik, vagy elküldik a kollégát tanfolyamra?
Milyen oktatási anyagokat használnak? pl. ha infó tanárról váltana valaki programozói állásra.[ Szerkesztve ]
Eladó Lego: 42139 All terrain vehicle
-
Keem1
addikt
Srácok, elakadtam, segítséget kérek.
Van egy basic classem, kb 10 környéki color propertyvel, nevezzük ezt Light-nak.
Van még egy, ennek neve legyen Dark, ami a Lighttól öröklődik.Amit szeretnék:
- egyrészt a Light-tól bizonyos propertyket overrideolni, tehát mondjuk aColor Magenta { get; } = ColorTranslator.FromHtml("#FF333337");
lesz, és ha a Dark.Magenta kerül meghivatkozásra, akkor innentől az ő propertyje lesz érvényes.
- másrészt, ha a Dark-ban egy property nem létezik, de a Light-ban igen (pl. Green), akkor aDark.Green
is érvényes lesz, csak megegyezik majd aLight.Green
színnel (mindaddig, míg a Dark-ban is nem kerül overrideolásra a Green).Már az elsőnél elakadtam
-
Alexios
veterán
Hát, lehet érdemes lenne megnézni a c# és oop alapokat, mert ez kb a legalapabb öröklődés
Példa:
using System;
public class Program
{
public static void Main()
{
var dark = new Dark();
Console.WriteLine(dark.Magenta);
Console.WriteLine(dark.Green);
}
}
public class Light
{
public virtual string Magenta{get;} = "LightMagenta";
public virtual string Green {get;} = "LightGreen";
}
public class Dark : Light
{
public override string Magenta {get;} = "DarkMagenta";
}
Ha a kérdés az, hogy ezek statikus propertyk lennének, akkor statikus propertyket nem lehet virtualnak vagy abstractnak megjelölni, szóval felülírni sem lehet őket
[ Szerkesztve ]
-
Van egy basic classem, kb 10 környéki color propertyvel, nevezzük ezt Light-nak.
A "basic class" megnevezés base class helyett elég rendesen zavarja a megértést.
Öröklődés helyett miért nem definiálsz valami "color profile"-okat leíró egyszerű osztályt, pld "ColorProfile", annak lehetne 1-2 static readonly beégetett értéke, pld ColorProfile.Light, ColorProfile.Dark, de nyilván lehetőség lehet akár custom példány létrehozására is (pld egy ColorProfile.Default-ból) ha van erre igény.
Annak eldöntését hogy éppen milyen ColorProfile van érvényben azt egy másik osztály (-nak példánya) végezhetné ami kérésre előrántja konfigurációból vagy akárhonnan.
Mondom ezt egy sör után, illetve anélkül, hogy tudnám, hogy milyen frameworkben mit csinálsz, illetve UI-ban nem vagyok otthon
Öröklődést akkor van értelme használni amikor egy osztály viselkedését akarod módosítani/definiálni és nem akkor amikor egy egyszerű property értékét le akarod cserélni.
[ Szerkesztve ]
-
Keem1
addikt
válasz joysefke #9780 üzenetére
Jó irányban gondolkodsz
Én is már túl egy sörön, szóval.."anélkül, hogy tudnám, hogy milyen frameworkben"
.NET 5.0Találtam a neten egy ötletadó samplet:
public void ChangeTheme(ColorScheme scheme, Control.ControlCollection container)
{
foreach (Control component in container)
{
if (component is Panel)
{
ChangeTheme(scheme, component.Controls);
component.BackColor = scheme.PanelBG;
component.ForeColor = scheme.PanelFG;
}
else if (component is Button)
{
component.BackColor = scheme.ButtonBG;
component.ForeColor = scheme.ButtonFG;
}
else if (component is TextBox)
{
component.BackColor = scheme.TextBoxBG;
component.ForeColor = scheme.TextBoxFG;
}
...
}
}
Ami pont jól jönne ahhoz, amit csinálok: a Windows 10 light/dark módjának implementálására.
Ahogy ezt a kódot néztem, igazából elég lenne egyszer a light színeket felvinni, aztán abból örököltetni a darkot (hisz a light a default), és nem hasalna el a motyó akkor se, ha közben bekerülne a light-ba egy új szín, de még a darkba nem (hisz akkor csak az eredeti maradna).De ott agyalok, hogy a ColorScheme osztályt egyelőre nem tudom implementálni, mert nem tudom neki megmondani hogy az light és dark is lehet igazából.
Aztán arra gondoltam, hogy legyen egy static class, de az meg azért nem jó, mert az nem lehet metódus paramétere.
Ez a ColorScheme egy olyan osztály lehet, amiben benne van a dark és a light is, és ezeknek csak propertyjei vannak.Lehet innom kéne még egy sört és ezen csak holnap agyalni.
-
Alexios
veterán
Én ezt az örököltetést nem erőltetném a helyedben, mert egyrész semmi szükség rá Másrészt az öröklés IS-A kapcsolatot felételez, márpedig már nyelvtanilag is látszik hogy a dark IS A light nem állja meg a helyét
De ott agyalok, hogy a ColorScheme osztályt egyelőre nem tudom implementálni, mert nem tudom neki megmondani hogy az light és dark is lehet igazából.
Én itt megmondom őszintén nem teljesen értem mire gondolsz, de én a joysefke által felvetett úton mennék tovább -
ReSeTer
senior tag
Helló!
Próbálgatom az openxml-t használni word dokumentum készítéséhez.
Nem találok sehol se információt, hogy hogyan lehetne egy egész oldalt másolni a következő oldalra.Amit eddig találtam: Elemeket egyenként klónozni, majd pagebreak-et az oldal végére rakni, új paragraph referenciával, és ehhez illesztem be a klónozott elemet.
Probléma, hogy ez így nagyon sok kód. Egyrészt van vagy 5 fajta elem, ismétlődik is szabálytalanul. Nincs valami olyan method ami két referencia közötti tartalmat egyben tudja klónozni?
Ha már referencia, nem lehet megjelölni a dokumentum bizonyos pontjait? Mert most tudnék rakni egy paragraphot oda ahova megakarom jelölni, de szerintem úgy kihagyja a fejlécet például.
Valami ötlet, merre induljak el?
-
válasz ReSeTer #9783 üzenetére
Erre azt írják, hogy rekurzívan (mélyen) klónoz:
OpenXmlElement.Clone Method (DocumentFormat.OpenXml) | Microsoft Docs[ Szerkesztve ]
-
leslie23
tag
Sziasztok,
elég noob kérdés, de nem találok rá egyértelmű választ. Van az MNB-nek egy jó öreg ASMX/WSDL árfolyamok webservice-e, amit mint web reference behivatkozva szépen le lehet tömegesen lekérni árfolyamokat.
Így néz ki a folyamat most nálam: példányosítom aGetExchangeRatesRequestBody
osztályt, beállítom az objektumcurrencyNames
,startDate
,endDate
tualjdonságainak értékét.MNBArfolyamServiceSoapClient
objektumGetExchangeRates
metódusának az imént létrehozottGetExchangeRatesRequestBody
objektumot megadva mint argumentum, egyGetExchangeRatesResponseBody
objektumot kapok vissza, aminek aGetExchangeRatesResult
metódusa adja meg a response XML-t, benne az árfolyamokkal.Nekem technikai okok miatt arra lenne szükségem, hogy ezt a műveletet web reference nélkül tudjam megoldani, a kérdés, hogy ez vajon lehetséges-e? Valami olyasmire gondolok, hogy egyszerűen felépítem a request XML-t (LINQ to XML), majd egy hívás után (gondolom a GetExchangeRates endpoint lesz a kulcs) megkapom a response XML-t. Tud ilyet az ASMX?
Előre is köszönöm a segítséget!
[ Szerkesztve ]
-
leslie23
tag
válasz martonx #9788 üzenetére
Köszi, pont erre gondolok, csak nem tudom összehozni...
Egyszerűség kedvéért a GetInfo endpointot górcső alá véve, így néz ki a kód web reference használatával:MNBWebservice.MNBArfolyamServiceSoapClient Client = new MNBWebservice.MNBArfolyamServiceSoapClient();
MNBWebservice.GetInfoRequestBody b = new MNBWebservice.GetInfoRequestBody();
MNBWebservice.GetInfoRequest r = new MNBWebservice.GetInfoRequest(b);
MNBWebservice.GetInfoResponseBody re = Client.GetInfo(b);
és ennek kiváltását így próbálom összehozni:
string soapXML =
"<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:web=\"http://www.mnb.hu/webservices/\">" +
"<soapenv:Header/>" +
"<soapenv:Body>" +
"<web:GetInfoRequest/>" +
"</soapenv:Body>" +
"</soapenv:Envelope>";
using (WebClient client = new WebClient())
{
client.Encoding = Encoding.UTF8;
string uploadString = client.UploadString("http://www.mnb.hu/webservices/MNBArfolyamServiceSoap/", soapXML);
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(uploadString);
}
Bizonyára triviális a dolog, de nem értem hogy pontosan melyik URI-t kellene céloznom... Az endpointot? Az ASMX-et? Mindenre 404-et kapok...
-
dqdb
nagyúr
válasz leslie23 #9789 üzenetére
Tegyél be egy Fiddlert a webreference-et használó hívási láncba, és máris lesznek kérés-válasz példáid. A cím az ez, azaz az .asmx címe, az actionök azok namespace-ek/típusok, nem pedig konkrét címek.
Érdemes átfutni gyorsan a szabványt, hogy átlásd a séma felépítését.
tAm6DAHNIbRMzSEARWxtZW50ZW0gdmFka5RydIJ6bmkuDQoNClOBc4Ek
-
Kicsit off.
Szeretném megkérdezni, hogy ki használ tabletet Pluralsight videók nézésére, illetve szakmai könyvek olvasására?
Szeretném tudni, hogy mi a minimum méret, felbontás, ahol már olvashatóak a ps videón a betűk illetve a könyvek. -
leslie23
tag
Köszönöm, sikerült végre! Próbáltam már az asmx-et célozni, de 404-et kaptam, mint kiderült a https miatt...
Http-vel működik pöpecül, köszönöm a segítséget mindkettőtöknek!Arra viszont nem találtam példát/leírást, hogy a web reference-es kódból hogy tudnám kinyerni az XML-eket, erre tudsz linkelni esetleg valamit? A Fiddlerrel ha jól értem nekem kellene felépítenem a request XML-t.
[ Szerkesztve ]
-
dqdb
nagyúr
válasz leslie23 #9792 üzenetére
A Fiddlerrel ha jól értem nekem kellene felépítenem a request XML-t.
Rosszul, ahogyan martonx is írta, a Fiddler csak egy proxy, amin keresztül bonyolítva a forgalmat lehet monitorozni a kéréseket és válaszokat. Opció lehet még a message logging és tracing bekapcsolása.tAm6DAHNIbRMzSEARWxtZW50ZW0gdmFka5RydIJ6bmkuDQoNClOBc4Ek
-
leslie23
tag
Csak most jutottam gép közelébe, köszönöm szépen mindhármótoknak, kipróbáltam a SoapUI-t és a Fiddlert is, remekül működik mindkettő!
-
kingabo
őstag
válasz joysefke #9791 üzenetére
Én régebben olvastam 7"-os ebook olvasón, megnövelt betűmérettel még bkv-n is jól olvasható volt. Ha pdf-et olvasol akkor olyan progit keress ami újra tudja tördelni a szöveget, ha megnöveled a betűméretet (vagy sokat kell scrollozni), de inkább vmi ebook formátummal jársz a legjobban
PS: egy 2012-es nexus 7-en tudtam kipróbálni, szerintem kevés hozzá méretben -
leslie23
tag
Sziasztok!
Segítséget, vagy magyarázatot szeretnék kérni tőletek a következő probléma kapcsán, StackOverflow relevánsnak tűnő kérdéseit már átnyálaztam, de nem találtam számomra választ. Van egy WinForms alkalmazás, amivel SQL queryket szeretnék végrehajtani (kb. 70-80 darabot, egyenként 5-15 másodperc az execution time) a lekérdezések eredményeit pedig Excel-állományokba menteni. Nem parallel async végrehajtás működik, viszont kicsit tempósítandó a dolgokat átírtam Parallel.Foreach segítségével, a szimultán szálakat 15 darabban maximalizálom. Az SqlConnection using blokkban van, ennek ellenére az alábbi hibaüzenetet kapom: "The timeout period elapsed prior to obtaining a connection from the pool. This may have occurred because all pooled connections were in use and max pool size was reached."
Ha a connection stringbe belefoglalom a Connection Timeout = 0 paramétert, akkor megintcsak lefut szépen a cucc. Próbáltam szintén a connection stringben állítani a Max Pool Size-et de nem volt hatása. Sajnos nem értem, hogy pontosan mi történik, ha jól értem a using végén a kapcsolat zárásra kerül és bekerül a connection poolba. Viszont ezután miért történik timeout, mikor a következő szálon ismét szükség lenne a connectionre? Illetve ha Timeout van, miért nem tud új kapcsolatot létrehozni?
Köszönöm, ha valaki rá tud világítani mi itt a kulcs.
És egyből egy másik kérdésem is lenne; a Excelt az Interop liben keresztül kezelem. Neten azt találtam, hogy maga a COM Interop nem thread safe, feltételezem ez az oka annak, hogy parallel futásnál időnként COM error, application busy üzenetet kapok (5 futásból egyszer). Alternatív megoldásként felmerült, hogy a parallel végrehajtásnál csak egy DataSetben tárolnám a lekérdezések eredményeit, majd ezt követően egy külön műveletben sorosan generálnám le az Excel-riportokat. A kérdésem, hogy mennyire célszerű nagy mennyiségű adatot (pl. 80 query, egyenként 30-40 mező és 10-12 ezer rekord) memóriában tárolni míg elér a folyamat az Exceles lépésig? Vagy mi lehet itt best practice szerintetek? -
martonx
veterán
válasz leslie23 #9798 üzenetére
Manapság, amikor a gépeknek van minimum 8GB ramja, szerintem semmi se akadályoz meg abban, hogy ramban tárold, amit csak tudsz. Mi lehet a legrosszabb, ami történik? A winforms appod memória használata felmegy 1-2GB-ig? Na ügy
Az első kérdésedre elég egyértelmű, hogy mi történik. Ha nincs a connection stringben a timeout beállítva, akkor a default azt hiszem 30s.
Azt írod, hogy ezek egyenként 5-15 másodpercesek. Igen ám, de nem nehéz belátni, hogy ha ilyen queryből futtatsz 15-öt párhuzamosan, akkor szegény DB szervernek sem 5-15 másodpercébe fog kerülni egyet-egyet végrehajtani, hanem ki tudja mennyivel többe (SQL szerver erőforrásaitól függ). Ergo simán elérheti a 30 másodpercet is 1-1 lekérdezés ideje, és voilá, máris kapod a hiba üzenetet. Legalábbis szerintem ez történik, és ezért is javul meg, amikor connection stringben belefoglalod a korlátlan timeout időt. Vagy egyszerűen csak megölöd a DB-t, és timeout időn belül még új connectiont létrehozni sem sikerül felé.
Biztos, hogy valami ilyesmi lesz a problémád forrása.Én kérek elnézést!
Új hozzászólás Aktív témák
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- Kávé kezdőknek - amatőr koffeinisták anonim klubja
- Gumi és felni topik
- Politika
- Xiaomi AX3600 WiFi 6 AIoT Router
- Horgász topik
- MW2 - MW3 játékosok baráti köre
- Peugeot, Citroën topik
- gban: Ingyen kellene, de tegnapra
- Szevam: Érzelmi magabiztosság/biztonság - miért megyünk sokan külföldre valójában?
- Tippmix
- További aktív témák...