From 8ebb1303f7e046bc06984bf53fbcce26d689dac7 Mon Sep 17 00:00:00 2001 From: Ernie Burghardt Date: Wed, 10 Jun 2026 14:37:25 -0500 Subject: [PATCH 1/5] Update dotnet-client examples to gemfire.client 1.0.0-1092-beta.2 Remove tracked .vs/ IDE artifacts (already covered by .gitignore). --- .../DesignTimeBuild/.dtbcache.v2 | Bin 269017 -> 0 bytes .../GemFireClientExamples/v17/.futdcache.v2 | Bin 2157 -> 0 bytes .../.vs/GemFireClientExamples/v17/.suo | Bin 83456 -> 0 bytes .../v17/DocumentLayout.json | 268 ------------------ .../authinitialize/authinitialize.csproj | 2 +- .../cachelistener/cachelistener.csproj | 2 +- .../classaskey/classaskey.csproj | 2 +- .../classaskey_windows_only.csproj | 2 +- .../continuousquery/continuousquery.csproj | 2 +- .../dataserializable/dataserializable.csproj | 2 +- .../delegatecachelistener.csproj | 2 +- .../functionexecution.csproj | 2 +- .../jsonconfig/jsonconfig.csproj | 2 +- .../pdxautoserializer.csproj | 2 +- .../pdxserializable/pdxserializable.csproj | 2 +- .../putgetremove/putgetremove.csproj | 2 +- .../remotequery/remotequery.csproj | 2 +- .../dotnet-client/sslputget/sslputget.csproj | 2 +- .../transaction/transaction.csproj | 2 +- 19 files changed, 15 insertions(+), 283 deletions(-) delete mode 100644 clients/dotnet-client/.vs/GemFireClientExamples/DesignTimeBuild/.dtbcache.v2 delete mode 100644 clients/dotnet-client/.vs/GemFireClientExamples/v17/.futdcache.v2 delete mode 100644 clients/dotnet-client/.vs/GemFireClientExamples/v17/.suo delete mode 100644 clients/dotnet-client/.vs/GemFireClientExamples/v17/DocumentLayout.json diff --git a/clients/dotnet-client/.vs/GemFireClientExamples/DesignTimeBuild/.dtbcache.v2 b/clients/dotnet-client/.vs/GemFireClientExamples/DesignTimeBuild/.dtbcache.v2 deleted file mode 100644 index a0e2c7214d5f1662d9b32602c584cdd2ff04d10e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 269017 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

w8t$^s z^$a;5mggr8_qosYa;SIUdYHa6+*dx=$Dy|Z9A-BScg5%WI@B+~Ve->(-}qdAhXw>V z%#9lETb~O{JMz@2;lA^^!4AD0xE^L!4X1o=NXTiiJn?F{AAD}8L+=Kzhk04U{pfS= zIW#Q5VcOPkSAA}{Ln8tlW_1mB&F4lsG%CPd6YjdtjSk5^@|>`_-p@Wa)}e8M>-{X; zFFrRun7z9hws0FduEM=lI-Ihu#lxn65TlTA!Qd z(DVS8R=9LNH^ZTs0S=Sh=6X?|o8{2#0EfA7!zKCL9EauxxFq3Hd~O~_EddTQ>E?PF zd~N|oA^{E)?S{+fbBi##2yhvNyUpj8V8jsMFimf+m)Yl*IkY^$VHV$Tclg{2hgJqS zO!6Bpi_fic=z{=jE5B5Da&(&#iZ8Lx95qgWeeSqJCjuOn zgbY{A=T18GX@J9uk>Q^7xl<0E4scjdGTc)>cP1o5$?Hvqd)nvDIrLfJdRUG!TuGlh z@6d$+ht(>>mGZfZ4qXaxSj;k9X`j37(B}aTYh8vb<8xm)^ksmaxgQ<+DZpWk&u}$-?y5uo3~*QiG+a%eyXMgK0EZPq!`1e=e>wDXfWrc! z;p+O_4TpXSa9Ce7Tz#MW)uG=49F`vq*U;zExRii-)tmmV1+PvTu943~m>dx+TD2ZPRc~eJ-6#kpPFKPs26$xu{Et0j{}lEqpG?rQ`sIg;R6ARz8>FQu+Xg zbydT)@wp5x-5TK92-nu1zai^;IImB zt~b)>3b|A`z+sWzaHD*#h)YES9Me%4xm1@*1vsP+3^&Q=o^`2ofI~RJ za8rElIhURfaL6tg?tPytDrq7jksX~B5Fv4&ZUF00@ zq~(5Ob43K}nz2)DvBHV9&6WO>4w3_sf)!KdD6_q`inei?$XQX(Qs;k$C1?1MbH3hjc23Lsd8u| ztv6+ZDIfk9Ax`wPL+olDV~?HiID*=_6{xdIug5Og#jQwhxYX5@Zl-iMrAO>dJ@Gh& z-gIB2UM}@U>EqH{D1BY(htl7r0Vo4q8iX>~rMFRrxbzOnP?z3CdC#R`D8pSEfilvi zQ7EHb8iO*{?bBz47vh|J(&mMAT?YK78DtJWy3wQ7UXMypp)UeT&8 zN?Wa7MR`@Lb|~$%dJW|@t=gls*Qx_b2dz4ybkwR7N++#4qjbjMwZ&KB_sp`8_^?j;Rsftq752;G0svlF; zPpRr^s`_WDx|XW0r>cLYs-IKUja2nZs`@om{gz5;u!&j%cLAOD-Lz$sFpgW-~&|T2o&^=IA=w9ePC>xX=$^qqs?uQ0ub2)Gjp+hlMTUjHMT403*O57@mB zZ#K9el{XtafcoceHh2P?4W5Y5$p}9p75Hf^M|dhirz7|~3O8>yc-Cw-crHR`BlKD9 z5$`x3%Mo6P&_%oh-w4SO+QV>*m>;*Qs4PGIoS=&ODL~lR&tH2Ou4$82CA@w;E&U1$ z1*)e#>KUQJB7y1|k18otSRhc9^r%#!!s37`)uT!YmEKVZ?t6JSSpM>g-E2^+vR=Q+ zNx$xNC`Y z=us~Tl_MnNr(W`?NO4TR9eBvc!R zUI}!flSg$Hs%=Ox50gOVTCWS$E+m$RIU+-K5vqMiC{K0qs5gY_7!t`-Z+KK!p*n{I z@>Exk>Lyf|kT{;|=26{+>grIpKqtC;R1cxLheYvI50C08RL_tgp6cmQZwl2bB!;Kn z^r&7!^$7{#sa_t{Td2Mv5j@q~qxuNdKO}&s`gqh^LJf3iP@ofUc~oDa28V?2R9}zk zC)ALT=$-24QT>G)8WOxy{XJ@cQ16Ar?$iK}8YtB8kkFkP=uv}&8W|F~Q-eHeuu!8z z0(Z)8HfY+UmECMmI$<{(lup>q2Bj0Tj8U`Yr^)`1*c=WPihZd$LLCeV&Eec3L(LWH za7bhh#}XN8o=`_a0&_UE$WZfzIvx_2!=XloS|HTPkgy!iJTlZmp-zQF6hJX&~7$pJ_;I#cbU(`$MVSu3%}uPFGFn=DlGb@wtCbyp~8Z1 zYMV!G7b-0FhJ(Y*pSVM)u+SUM6*JUMp~50>YNto-5-M{@;0>penQQG9DlG1XL(2@c zN2su{8_qN{)F(oPMcr`ZnW6Ry6&7^EiD-t}CsbI>4F{$fYQIonAvc_-W~c)~g+<(O z+?t^d3KbS`!)a`WIwVwBybXu78S1c5Vc|BMa0*Rg@xE~ex9K|6DlmihU4`NbzZ2j z02@xp4!s2Tsn!02t@{(&m`N_4bSZOm)_9gIY+CTj# z*Z%IC4W2WRv@}s(7@!1G98+HPGHB(oRg_DwAu8D3C3NsFkW*Xf<<#os!DfSL`l+<) z7L|_fMe+0iH_=}TlBg2zy^gtvQa1$5_H@q9$Zbj7B$dh0C z(=u+kk@5LY&bd8^f4)MVz(34Pc=qacK^fdGgR1!*sNaLi zt%UO6v+xkK8h#D57Fq}8#cK~kAHr{hHbI-AkDx8k$Iw=28}tace9#W~M^W=byWk%~ z-Gll`0`Hl(Hvt>o?M>jjxczMR$Ls;N2NJN+E}Mfehu9o~In3rT%n>$6V2-jm3Udrs z98SmaID$^#PdFKS{wW?uQekA>3P)&FgddSyTOG@~t%=ZD{4Bsrzuz-&oyodwjL^CW zZH_(S9a~~qx2+M{j(6Z2fvg*D+GI3Ll#qUfZGrbck#)oEyZn)tB783||0db9o}3~YqD-N7Kor(Q6WDH!(%l{sV^Je!J(HH*7i$v9P6`ejpb(uqPg6=zd% z=BLUZO2uJfLOwcQMR=A%em1e^FR7Tm5YXo5q!TtjC!MhQIq8JW&q*h2eoi_uHe|ax z^>*y%t5!pV8XvM*of_g%?+7(9WUD&Nsm8w4P@yJ=Y*dFSS3|uk)YOn|>M$c~sP}}L z7P3hlCTtBgOsE+lTh!V7oaqwoS#5sKYlX7;Iq8JW&q*h2eoi{E!Wd=qbL+fLte4*~ z*FrXvQ#L;*pB$T?lTO(DoOHtG=cE%hKPR2|+vVr(Ci3%hKSXGwADP1no%Wyn_#c;_ z!*WY(gEp*iUXQ3!;v2f^S@DfrRa$&wS3M`biL0I$-_%uQ#5Z%*3*xcqTMqvZ_*aB} z_MhB{{1@B7Z8R~vUrhPcl;2GG3&-qMg>DD8lw)?wf-$?*|BqsJHeF}8gBz^X+eo*) zjhQ2qAqdo=*ifBXrqyzEV!2i;P*!NQ5@n@Ut58;H^#RHUTCGM|t<@ToHCnAjS*z7L zlyzFIM_I4c29yn2eTed*RvS?^YPAVv6Sjgwv7tJ<9UMYJ4?=mMhoHRB!_Xs8KIl;> zKlB(>04fL-f(k=6BKP->$Q?wC?GO|nkz0??#$mkvM7GWF^D5_$5H?M zh};=Oh5{li4$u0-e`5&Amzh=|-bv54Ha5&91A zz&8RBIoxo`G?0zRNhj=faMFoCD4s_`)H5Ncx?(GJLp2mC)uB>>&5as*R3o9D4LQ*j8?l>f zH5TeQhn^2ytFcEl5vokcX|Ae?M>Q3yY{*%z*yY{)iOqy6A99i_Hi0)(bD=7Roa2f; z;tlnOf^Rm?hQ0AkzwCB!oxDzTmd}@svq>jxoJ~4m<80Ci8)uVF%nCVg6@Po#{9GL& z)SQshR`Hjc4K-4zc_C-5;_p5iYLrk5LQYy$qdaP~P>Vv&S;gO+j(w>yLM;h7Wfgz1 z+E8PKTIK}LShaCB(4c55NhfTaO*&!YY|@F3j8R+UH%z*a(@^bp za9+E#-44$0gpISwe?vCTCY|`(#o6wpXf&4LQVEn8r7M1H3#)0#<~vA?rH`t7lJu(T zs>j4vb5#NH)m>Fkd<|C>5?|9*g~iu$)#Ku8yQ--8I<9&`d|g)+6JO6&Pl~Vas^a1s zxc?&ww*URHrB_TO?GCd6++C*J{g>Yk?gKBUHu|PxOTXuwnzA{y|JYsN?B;Jar?yn9 zWr&a2oEo;gRmahZ<650SIib}_l#^P0it?#er%+C5bsFWgR%cMoXmu9ltXAhx&S~`- z%4b@gM>((61(XX~T|~L4)g_cmT3yC&PB(A<_J2CI^s_&0OSfcXbyA@8PzLB$C?k{! zx(&J=$_(8B-3euZ?t<=y?t!vG_d@qU*`VxD4k#ydKlA{U3(5`IoSNOr?f+&gH#dr- zccHMH+AVnfzmro-2cGk35!63FpOzGTo|2-J66Hsv%`!ykTms!1rHoO{Fa3TCw@lG8 zyrtZ2QOXph+hdP-N9HJfl|Xk!DGT0#Z`gbqUB|w8|4NXdIjY^lO`3sCl4D=$Pv64L z=F@CG&Hofu^ge|z$~>#hr%5MlK217d^J&rvn@^KY)U?NydO6nS_PA276CLewrCulO zai#Ke!X8&Dov_=jNhfSRO**mGp>=`m{6z1be3DS>9oi6}CVA9kp+0nIV}P3MQB#E4 z4ZJ5 zR5}rNTb5q14iY&uo zsxC@ht?HrF)2cp7eXSaxG|;LcN<*z0p)}H}F-l{tnxHh%swqlSt(u`Uv-_yoebm%q zt(M@!utck+C^nyl6Wi4>bi(G-kkzsIG<($OfAUeIxsWBx4Ta^?^5FIVPCo4+@SIP} zi~8s1(;h}X?cpdr66Hsv&GNG%1x$4ox0K$ISfQo-0G-ccx)Pb(ay zB6tVBVe@G=pGFGlJW6oL39Jd&e44^3;P~>2R;6VPjZvm(^_)-{9fhNV ze=zY!*cfGsR?iES$w3;;r_9D_HlG%279Nz%r+KZw=r8uAs>>(G=F_ATHlHS)u=zCU zgw3Z(Cu}}VI$`r^(g~YSlTO%tnsmbE)1(tNpC+BK`84Uo4u^II#>msXd-54V?Q&>$ zfSTb^GlkmY&?fZYOh240+ii9&9uqp)4V=ljBN91@|m#tH0gxRr%5MlK217d z^J&rvn@^KY*nFCFA}*g+#-z}YPkSLs1soa|>7vyeC~s)h6{V|I-B7w|)g7g~Ry|O9 zXw?&?r&e#Gys1?$lwMl(M(M3pACx{?y@m3YR((D>sbrj`4JD+ym?w^JXkv-=#l{%phouSvEF3=lLSEw7* z9qIw~gx-XDLA{|q&|6Sns2|iH8UPK120??Nx1k}>JJ3+*KRKUP6j`#zp|E^fF}(gq z@@Y?ile0dbgy)P}anwIQqxKXsYEMO}M3f(qID0ylQF|szC6PG8OTW*krJ9UdsVJpJ z>DkyL-cdT1QF|^*&*L5VhRvwijGE1;@eox#E9(Lo93;~G#F)*f#qBUy&J5^PdFj_( z4&5DCM=9@76@RyNL3s5$rX4=GmLn-!UGivy&SEdv7{J9HvI&G)DULY;Kz(*U)=qZSHv%AwN%%AWCQ+GI0oULP=zV>4>4eRw zNhfSZO*&ySYSIatQIk%@Wz=5uGionIsgxf}!)jV3|4HS)dq%C4iKA69rK%~_{_+{M zwV`{cW#uzI@3m)q+KigbsA)A3X{d=>O+uNZ)nt^(T1`QjqSaKCsam~{^1fEnP^M`$ z9c8*!Gf-w|H4|kfwgg9+rPXYd*;>s(nWNQQl(|~XLz$=5e3bcGEkId-znO%xP^(2K zi?mvdV)sz{OJ&sT8J`7_A+i}Yn^9Yd&q0AmDiwsnGHQkJ`X9-t6#=&c*D8w2`LxGT z|NMMfvB>jOEJEWV{D`#K_z0izIUzz5Bbs0OeLihcBzDH<^axFg(2Uq4-Z3-6XME0z z&}_T|->~^Kn@_X(G#;MXe3~k2hUu!DtO?xdP?o@&fX%1LY({0TUsa@E4?2`5(61^U zRaK~m9LgJ@s(Ms4p&oYVkpNZAqwF4PHlJob3cTle>`OJ3Pmax}NhfSRO*&!oY0?Rs zPm@mAe42E^=F_ATHlHS)u=zCUgw3Z(Cu}}VI$`r^(us=>T?&lTmU{Q(%Y?e@(B}ba znMW-b>I;Xy3{cBGYK2h$aOkT5W%p1sZL;|^uMe2fviUUmOxS#ybi(G-q!TuuCY`YP zH0eZKK5bJZcC07%Q2QuC)6Em?p@!A8kNqdxA}XI8{#n&kkBP75ssiGxyQ-l08m=lN zzNV`Ri?8LX$HmunRZ;PET=j(bx~?iFzMiX|6kp#}#l<&pRVnceUG=Q^My@I?zOk#G z6W_#D&x>#Bsxso6x#|V+&0Tug#c`I@0*@o9rJG8vpw@Uc8hzmv0orZKC#LK(on3kzPexN0w<5jaQdd*DnbO^q9Q1+KaMRt9>Z@ zwAzodU#kNs2edkfa!{*7D2K3r8p>a354Cf44>g-lqmJl--9s&vYGSXmT2NR%tu|i& zBl$GWrquz<*|fT-e||Qt9`;VF7p3}9enir&L2U1|hEZySozU>o@3U!*&E9EEqSQD_ zO=FLEN3+=8Y0abbGTwo2*le23rrB&74^3@0&1TcQDGIGB8K)}CdO$9RatGD}Y&Okn zn5yOVtG4v3h(kpK{i^Lzb%c7{p<)55jz`rM>IsLQ3{WSBov_(7>4eRuNhg#;6d0$i z_U_5o2=#+QIzX-QsI@}<=+I9AYOP1D6Y8o%{|r!e?=;gUn@#ijfVn-JO_R@r&8A5w zY&K0gVY6w{iJP)%S*V4-cUsFRwep{|j#3kU?=&o}weg?4@^{}zt%=z)t*y6pnknu6 z@*Am9r--KR$lKvTQ(rcHVb-u&1GAaUW|-}4w!<7^a|q@%o6|6t*<6PCp3V0#*V$Z$ zNkD_}pee#80+WeNCYbx!+y|4FOA|K4Og}dLV1}_71~Y-p1eob;ro${`vk)dtB21b@O&Qo^fXT`xD@7dF4Zq)UQHm!#=-Hn+p%WRnvnADetIPqKLurZk(t*}MxghRqn5$!sRW%w{tiW-*(^Fq_zHg4xYxH_Tx+hhfgL zIScb8n=fI0VDkgaFKm8+NtX|nD4<`A1hFsIp^hWUcc7cf7t z`2i+F3QUF+P4}?52PPkzd@vQ+RD`L+rVh-@Y+iFzl zz${_21ZEAJH85M*Y=t?<<{->jHfLdo4Z%3+VVv}u(z8hqlZ8zdnCxt_!#u*~5tt%u ziold)Qxc{En+h;>*wle(!lnsKYc{Q6I{{1%^;YOY(~ONXEPmUF`LCOtJ$oE*}`TE%w9Ho zVUDpm26K_kMVPPId=2vxo1b9P+zONCR!vE4l3?y;b2m&bHo0Jmuqgsll1)jNifk&v z)MZl_=4Cc7!*pQN0j4LLo-l*h41)P06X%$}$`m_wi@wej`<<+A(ezCwP2XiAh3^li zA7a!unQ-csFmV5jeeZhgd#i7)i2uvC(ha=rmrN=*{l?$ygVS>hgIp1%Rrt}C{}%68 zJ_;?4nkTd_`kbLQMd_n>YMoHqgxVdYPvWUo0Q-_2)BhjZw-$G#|8sEmn}DV|CeDvMBA6Y0Kq zDvMCLgnBrU9*L)N2~|L-qKQ;2o+=mC*c|28LsFp&#l1T01sg^=@7V3>e>K0FR7OJ;UZzWRyc&fKhLxdWZNW@iR#BwxK%ShO_~eUGKpHpQ@D>a)N4X@N{Zdn z-PG0Bgz6zw?10Zcr-}B~;&J>K}itUP28K z>b+zd9#0JsYK%}5lWB51HAblELd{90dGXYAp_T}>GMPSzrRd8?7EhfL>XJ}jCexL8>XK033-x0%U5lr_7wU#k z2`Q8oqobStJ>C#1F~$3DC?$n%ji(Y*_c6nZ6|Y9>@Wp*p5er+BKJP+f)UkwU%Vsjfox6>4A#4UVV!3N=)ycT?!S zcxtFnBZV51LgV78kwQ%pYHA8ii>D?DHA|?uDKtNxnkCdip%$mahW$5vRu>AjT&Ptk zv^xG;%Y|B>!hiX7Q%Wjrfwtk zCeh`T7w8`;bOq(R6#5=Tr_hfmS5xR3$}cJO8;X;j(x!ib(xs;;N@99SMoFKZGN5Ei zPq(4mo}TVVKQduFrXtGne1v+M?qzo`yKL;TVVHkEoBLsMv&jvUmrY)nd~EW;JjUiR zn1Z<8jn%3grt9#(N-V8vpw!T+4oV%Z8lg1Osx3-eTP84fdn%>-P3G~PT~t4S!> z4Szbybgky1U?2NMDA=oh1dYXY=*#$W-~gSR-5quVUwn5{Cpa|v6#(bn00K{!R%tQ3+5=BqcG>$oQL^_ z%{MUD*j$6TpXYP$$9!&nHu+(SvndW!hD{lmN^B~@)Mir~ra7DDFdf)*fa$@e2h2b= z17Sw783i+y%~Y5LY!<+*V6y^dBb$vd+t_S_In3rT%sDpaV6L#a0&|tkRTzgSd!4AJ z6gDX^S=eNO$;l=sOg=XGV4h&}1WXw=WnlP>6g+7B4I~);Ye;R_w1Ihp%^NWN+4P4Q z&Sp5w3^p@h7PGl?^5|{yjmRoQPMF z6YvDpG|$3mTX$WbY_DQIrV0PK{pLy zGX!QF8w{OkCL4^7X(<~FfN3KejB#l<8w_LV7#oaK=>i)JM(JBN7;n;bHW*S;TAokF zsF5;9&C$x$Uh9I<=4MrKXhYbc2bes*w3Urwbh6AM7;Etbeu)$3|CGre2 z?%OFd8{C>xPBysvrbpS}2Ahhr!9Dc9C&R1qE4UM;25fM%ORd@9ewI42!7VHGVuQO< z8o~xQo-~FH?k#CL8{9t95;nL)r1flY6G+?G;69J`vB9kzonnK#HM+zGH)QlZ8{Biz z4K}!~qQn#!+&NKZHn=&W>}+uVLwVWY7KaM6!CefMV1pYKD#r%*B2S!w6u^7ewos8Hu!x> zJ@89p1occ`o^SK$&GfOmJ)Rxxh2Jo}(^DUOe>lArqk5&U@NWjLZ|r;hV&6NJQW0%Q Sq5gQ=0REjekiXfd&;J5r*D56d diff --git a/clients/dotnet-client/.vs/GemFireClientExamples/v17/.futdcache.v2 b/clients/dotnet-client/.vs/GemFireClientExamples/v17/.futdcache.v2 deleted file mode 100644 index 0155f9f0ff07b5dae725386c22db1df5c28a4367..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2157 zcmbW2KWG#|6vmGbB^V`Wr*c*SA&@i{!hwRENC+Vw5;fpTGPnC~Z*qGx>&$HKVyB{~ zVnFO{EJT8T0$SMk2NY6hR03KEHd-p8m?DLWg|ly2bDN}jZuQ<{+4=F!_r2}O<#MHB z!SP_q@u6Pf3i_eR>R|xdaRUy*XvdRAfayKhM;>0;^V^Q*(!zKYMXSuD&Q{@684gE5K;&D{75r>!P} z^nE=mX70D1+_L~PgRMO=$Pf+04VczU*I?SpmX<_}+1c9hRF7RFQSPS27^Gon9fXnb z!8rdaB1Ejk=R5jwti{0Qi>SpY4I=cK8Wd*%Kh4SkIIDUhP*t2ix3%{JUe3a`O9*s~ z2IMirGDNEf|AF*pu@8}Mf1gL=5;bzAFkD13(x)O&)->6k2=wjC(*AJl4FWyNFCdUd z(`d!D;|(r6+0f%s1nq9l%!z>c-9JA4o|`~Gb?X%Zj?n-sk-(fo6Wj;`zh**&>Ug1d z^geumP_^YN=&TVMR1!7?bvb2yj>$_JB1)XPH2T-`iOGqpFh18n;->j?7e_jL-dQ?IxI3W&At6st(g#^Vr@Eq z-N4oOe&=O`nxOf`g8+PHAo~+tcS?l2yM1(1>*ZU7+jrt5ChQ0e&dOEgf*ai2;AC4O Qju`scNDckE`yJx^1*U2@@Bjb+ diff --git a/clients/dotnet-client/.vs/GemFireClientExamples/v17/.suo b/clients/dotnet-client/.vs/GemFireClientExamples/v17/.suo deleted file mode 100644 index 6fca36a85fb7714358d41f03c7528abbe669f03b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 83456 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 diff --git a/clients/dotnet-client/.vs/GemFireClientExamples/v17/DocumentLayout.json b/clients/dotnet-client/.vs/GemFireClientExamples/v17/DocumentLayout.json deleted file mode 100644 index 29dd7c56..00000000 --- a/clients/dotnet-client/.vs/GemFireClientExamples/v17/DocumentLayout.json +++ /dev/null @@ -1,268 +0,0 @@ -{ - "Version": 1, - "WorkspaceRootPath": "C:\\dev\\gemfire-examples\\clients\\dotnet-client\\", - "Documents": [ - { - "AbsoluteMoniker": "D:0:0:{3EA6DC1D-0496-4F02-9B91-AE9277776CAE}|putgetremove\\putgetremove.csproj|c:\\dev\\gemfire-examples\\clients\\dotnet-client\\putgetremove\\readme.md||{EFC0BB08-EA7D-40C6-A696-C870411A895B}", - "RelativeMoniker": "D:0:0:{3EA6DC1D-0496-4F02-9B91-AE9277776CAE}|putgetremove\\putgetremove.csproj|solutionrelative:putgetremove\\readme.md||{EFC0BB08-EA7D-40C6-A696-C870411A895B}" - }, - { - "AbsoluteMoniker": "D:0:0:{9FCF35F5-D1C1-4FDD-A4D8-347948CEA163}|authinitialize\\authinitialize.csproj|c:\\dev\\gemfire-examples\\clients\\dotnet-client\\authinitialize\\authinitialize.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|", - "RelativeMoniker": "D:0:0:{9FCF35F5-D1C1-4FDD-A4D8-347948CEA163}|authinitialize\\authinitialize.csproj|solutionrelative:authinitialize\\authinitialize.csproj||{FA3CD31E-987B-443A-9B81-186104E8DAC1}|" - }, - { - "AbsoluteMoniker": "D:0:0:{3EA6DC1D-0496-4F02-9B91-AE9277776CAE}|putgetremove\\putgetremove.csproj|c:\\dev\\gemfire-examples\\clients\\dotnet-client\\putgetremove\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{3EA6DC1D-0496-4F02-9B91-AE9277776CAE}|putgetremove\\putgetremove.csproj|solutionrelative:putgetremove\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{9FCF35F5-D1C1-4FDD-A4D8-347948CEA163}|authinitialize\\authinitialize.csproj|c:\\dev\\gemfire-examples\\clients\\dotnet-client\\authinitialize\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{9FCF35F5-D1C1-4FDD-A4D8-347948CEA163}|authinitialize\\authinitialize.csproj|solutionrelative:authinitialize\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{E08FB873-9AED-4F84-88DD-3236E04A93C4}|cachelistener\\cachelistener.csproj|c:\\dev\\gemfire-examples\\clients\\dotnet-client\\cachelistener\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{E08FB873-9AED-4F84-88DD-3236E04A93C4}|cachelistener\\cachelistener.csproj|solutionrelative:cachelistener\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{E08FB873-9AED-4F84-88DD-3236E04A93C4}|cachelistener\\cachelistener.csproj|c:\\dev\\gemfire-examples\\clients\\dotnet-client\\cachelistener\\mycachelistener.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{E08FB873-9AED-4F84-88DD-3236E04A93C4}|cachelistener\\cachelistener.csproj|solutionrelative:cachelistener\\mycachelistener.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{9FCF35F5-D1C1-4FDD-A4D8-347948CEA163}|authinitialize\\authinitialize.csproj|c:\\dev\\gemfire-examples\\clients\\dotnet-client\\authinitialize\\exampleauthinitialize.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{9FCF35F5-D1C1-4FDD-A4D8-347948CEA163}|authinitialize\\authinitialize.csproj|solutionrelative:authinitialize\\exampleauthinitialize.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{7C4012BB-2D3E-4C69-BD24-F33C6431C7EE}|classaskey\\classaskey.csproj|c:\\dev\\gemfire-examples\\clients\\dotnet-client\\classaskey\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{7C4012BB-2D3E-4C69-BD24-F33C6431C7EE}|classaskey\\classaskey.csproj|solutionrelative:classaskey\\program.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{7C4012BB-2D3E-4C69-BD24-F33C6431C7EE}|classaskey\\classaskey.csproj|c:\\dev\\gemfire-examples\\clients\\dotnet-client\\classaskey\\order.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{7C4012BB-2D3E-4C69-BD24-F33C6431C7EE}|classaskey\\classaskey.csproj|solutionrelative:classaskey\\order.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - }, - { - "AbsoluteMoniker": "D:0:0:{7C4012BB-2D3E-4C69-BD24-F33C6431C7EE}|classaskey\\classaskey.csproj|c:\\dev\\gemfire-examples\\clients\\dotnet-client\\classaskey\\util\\objecthash.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}", - "RelativeMoniker": "D:0:0:{7C4012BB-2D3E-4C69-BD24-F33C6431C7EE}|classaskey\\classaskey.csproj|solutionrelative:classaskey\\util\\objecthash.cs||{A6C744A8-0E4A-4FC6-886A-064283054674}" - } - ], - "DocumentGroupContainers": [ - { - "Orientation": 0, - "VerticalTabListWidth": 256, - "DocumentGroups": [ - { - "DockedWidth": 200, - "SelectedChildIndex": 17, - "Children": [ - { - "$type": "Bookmark", - "Name": "ST:0:0:{1c4feeaa-4718-4aa9-859d-94ce25d182ba}" - }, - { - "$type": "Bookmark", - "Name": "ST:130:0:{1fc202d4-d401-403c-9834-5b218574bb67}" - }, - { - "$type": "Bookmark", - "Name": "ST:130:0:{116d2292-e37d-41cd-a077-ebacac4c8cc4}" - }, - { - "$type": "Bookmark", - "Name": "ST:131:0:{1fc202d4-d401-403c-9834-5b218574bb67}" - }, - { - "$type": "Bookmark", - "Name": "ST:139:0:{13b12e3e-c1b4-4539-9371-4fe9a0d523fc}" - }, - { - "$type": "Bookmark", - "Name": "ST:135:0:{116d2292-e37d-41cd-a077-ebacac4c8cc4}" - }, - { - "$type": "Bookmark", - "Name": "ST:137:0:{1fc202d4-d401-403c-9834-5b218574bb67}" - }, - { - "$type": "Bookmark", - "Name": "ST:135:0:{13b12e3e-c1b4-4539-9371-4fe9a0d523fc}" - }, - { - "$type": "Bookmark", - "Name": "ST:135:0:{1fc202d4-d401-403c-9834-5b218574bb67}" - }, - { - "$type": "Bookmark", - "Name": "ST:134:0:{1fc202d4-d401-403c-9834-5b218574bb67}" - }, - { - "$type": "Bookmark", - "Name": "ST:133:0:{13b12e3e-c1b4-4539-9371-4fe9a0d523fc}" - }, - { - "$type": "Bookmark", - "Name": "ST:133:0:{1fc202d4-d401-403c-9834-5b218574bb67}" - }, - { - "$type": "Bookmark", - "Name": "ST:136:0:{13b12e3e-c1b4-4539-9371-4fe9a0d523fc}" - }, - { - "$type": "Bookmark", - "Name": "ST:129:0:{13b12e3e-c1b4-4539-9371-4fe9a0d523fc}" - }, - { - "$type": "Bookmark", - "Name": "ST:130:0:{13b12e3e-c1b4-4539-9371-4fe9a0d523fc}" - }, - { - "$type": "Bookmark", - "Name": "ST:131:0:{116d2292-e37d-41cd-a077-ebacac4c8cc4}" - }, - { - "$type": "Bookmark", - "Name": "ST:128:0:{1fc202d4-d401-403c-9834-5b218574bb67}" - }, - { - "$type": "Document", - "DocumentIndex": 0, - "Title": "README.md", - "DocumentMoniker": "C:\\dev\\gemfire-examples\\clients\\dotnet-client\\putgetremove\\README.md", - "RelativeDocumentMoniker": "putgetremove\\README.md", - "ToolTip": "C:\\dev\\gemfire-examples\\clients\\dotnet-client\\putgetremove\\README.md", - "RelativeToolTip": "putgetremove\\README.md", - "ViewState": "AQIAAAAAAAAAAAAAAAAAAEEAAAAAAAAA", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.001818|", - "WhenOpened": "2026-01-20T18:59:03.461Z", - "EditorCaption": "" - }, - { - "$type": "Document", - "DocumentIndex": 1, - "Title": "authinitialize", - "DocumentMoniker": "C:\\dev\\gemfire-examples\\clients\\dotnet-client\\authinitialize\\authinitialize.csproj", - "RelativeDocumentMoniker": "authinitialize\\authinitialize.csproj", - "ToolTip": "C:\\dev\\gemfire-examples\\clients\\dotnet-client\\authinitialize\\authinitialize.csproj", - "RelativeToolTip": "authinitialize\\authinitialize.csproj", - "ViewState": "AQIAAAAAAAAAAAAAAAAAAAEAAAAAAAAA", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000758|", - "WhenOpened": "2026-01-20T18:48:09.336Z", - "EditorCaption": "" - }, - { - "$type": "Document", - "DocumentIndex": 7, - "Title": "Program.cs", - "DocumentMoniker": "C:\\dev\\gemfire-examples\\clients\\dotnet-client\\classaskey\\Program.cs", - "RelativeDocumentMoniker": "classaskey\\Program.cs", - "ToolTip": "C:\\dev\\gemfire-examples\\clients\\dotnet-client\\classaskey\\Program.cs", - "RelativeToolTip": "classaskey\\Program.cs", - "ViewState": "AQIAAAAAAAAAAAAAAIBJwBsAAAAAAAAA", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2026-01-09T16:47:08.054Z", - "EditorCaption": "" - }, - { - "$type": "Document", - "DocumentIndex": 8, - "Title": "Order.cs", - "DocumentMoniker": "C:\\dev\\gemfire-examples\\clients\\dotnet-client\\classaskey\\Order.cs", - "RelativeDocumentMoniker": "classaskey\\Order.cs", - "ToolTip": "C:\\dev\\gemfire-examples\\clients\\dotnet-client\\classaskey\\Order.cs", - "RelativeToolTip": "classaskey\\Order.cs", - "ViewState": "AQIAACoAAAAAAAAAAAAmwAQAAAAaAAAA", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2026-01-09T16:46:58.206Z", - "EditorCaption": "" - }, - { - "$type": "Document", - "DocumentIndex": 9, - "Title": "ObjectHash.cs", - "DocumentMoniker": "C:\\dev\\gemfire-examples\\clients\\dotnet-client\\classaskey\\util\\ObjectHash.cs", - "RelativeDocumentMoniker": "classaskey\\util\\ObjectHash.cs", - "ToolTip": "C:\\dev\\gemfire-examples\\clients\\dotnet-client\\classaskey\\util\\ObjectHash.cs", - "RelativeToolTip": "classaskey\\util\\ObjectHash.cs", - "ViewState": "AQIAAHwAAAAAAAAAAAAcwAAAAAAAAAAA", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2026-01-09T16:46:41.516Z", - "EditorCaption": "" - }, - { - "$type": "Document", - "DocumentIndex": 4, - "Title": "Program.cs", - "DocumentMoniker": "C:\\dev\\gemfire-examples\\clients\\dotnet-client\\cachelistener\\Program.cs", - "RelativeDocumentMoniker": "cachelistener\\Program.cs", - "ToolTip": "C:\\dev\\gemfire-examples\\clients\\dotnet-client\\cachelistener\\Program.cs", - "RelativeToolTip": "cachelistener\\Program.cs", - "ViewState": "AQIAACsAAAAAAAAAAAAgwDkAAAAqAAAA", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2026-01-09T16:45:05.944Z", - "EditorCaption": "" - }, - { - "$type": "Document", - "DocumentIndex": 5, - "Title": "MyCacheListener.cs", - "DocumentMoniker": "C:\\dev\\gemfire-examples\\clients\\dotnet-client\\cachelistener\\MyCacheListener.cs", - "RelativeDocumentMoniker": "cachelistener\\MyCacheListener.cs", - "ToolTip": "C:\\dev\\gemfire-examples\\clients\\dotnet-client\\cachelistener\\MyCacheListener.cs", - "RelativeToolTip": "cachelistener\\MyCacheListener.cs", - "ViewState": "AQIAAAAAAAAAAAAAAAAAAAQAAAAfAAAA", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2026-01-09T16:44:47.126Z", - "EditorCaption": "" - }, - { - "$type": "Document", - "DocumentIndex": 3, - "Title": "Program.cs", - "DocumentMoniker": "C:\\dev\\gemfire-examples\\clients\\dotnet-client\\authinitialize\\Program.cs", - "RelativeDocumentMoniker": "authinitialize\\Program.cs", - "ToolTip": "C:\\dev\\gemfire-examples\\clients\\dotnet-client\\authinitialize\\Program.cs", - "RelativeToolTip": "authinitialize\\Program.cs", - "ViewState": "AQIAAAAAAAAAAAAAAIBJwAQAAAARAAAA", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2026-01-09T16:42:56.688Z", - "EditorCaption": "" - }, - { - "$type": "Document", - "DocumentIndex": 6, - "Title": "ExampleAuthInitialize.cs", - "DocumentMoniker": "C:\\dev\\gemfire-examples\\clients\\dotnet-client\\authinitialize\\ExampleAuthInitialize.cs", - "RelativeDocumentMoniker": "authinitialize\\ExampleAuthInitialize.cs", - "ToolTip": "C:\\dev\\gemfire-examples\\clients\\dotnet-client\\authinitialize\\ExampleAuthInitialize.cs", - "RelativeToolTip": "authinitialize\\ExampleAuthInitialize.cs", - "ViewState": "AQIAAAAAAAAAAAAAAIBJwAUAAAAFAAAA", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2026-01-09T16:42:38.813Z", - "EditorCaption": "" - }, - { - "$type": "Document", - "DocumentIndex": 2, - "Title": "Program.cs", - "DocumentMoniker": "C:\\dev\\gemfire-examples\\clients\\dotnet-client\\putgetremove\\Program.cs", - "RelativeDocumentMoniker": "putgetremove\\Program.cs", - "ToolTip": "C:\\dev\\gemfire-examples\\clients\\dotnet-client\\putgetremove\\Program.cs", - "RelativeToolTip": "putgetremove\\Program.cs", - "ViewState": "AQIAAAAAAAAAAAAAAAAAABQAAAA6AAAA", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000738|", - "WhenOpened": "2026-01-09T15:58:16.671Z", - "EditorCaption": "" - } - ] - }, - { - "DockedWidth": 158, - "SelectedChildIndex": -1, - "Children": [ - { - "$type": "Bookmark", - "Name": "ST:0:0:{e1b7d1f8-9b3c-49b1-8f4f-bfc63a88835d}" - } - ] - } - ] - } - ] -} \ No newline at end of file diff --git a/clients/dotnet-client/authinitialize/authinitialize.csproj b/clients/dotnet-client/authinitialize/authinitialize.csproj index 5cd0633c..8d4d5773 100644 --- a/clients/dotnet-client/authinitialize/authinitialize.csproj +++ b/clients/dotnet-client/authinitialize/authinitialize.csproj @@ -18,7 +18,7 @@ - + diff --git a/clients/dotnet-client/cachelistener/cachelistener.csproj b/clients/dotnet-client/cachelistener/cachelistener.csproj index 3ef4161d..93074e04 100644 --- a/clients/dotnet-client/cachelistener/cachelistener.csproj +++ b/clients/dotnet-client/cachelistener/cachelistener.csproj @@ -18,7 +18,7 @@ - + \ No newline at end of file diff --git a/clients/dotnet-client/classaskey/classaskey.csproj b/clients/dotnet-client/classaskey/classaskey.csproj index 3f01e588..331eb53a 100644 --- a/clients/dotnet-client/classaskey/classaskey.csproj +++ b/clients/dotnet-client/classaskey/classaskey.csproj @@ -18,7 +18,7 @@ - + diff --git a/clients/dotnet-client/classaskey_windows_only/classaskey_windows_only.csproj b/clients/dotnet-client/classaskey_windows_only/classaskey_windows_only.csproj index ee63a851..4bd6f74c 100644 --- a/clients/dotnet-client/classaskey_windows_only/classaskey_windows_only.csproj +++ b/clients/dotnet-client/classaskey_windows_only/classaskey_windows_only.csproj @@ -19,7 +19,7 @@ - + diff --git a/clients/dotnet-client/continuousquery/continuousquery.csproj b/clients/dotnet-client/continuousquery/continuousquery.csproj index 85aa2ec3..3bce87be 100644 --- a/clients/dotnet-client/continuousquery/continuousquery.csproj +++ b/clients/dotnet-client/continuousquery/continuousquery.csproj @@ -18,7 +18,7 @@ - + diff --git a/clients/dotnet-client/dataserializable/dataserializable.csproj b/clients/dotnet-client/dataserializable/dataserializable.csproj index 85aa2ec3..3bce87be 100644 --- a/clients/dotnet-client/dataserializable/dataserializable.csproj +++ b/clients/dotnet-client/dataserializable/dataserializable.csproj @@ -18,7 +18,7 @@ - + diff --git a/clients/dotnet-client/delegatecachelistener/delegatecachelistener.csproj b/clients/dotnet-client/delegatecachelistener/delegatecachelistener.csproj index 85aa2ec3..3bce87be 100644 --- a/clients/dotnet-client/delegatecachelistener/delegatecachelistener.csproj +++ b/clients/dotnet-client/delegatecachelistener/delegatecachelistener.csproj @@ -18,7 +18,7 @@ - + diff --git a/clients/dotnet-client/functionexecution/functionexecution.csproj b/clients/dotnet-client/functionexecution/functionexecution.csproj index 85aa2ec3..3bce87be 100644 --- a/clients/dotnet-client/functionexecution/functionexecution.csproj +++ b/clients/dotnet-client/functionexecution/functionexecution.csproj @@ -18,7 +18,7 @@ - + diff --git a/clients/dotnet-client/jsonconfig/jsonconfig.csproj b/clients/dotnet-client/jsonconfig/jsonconfig.csproj index 51882cf1..287e8f8a 100644 --- a/clients/dotnet-client/jsonconfig/jsonconfig.csproj +++ b/clients/dotnet-client/jsonconfig/jsonconfig.csproj @@ -18,7 +18,7 @@ - + diff --git a/clients/dotnet-client/pdxautoserializer/pdxautoserializer.csproj b/clients/dotnet-client/pdxautoserializer/pdxautoserializer.csproj index 85aa2ec3..3bce87be 100644 --- a/clients/dotnet-client/pdxautoserializer/pdxautoserializer.csproj +++ b/clients/dotnet-client/pdxautoserializer/pdxautoserializer.csproj @@ -18,7 +18,7 @@ - + diff --git a/clients/dotnet-client/pdxserializable/pdxserializable.csproj b/clients/dotnet-client/pdxserializable/pdxserializable.csproj index 0887873f..989a0192 100644 --- a/clients/dotnet-client/pdxserializable/pdxserializable.csproj +++ b/clients/dotnet-client/pdxserializable/pdxserializable.csproj @@ -18,7 +18,7 @@ - + diff --git a/clients/dotnet-client/putgetremove/putgetremove.csproj b/clients/dotnet-client/putgetremove/putgetremove.csproj index 85aa2ec3..3bce87be 100644 --- a/clients/dotnet-client/putgetremove/putgetremove.csproj +++ b/clients/dotnet-client/putgetremove/putgetremove.csproj @@ -18,7 +18,7 @@ - + diff --git a/clients/dotnet-client/remotequery/remotequery.csproj b/clients/dotnet-client/remotequery/remotequery.csproj index 85aa2ec3..3bce87be 100644 --- a/clients/dotnet-client/remotequery/remotequery.csproj +++ b/clients/dotnet-client/remotequery/remotequery.csproj @@ -18,7 +18,7 @@ - + diff --git a/clients/dotnet-client/sslputget/sslputget.csproj b/clients/dotnet-client/sslputget/sslputget.csproj index 85aa2ec3..3bce87be 100644 --- a/clients/dotnet-client/sslputget/sslputget.csproj +++ b/clients/dotnet-client/sslputget/sslputget.csproj @@ -18,7 +18,7 @@ - + diff --git a/clients/dotnet-client/transaction/transaction.csproj b/clients/dotnet-client/transaction/transaction.csproj index 85aa2ec3..3bce87be 100644 --- a/clients/dotnet-client/transaction/transaction.csproj +++ b/clients/dotnet-client/transaction/transaction.csproj @@ -18,7 +18,7 @@ - + From 4122b0967f22a64b0481c203b853288ad8d053a6 Mon Sep 17 00:00:00 2001 From: Ernie Burghardt Date: Tue, 16 Jun 2026 13:39:25 -0500 Subject: [PATCH 2/5] Update dotnet-client examples to gemfire.client 1.0.0-beta.3-1222 - Bump package version from 1.0.0-1092-beta.2 to 1.0.0-beta.3-1222 across all projects - Update target framework from net8.0 to net10.0 (required by new package) - Update IAuthInitialize.GetCredentials signature: IDictionary -> IConfiguration - Update CacheFactory instantiation in jsonconfig to use ConfigurationBuilder (API change) - Add Microsoft.Extensions.Configuration.Json 9.0.0 to jsonconfig ai-assisted=yes Co-Authored-By: Claude Sonnet 4.6 --- .../dotnet-client/authinitialize/ExampleAuthInitialize.cs | 4 ++-- clients/dotnet-client/authinitialize/authinitialize.csproj | 4 ++-- clients/dotnet-client/cachelistener/cachelistener.csproj | 4 ++-- clients/dotnet-client/classaskey/classaskey.csproj | 4 ++-- .../classaskey_windows_only/classaskey_windows_only.csproj | 4 ++-- .../dotnet-client/continuousquery/continuousquery.csproj | 4 ++-- .../dotnet-client/dataserializable/dataserializable.csproj | 4 ++-- .../delegatecachelistener/delegatecachelistener.csproj | 4 ++-- .../functionexecution/functionexecution.csproj | 4 ++-- clients/dotnet-client/jsonconfig/Program.cs | 7 ++++--- clients/dotnet-client/jsonconfig/jsonconfig.csproj | 5 +++-- .../pdxautoserializer/pdxautoserializer.csproj | 4 ++-- .../dotnet-client/pdxserializable/pdxserializable.csproj | 4 ++-- clients/dotnet-client/putgetremove/putgetremove.csproj | 4 ++-- clients/dotnet-client/remotequery/remotequery.csproj | 4 ++-- clients/dotnet-client/sslputget/sslputget.csproj | 4 ++-- clients/dotnet-client/transaction/transaction.csproj | 4 ++-- 17 files changed, 37 insertions(+), 35 deletions(-) diff --git a/clients/dotnet-client/authinitialize/ExampleAuthInitialize.cs b/clients/dotnet-client/authinitialize/ExampleAuthInitialize.cs index 192976c4..59982d5d 100644 --- a/clients/dotnet-client/authinitialize/ExampleAuthInitialize.cs +++ b/clients/dotnet-client/authinitialize/ExampleAuthInitialize.cs @@ -1,7 +1,7 @@ // Copyright 2026 Broadcom. All Rights Reserved. using GemFire.Client; - +using Microsoft.Extensions.Configuration; namespace GemFire.Examples.AuthInitialize; @@ -19,7 +19,7 @@ public void Close() Console.Out.WriteLine("ExampleAuthInitialize::Close called"); } - public IDictionary GetCredentials(IDictionary props, string server) + public IDictionary GetCredentials(IConfiguration props, string server) { // TODO get your username and password Console.Out.WriteLine("ExampleAuthInitialize::GetCredentials called"); diff --git a/clients/dotnet-client/authinitialize/authinitialize.csproj b/clients/dotnet-client/authinitialize/authinitialize.csproj index 8d4d5773..19e637be 100644 --- a/clients/dotnet-client/authinitialize/authinitialize.csproj +++ b/clients/dotnet-client/authinitialize/authinitialize.csproj @@ -2,7 +2,7 @@ Exe - net8.0 + net10.0 enable enable @@ -18,7 +18,7 @@ - + diff --git a/clients/dotnet-client/cachelistener/cachelistener.csproj b/clients/dotnet-client/cachelistener/cachelistener.csproj index 93074e04..cd9e9822 100644 --- a/clients/dotnet-client/cachelistener/cachelistener.csproj +++ b/clients/dotnet-client/cachelistener/cachelistener.csproj @@ -2,7 +2,7 @@ Exe - net8.0 + net10.0 enable enable @@ -18,7 +18,7 @@ - + \ No newline at end of file diff --git a/clients/dotnet-client/classaskey/classaskey.csproj b/clients/dotnet-client/classaskey/classaskey.csproj index 331eb53a..1e33afb0 100644 --- a/clients/dotnet-client/classaskey/classaskey.csproj +++ b/clients/dotnet-client/classaskey/classaskey.csproj @@ -2,7 +2,7 @@ Exe - net8.0 + net10.0 enable enable @@ -18,7 +18,7 @@ - + diff --git a/clients/dotnet-client/classaskey_windows_only/classaskey_windows_only.csproj b/clients/dotnet-client/classaskey_windows_only/classaskey_windows_only.csproj index 4bd6f74c..cd5738cb 100644 --- a/clients/dotnet-client/classaskey_windows_only/classaskey_windows_only.csproj +++ b/clients/dotnet-client/classaskey_windows_only/classaskey_windows_only.csproj @@ -2,7 +2,7 @@ Exe - net8.0 + net10.0 enable enable 10.0 @@ -19,7 +19,7 @@ - + diff --git a/clients/dotnet-client/continuousquery/continuousquery.csproj b/clients/dotnet-client/continuousquery/continuousquery.csproj index 3bce87be..b0faf31e 100644 --- a/clients/dotnet-client/continuousquery/continuousquery.csproj +++ b/clients/dotnet-client/continuousquery/continuousquery.csproj @@ -2,7 +2,7 @@ Exe - net8.0 + net10.0 enable enable @@ -18,7 +18,7 @@ - + diff --git a/clients/dotnet-client/dataserializable/dataserializable.csproj b/clients/dotnet-client/dataserializable/dataserializable.csproj index 3bce87be..b0faf31e 100644 --- a/clients/dotnet-client/dataserializable/dataserializable.csproj +++ b/clients/dotnet-client/dataserializable/dataserializable.csproj @@ -2,7 +2,7 @@ Exe - net8.0 + net10.0 enable enable @@ -18,7 +18,7 @@ - + diff --git a/clients/dotnet-client/delegatecachelistener/delegatecachelistener.csproj b/clients/dotnet-client/delegatecachelistener/delegatecachelistener.csproj index 3bce87be..b0faf31e 100644 --- a/clients/dotnet-client/delegatecachelistener/delegatecachelistener.csproj +++ b/clients/dotnet-client/delegatecachelistener/delegatecachelistener.csproj @@ -2,7 +2,7 @@ Exe - net8.0 + net10.0 enable enable @@ -18,7 +18,7 @@ - + diff --git a/clients/dotnet-client/functionexecution/functionexecution.csproj b/clients/dotnet-client/functionexecution/functionexecution.csproj index 3bce87be..b0faf31e 100644 --- a/clients/dotnet-client/functionexecution/functionexecution.csproj +++ b/clients/dotnet-client/functionexecution/functionexecution.csproj @@ -2,7 +2,7 @@ Exe - net8.0 + net10.0 enable enable @@ -18,7 +18,7 @@ - + diff --git a/clients/dotnet-client/jsonconfig/Program.cs b/clients/dotnet-client/jsonconfig/Program.cs index d459e808..baac7d25 100644 --- a/clients/dotnet-client/jsonconfig/Program.cs +++ b/clients/dotnet-client/jsonconfig/Program.cs @@ -2,7 +2,7 @@ using GemFire.Client; -using System.Text.Json; +using Microsoft.Extensions.Configuration; namespace GemFire.Examples.JsonConfig; @@ -14,8 +14,9 @@ static void Main(string[] args) var durable_id2 = "Writer-" + Guid.NewGuid().ToString(); // system properties in JSON config file - var jsonString = File.ReadAllText("client.json"); - var config = JsonSerializer.Deserialize>(jsonString)!; + var config = new ConfigurationBuilder() + .AddJsonFile("client.json") + .Build(); var cacheFactory = new CacheFactory(config); diff --git a/clients/dotnet-client/jsonconfig/jsonconfig.csproj b/clients/dotnet-client/jsonconfig/jsonconfig.csproj index 287e8f8a..2af6bf00 100644 --- a/clients/dotnet-client/jsonconfig/jsonconfig.csproj +++ b/clients/dotnet-client/jsonconfig/jsonconfig.csproj @@ -2,7 +2,7 @@ Exe - net8.0 + net10.0 enable enable @@ -18,7 +18,8 @@ - + + diff --git a/clients/dotnet-client/pdxautoserializer/pdxautoserializer.csproj b/clients/dotnet-client/pdxautoserializer/pdxautoserializer.csproj index 3bce87be..b0faf31e 100644 --- a/clients/dotnet-client/pdxautoserializer/pdxautoserializer.csproj +++ b/clients/dotnet-client/pdxautoserializer/pdxautoserializer.csproj @@ -2,7 +2,7 @@ Exe - net8.0 + net10.0 enable enable @@ -18,7 +18,7 @@ - + diff --git a/clients/dotnet-client/pdxserializable/pdxserializable.csproj b/clients/dotnet-client/pdxserializable/pdxserializable.csproj index 989a0192..249f0155 100644 --- a/clients/dotnet-client/pdxserializable/pdxserializable.csproj +++ b/clients/dotnet-client/pdxserializable/pdxserializable.csproj @@ -2,7 +2,7 @@ Exe - net8.0 + net10.0 enable enable @@ -18,7 +18,7 @@ - + diff --git a/clients/dotnet-client/putgetremove/putgetremove.csproj b/clients/dotnet-client/putgetremove/putgetremove.csproj index 3bce87be..b0faf31e 100644 --- a/clients/dotnet-client/putgetremove/putgetremove.csproj +++ b/clients/dotnet-client/putgetremove/putgetremove.csproj @@ -2,7 +2,7 @@ Exe - net8.0 + net10.0 enable enable @@ -18,7 +18,7 @@ - + diff --git a/clients/dotnet-client/remotequery/remotequery.csproj b/clients/dotnet-client/remotequery/remotequery.csproj index 3bce87be..b0faf31e 100644 --- a/clients/dotnet-client/remotequery/remotequery.csproj +++ b/clients/dotnet-client/remotequery/remotequery.csproj @@ -2,7 +2,7 @@ Exe - net8.0 + net10.0 enable enable @@ -18,7 +18,7 @@ - + diff --git a/clients/dotnet-client/sslputget/sslputget.csproj b/clients/dotnet-client/sslputget/sslputget.csproj index 3bce87be..b0faf31e 100644 --- a/clients/dotnet-client/sslputget/sslputget.csproj +++ b/clients/dotnet-client/sslputget/sslputget.csproj @@ -2,7 +2,7 @@ Exe - net8.0 + net10.0 enable enable @@ -18,7 +18,7 @@ - + diff --git a/clients/dotnet-client/transaction/transaction.csproj b/clients/dotnet-client/transaction/transaction.csproj index 3bce87be..b0faf31e 100644 --- a/clients/dotnet-client/transaction/transaction.csproj +++ b/clients/dotnet-client/transaction/transaction.csproj @@ -2,7 +2,7 @@ Exe - net8.0 + net10.0 enable enable @@ -18,7 +18,7 @@ - + From 45ef135c4fef97e05db29ce5bc11e3809e6b580a Mon Sep 17 00:00:00 2001 From: Ernie Burghardt Date: Wed, 17 Jun 2026 09:01:40 -0500 Subject: [PATCH 3/5] Add prometheus and sessionstate examples - prometheus: exposes GemFire .NET Client metrics via OpenTelemetry Prometheus exporter - sessionstate: backs ASP.NET Core session state with GemFire using IDistributedCache - Update GemFireClientExamples.sln to include both new projects - Update README.md with Web/ASP.NET and Observability sections ai-assisted=yes Co-Authored-By: Claude Sonnet 4.6 --- .../dotnet-client/GemFireClientExamples.sln | 12 +++ clients/dotnet-client/README.md | 26 ++++++ clients/dotnet-client/prometheus/Program.cs | 60 +++++++++++++ clients/dotnet-client/prometheus/README.md | 88 ++++++++++++++++++ clients/dotnet-client/prometheus/demo.yaml | 7 ++ .../prometheus/prometheus.csproj | 12 +++ .../prometheus/startlocator_servers.sh | 27 ++++++ .../dotnet-client/prometheus/startserver.ps1 | 39 ++++++++ .../prometheus/stoplocator_servers.sh | 24 +++++ .../dotnet-client/prometheus/stopserver.ps1 | 39 ++++++++ clients/dotnet-client/sessionstate/Program.cs | 65 ++++++++++++++ clients/dotnet-client/sessionstate/README.md | 90 +++++++++++++++++++ .../sessionstate/sessionstate.csproj | 11 +++ .../sessionstate/startlocator_servers.sh | 27 ++++++ .../sessionstate/startserver.ps1 | 39 ++++++++ .../sessionstate/stoplocator_servers.sh | 24 +++++ .../dotnet-client/sessionstate/stopserver.ps1 | 39 ++++++++ 17 files changed, 629 insertions(+) create mode 100644 clients/dotnet-client/prometheus/Program.cs create mode 100644 clients/dotnet-client/prometheus/README.md create mode 100644 clients/dotnet-client/prometheus/demo.yaml create mode 100644 clients/dotnet-client/prometheus/prometheus.csproj create mode 100644 clients/dotnet-client/prometheus/startlocator_servers.sh create mode 100644 clients/dotnet-client/prometheus/startserver.ps1 create mode 100644 clients/dotnet-client/prometheus/stoplocator_servers.sh create mode 100644 clients/dotnet-client/prometheus/stopserver.ps1 create mode 100644 clients/dotnet-client/sessionstate/Program.cs create mode 100644 clients/dotnet-client/sessionstate/README.md create mode 100644 clients/dotnet-client/sessionstate/sessionstate.csproj create mode 100644 clients/dotnet-client/sessionstate/startlocator_servers.sh create mode 100644 clients/dotnet-client/sessionstate/startserver.ps1 create mode 100644 clients/dotnet-client/sessionstate/stoplocator_servers.sh create mode 100644 clients/dotnet-client/sessionstate/stopserver.ps1 diff --git a/clients/dotnet-client/GemFireClientExamples.sln b/clients/dotnet-client/GemFireClientExamples.sln index 304095e4..d2df3638 100644 --- a/clients/dotnet-client/GemFireClientExamples.sln +++ b/clients/dotnet-client/GemFireClientExamples.sln @@ -33,6 +33,10 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "classaskey", "classaskey\cl EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "jsonconfig", "jsonconfig\jsonconfig.csproj", "{D2CD4D3F-478C-4721-9DE9-9B0C811EF46A}" EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "sessionstate", "sessionstate\sessionstate.csproj", "{DE11E90B-AA7D-4EC4-AF41-7BDE3905796E}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "prometheus", "prometheus\prometheus.csproj", "{08BA062C-B060-4A42-8FFD-70BB83443325}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -99,6 +103,14 @@ Global {D2CD4D3F-478C-4721-9DE9-9B0C811EF46A}.Debug|Any CPU.Build.0 = Debug|Any CPU {D2CD4D3F-478C-4721-9DE9-9B0C811EF46A}.Release|Any CPU.ActiveCfg = Release|Any CPU {D2CD4D3F-478C-4721-9DE9-9B0C811EF46A}.Release|Any CPU.Build.0 = Release|Any CPU + {DE11E90B-AA7D-4EC4-AF41-7BDE3905796E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {DE11E90B-AA7D-4EC4-AF41-7BDE3905796E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {DE11E90B-AA7D-4EC4-AF41-7BDE3905796E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {DE11E90B-AA7D-4EC4-AF41-7BDE3905796E}.Release|Any CPU.Build.0 = Release|Any CPU + {08BA062C-B060-4A42-8FFD-70BB83443325}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {08BA062C-B060-4A42-8FFD-70BB83443325}.Debug|Any CPU.Build.0 = Debug|Any CPU + {08BA062C-B060-4A42-8FFD-70BB83443325}.Release|Any CPU.ActiveCfg = Release|Any CPU + {08BA062C-B060-4A42-8FFD-70BB83443325}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/clients/dotnet-client/README.md b/clients/dotnet-client/README.md index 0cfff70f..589a1ad6 100644 --- a/clients/dotnet-client/README.md +++ b/clients/dotnet-client/README.md @@ -295,6 +295,32 @@ Demonstrates loading configuration from a JSON file and converting it to a dicti - SystemProperties configuration - Cache listener integration +### Web / ASP.NET + +#### sessionstate + +Demonstrates backing ASP.NET Core session state with Tanzu GemFire. Uses `GemFire.Client.Session`'s `GemFireSessionStateCache`, an `IDistributedCache` implementation, so sessions are stored in a GemFire region via the standard `AddSession`/`UseSession` middleware. + +**Location**: `sessionstate/` + +**Key Features**: +- ASP.NET Core distributed session state +- `IDistributedCache` backed by a GemFire region +- `AddGemFireSessionStateCache` registration + +### Observability + +#### prometheus + +Demonstrates exposing GemFire .NET Client metrics on a Prometheus endpoint using the OpenTelemetry Prometheus exporter. The client is instrumented with the Microsoft Metrics API, so its `GemFire.Client.*` meters can be scraped and graphed in Prometheus. + +**Location**: `prometheus/` + +**Key Features**: +- OpenTelemetry Prometheus exporter +- GemFire client metrics (`GemFire.Client.*` meters) +- Prometheus scrape configuration + ## Example Structure Each example follows a similar structure: diff --git a/clients/dotnet-client/prometheus/Program.cs b/clients/dotnet-client/prometheus/Program.cs new file mode 100644 index 00000000..2288e8e0 --- /dev/null +++ b/clients/dotnet-client/prometheus/Program.cs @@ -0,0 +1,60 @@ +// Copyright 2026 Broadcom. All Rights Reserved. + +// This example shows how to expose VMware Tanzu GemFire .NET Client metrics on a +// Prometheus endpoint. The client is instrumented with the Microsoft Metrics API +// (System.Diagnostics.Metrics), so OpenTelemetry's Prometheus exporter can scrape +// it directly. The app put/gets a key in a loop to generate stats. + +using GemFire.Client; +using Microsoft.Extensions.Configuration; +using OpenTelemetry; +using OpenTelemetry.Metrics; + +var config = new ConfigurationBuilder() + .AddInMemoryCollection(new Dictionary + { + ["statistic-sampling-enabled"] = "true", // This property enables stats + ["name"] = "test_cache", // A cache name is required as it becomes a part of a meter's name + ["log-level"] = "none", + }) + .Build(); + +var cache = new CacheFactory(config) // These are the default locator and server ports + .AddLocator("localhost", 10334) + .AddServer("localhost", 40404) + .Create("prometheus-example"); + +var regionFactory = cache.CreateRegionFactory(RegionShortcut.PROXY); + +try +{ + var region = regionFactory.Create("test_region"); + + using MeterProvider meterProvider = Sdk.CreateMeterProviderBuilder() + .AddMeter("GemFire.Client.*") // All GemFire meters start with this string; the wildcard matches the rest. + .AddView(instrument => + new MetricStreamConfiguration { Name = instrument.Meter.Name + "." + instrument.Name }) + .AddPrometheusHttpListener(options => + { + options.Host = "localhost"; + options.Port = 9464; + }) + .Build()!; + + Console.WriteLine("Take a look at the Prometheus endpoint: http://localhost:9464/metrics"); + Console.WriteLine("A Prometheus config is provided with the example. You can start Prometheus with \"prometheus --config.file=demo.yaml\""); + Console.WriteLine("Press any key to exit"); + while (!Console.KeyAvailable) + { + Console.Write("\rPutting..."); + region.Put("key", 1); + Thread.Sleep(500); + Console.Write("\rGetting..."); + _ = region.Get("key"); + Thread.Sleep(500); + } +} +catch +{ + Console.WriteLine("You need to first start the cluster. Run the provided startup script."); +} diff --git a/clients/dotnet-client/prometheus/README.md b/clients/dotnet-client/prometheus/README.md new file mode 100644 index 00000000..9e20bcc8 --- /dev/null +++ b/clients/dotnet-client/prometheus/README.md @@ -0,0 +1,88 @@ +# Copyright 2026 Broadcom. All Rights Reserved. +# prometheus example + +This example shows how to expose VMware Tanzu GemFire .NET Client metrics on a +Prometheus endpoint and view them. The app puts and gets a key/value twice a +second to generate stats. The demo depends on [OpenTelemetry](https://opentelemetry.io/), +an open-source metrics framework. + +The GemFire .NET Client is instrumented with the +[Microsoft Metrics API](https://learn.microsoft.com/dotnet/core/diagnostics/metrics), +so any compatible tool (for example `dotnet-counters`) also works. The client +exports *meters*, and meters export *instruments*. Every meter name begins with +`GemFire.Client.`, then is subdivided by cache name and component (cache, region, +pool, etc.), and then by specific operation — for example +`GemFire.Client.test_cache.test_region`. + +## Prerequisites + +- Install VMware Tanzu GemFire (see [VMware Tanzu GemFire documentation](https://techdocs.broadcom.com/us/en/vmware-tanzu/data-solutions/tanzu-gemfire/10-2/gf/about_gemfire.html)) +- Install [VMware Tanzu GemFire .NET Client](https://techdocs.broadcom.com/us/en/vmware-tanzu/data-solutions/tanzu-gemfire-dotnet-client/1-0-beta/gf-dotnet-client/installation.html) + - The .NET Client is delivered as a NuGet package; follow the solution README to install it +- Install [Prometheus](https://prometheus.io/) and add it to your `PATH` +- Build examples from the solution directory: `dotnet build` +- Set shell variable `GEMFIRE_HOME` to the install directory of VMware Tanzu GemFire +- Set shell variable `JAVA_HOME` to the top of a Java 17 JDK installation + +## Running + +1. From a command shell, set the current directory to the `prometheus` directory in your example workspace. + + ```console + $ cd workspace/examples/prometheus + ``` + +1. Run the script to start the Tanzu GemFire cluster and create the `test_region` region. + + For Windows Powershell use `startserver.ps1`: + + ```console + $ startserver.ps1 + ``` + + For Linux use `startlocator_servers.sh`: + + ```console + $ ./startlocator_servers.sh + ``` + +1. Start the demo app. + + ```console + $ dotnet run + ``` + + The app exports metrics at `http://localhost:9464/metrics`. The endpoint is + static, so refresh to see the values change. + +1. Start your Prometheus instance against the provided scrape config. + + ```console + $ prometheus --config.file=demo.yaml + ``` + + The Prometheus console can be viewed at the default location `http://localhost:9090/`. + +1. On the Prometheus console, select the `Graph` tab, click the metric-explorer + (globe) button next to `Execute`, choose + `GemFire_Client_test_cache_test_region_get_count_total`, and press `Execute`. + (Prometheus replaces the `.` separators in meter names with `_`.) + +1. Stop the app with any keypress, then run the stop script to gracefully shut down the Tanzu GemFire cluster. + + For Windows Powershell: + + ```console + $ stopserver.ps1 + ``` + + For Linux use `stoplocator_servers.sh`: + + ```console + $ ./stoplocator_servers.sh + ``` + +## Further Resources + +- [Microsoft's documentation](https://learn.microsoft.com/dotnet/core/diagnostics/metrics) on collecting metrics +- [OpenTelemetry](https://opentelemetry.io/) diff --git a/clients/dotnet-client/prometheus/demo.yaml b/clients/dotnet-client/prometheus/demo.yaml new file mode 100644 index 00000000..a39f9a36 --- /dev/null +++ b/clients/dotnet-client/prometheus/demo.yaml @@ -0,0 +1,7 @@ +global: + scrape_interval: 10s + evaluation_interval: 10s +scrape_configs: + - job_name: "prometheus" + static_configs: + - targets: ["localhost:9464"] diff --git a/clients/dotnet-client/prometheus/prometheus.csproj b/clients/dotnet-client/prometheus/prometheus.csproj new file mode 100644 index 00000000..d04c2c44 --- /dev/null +++ b/clients/dotnet-client/prometheus/prometheus.csproj @@ -0,0 +1,12 @@ + + + Exe + net10.0 + enable + enable + + + + + + diff --git a/clients/dotnet-client/prometheus/startlocator_servers.sh b/clients/dotnet-client/prometheus/startlocator_servers.sh new file mode 100644 index 00000000..d306f65f --- /dev/null +++ b/clients/dotnet-client/prometheus/startlocator_servers.sh @@ -0,0 +1,27 @@ +#!/usr/bin/env bash + +if [ -z ${GEMFIRE_HOME} ]; then + echo "GEMFIRE_HOME must be set to a valid path." + exit 1 +else + echo + echo "GEMFIRE_HOME: ${GEMFIRE_HOME}" + echo "GFSH Version: $( ${GEMFIRE_HOME}/bin/gfsh version ) " +fi + +if [ -z ${JAVA_HOME} ]; then + echo "JAVA_HOME must be set to a valid path." + exit 1 +else + echo + echo "JAVA_HOME: ${JAVA_HOME}" + echo "Java Version:" + ${JAVA_HOME}/bin/java -version + echo +fi + +export PATH=${JAVA_HOME}/bin:${GEMFIRE_HOME}/bin:${PATH}:. + +gfsh -e "start locator --name=locator0" +gfsh -e "connect --locator=localhost[10334]" -e "start server --name=server0" +gfsh -e "connect --locator=localhost[10334]" -e "create region --name=test_region --type=PARTITION" diff --git a/clients/dotnet-client/prometheus/startserver.ps1 b/clients/dotnet-client/prometheus/startserver.ps1 new file mode 100644 index 00000000..b92d0ed1 --- /dev/null +++ b/clients/dotnet-client/prometheus/startserver.ps1 @@ -0,0 +1,39 @@ +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +$GFSH_PATH = "" +if (Get-Command gfsh -ErrorAction SilentlyContinue) +{ + $GFSH_PATH = "gfsh" +} +else +{ + if (-not (Test-Path env:GEMFIRE_HOME)) + { + Write-Host "Could not find gfsh. Please set the GEMFIRE_HOME path. e.g. " + Write-Host "(Powershell) `$env:GEMFIRE_HOME = " + Write-Host " OR" + Write-Host "(Command-line) set %GEMFIRE_HOME% = " + } + else + { + $GFSH_PATH = "$env:GEMFIRE_HOME\bin\gfsh.bat" + } +} + +if ($GFSH_PATH -ne "") +{ + Invoke-Expression "$GFSH_PATH -e 'start locator --name=locator --dir=$PSScriptRoot\locator' -e 'start server --name=server --dir=$PSScriptRoot\server' -e 'create region --name=test_region --type=PARTITION'" +} diff --git a/clients/dotnet-client/prometheus/stoplocator_servers.sh b/clients/dotnet-client/prometheus/stoplocator_servers.sh new file mode 100644 index 00000000..99aa584b --- /dev/null +++ b/clients/dotnet-client/prometheus/stoplocator_servers.sh @@ -0,0 +1,24 @@ +#!/usr/bin/env bash + +if [ -z ${GEMFIRE_HOME} ]; then + echo "GEMFIRE_HOME must be set to a valid path." + exit 1 +else + echo "GEMFIRE_HOME: ${GEMFIRE_HOME}" + echo "GFSH Version: $( ${GEMFIRE_HOME}/bin/gfsh version ) " +fi + +if [ -z ${JAVA_HOME} ]; then + echo "JAVA_HOME must be set to a valid path." + exit 1 +else + echo + echo "JAVA_HOME: ${JAVA_HOME}" + echo "Java Version:" + ${JAVA_HOME}/bin/java -version + echo +fi + +export PATH=${JAVA_HOME}/bin:${GEMFIRE_HOME}/bin:${PATH}:. + +gfsh -e "connect --locator=localhost[10334]" -e "shutdown --include-locators=true" diff --git a/clients/dotnet-client/prometheus/stopserver.ps1 b/clients/dotnet-client/prometheus/stopserver.ps1 new file mode 100644 index 00000000..d5d5519f --- /dev/null +++ b/clients/dotnet-client/prometheus/stopserver.ps1 @@ -0,0 +1,39 @@ +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +$GFSH_PATH = "" +if (Get-Command gfsh -ErrorAction SilentlyContinue) +{ + $GFSH_PATH = "gfsh" +} +else +{ + if (-not (Test-Path env:GEMFIRE_HOME)) + { + Write-Host "Could not find gfsh. Please set the GEMFIRE_HOME path. e.g. " + Write-Host "(Powershell) `$env:GEMFIRE_HOME = " + Write-Host " OR" + Write-Host "(Command-line) set %GEMFIRE_HOME% = " + } + else + { + $GFSH_PATH = "$env:GEMFIRE_HOME\bin\gfsh.bat" + } +} + +if ($GFSH_PATH -ne "") +{ + Invoke-Expression "$GFSH_PATH -e 'connect' -e 'destroy region --name=test_region' -e 'stop server --name=server' -e 'stop locator --name=locator'" +} diff --git a/clients/dotnet-client/sessionstate/Program.cs b/clients/dotnet-client/sessionstate/Program.cs new file mode 100644 index 00000000..79e1e955 --- /dev/null +++ b/clients/dotnet-client/sessionstate/Program.cs @@ -0,0 +1,65 @@ +// Copyright 2026 Broadcom. All Rights Reserved. + +// This example shows how to back ASP.NET Core session state with VMware Tanzu +// GemFire. GemFire.Client.Session provides GemFireSessionStateCache, an +// IDistributedCache implementation that stores each session in a GemFire region. +// AddGemFireSessionStateCache wires it up; the standard AddSession/UseSession +// middleware then transparently reads and writes sessions through GemFire. + +using System.Net; +using GemFire.Client.Session; + +var builder = WebApplication.CreateBuilder(args); + +// Register the standard ASP.NET Core session middleware. +builder.Services.AddSession(options => +{ + options.IdleTimeout = TimeSpan.FromMinutes(20); + options.Cookie.HttpOnly = true; + options.Cookie.IsEssential = true; +}); + +// Register GemFire as the IDistributedCache that backs the session store. +// Locators and Region are required; the default CacheFactory connects with no +// SSL or authentication, matching the cluster started by the example scripts. +builder.Services.AddGemFireSessionStateCache(options => +{ + options.Locators = new List { new("localhost", 10334) }; + options.Region = "exampleSessionState"; +}); + +var app = builder.Build(); + +app.UseSession(); + +// Per-session counter: increments on each request that shares the session cookie, +// demonstrating that state survives across requests because it lives in GemFire. +app.MapGet("/", (HttpContext context) => +{ + var count = context.Session.GetInt32("count") ?? 0; + count++; + context.Session.SetInt32("count", count); + return Results.Text(count.ToString()); +}); + +// Store a string value under an arbitrary key in the session. +app.MapPost("/session/{key}", async (HttpContext context, string key) => +{ + using var reader = new StreamReader(context.Request.Body); + var value = await reader.ReadToEndAsync(); + context.Session.SetString(key, value); + return Results.Ok(); +}); + +// Read a previously stored value back out of the session. +app.MapGet("/session/{key}", (HttpContext context, string key) => + Results.Text(context.Session.GetString(key) ?? "")); + +// Remove a key from the session. +app.MapDelete("/session/{key}", (HttpContext context, string key) => +{ + context.Session.Remove(key); + return Results.Ok(); +}); + +app.Run("http://localhost:5050"); diff --git a/clients/dotnet-client/sessionstate/README.md b/clients/dotnet-client/sessionstate/README.md new file mode 100644 index 00000000..ede0d028 --- /dev/null +++ b/clients/dotnet-client/sessionstate/README.md @@ -0,0 +1,90 @@ +# Copyright 2026 Broadcom. All Rights Reserved. +# sessionstate example + +This example shows how to back **ASP.NET Core session state** with VMware Tanzu +GemFire. `GemFire.Client.Session` provides `GemFireSessionStateCache`, an +[`IDistributedCache`](https://learn.microsoft.com/aspnet/core/performance/caching/distributed) +implementation that stores each session in a GemFire region. You register it with +`AddGemFireSessionStateCache(...)` alongside the standard `AddSession()` / +`UseSession()` middleware, and ASP.NET then reads and writes sessions through +GemFire transparently. + +## Prerequisites + +- Install VMware Tanzu GemFire (see [VMware Tanzu GemFire documentation](https://techdocs.broadcom.com/us/en/vmware-tanzu/data-solutions/tanzu-gemfire/10-2/gf/about_gemfire.html)) +- Install [VMware Tanzu GemFire .NET Client](https://techdocs.broadcom.com/us/en/vmware-tanzu/data-solutions/tanzu-gemfire-dotnet-client/1-0-beta/gf-dotnet-client/installation.html) + - The .NET Client and its Session package are delivered as NuGet packages + - Follow instructions in the solution README to install the packages +- Build examples from the solution directory: `dotnet build` +- Set shell variable `GEMFIRE_HOME` to the install directory of VMware Tanzu GemFire +- Set shell variable `JAVA_HOME` to the top of a Java 17 JDK installation + +## Running + +1. From a command shell, set the current directory to the `sessionstate` directory in your example workspace. + + ```console + $ cd workspace/examples/sessionstate + ``` + +1. Run the script to start the Tanzu GemFire cluster and create the `exampleSessionState` region. + + For Windows Powershell use `startserver.ps1`: + + ```console + $ startserver.ps1 + ``` + + For Linux use `startlocator_servers.sh`: + + ```console + $ ./startlocator_servers.sh + ``` + +1. Execute `dotnet run`. The app listens on `http://localhost:5050`. + + ```console + $ dotnet run + ``` + + Port `5050` avoids the macOS AirPlay Receiver, which binds `5000` by default. + To use a different port, set `ASPNETCORE_URLS` (e.g. + `ASPNETCORE_URLS=http://localhost:8080 dotnet run`) and adjust the URLs below. + +1. In another shell, exercise the session endpoints. The `-c`/`-b` cookie jar is + what ties successive requests to the same session — without it each request + gets a fresh session. + + ```console + # Per-session counter increments on each request that shares the cookie jar + $ curl -c cookies.txt -b cookies.txt http://localhost:5050/ + 1 + $ curl -c cookies.txt -b cookies.txt http://localhost:5050/ + 2 + + # Store and read back an arbitrary value + $ curl -b cookies.txt -X POST --data 'Tanzu' http://localhost:5050/session/team + $ curl -b cookies.txt http://localhost:5050/session/team + Tanzu + + # Remove it + $ curl -b cookies.txt -X DELETE http://localhost:5050/session/team + ``` + + Each value round-trips through the GemFire `exampleSessionState` region. You can + confirm entries land server-side with + `gfsh -e "connect" -e "describe region --name=exampleSessionState"`. + +1. Stop the app with `Ctrl+C`, then run the stop script to gracefully shut down the Tanzu GemFire cluster. + + For Windows Powershell: + + ```console + $ stopserver.ps1 + ``` + + For Linux use `stoplocator_servers.sh`: + + ```console + $ ./stoplocator_servers.sh + ``` diff --git a/clients/dotnet-client/sessionstate/sessionstate.csproj b/clients/dotnet-client/sessionstate/sessionstate.csproj new file mode 100644 index 00000000..1dfaf585 --- /dev/null +++ b/clients/dotnet-client/sessionstate/sessionstate.csproj @@ -0,0 +1,11 @@ + + + net10.0 + enable + enable + + + + + + diff --git a/clients/dotnet-client/sessionstate/startlocator_servers.sh b/clients/dotnet-client/sessionstate/startlocator_servers.sh new file mode 100644 index 00000000..ccdc3384 --- /dev/null +++ b/clients/dotnet-client/sessionstate/startlocator_servers.sh @@ -0,0 +1,27 @@ +#!/usr/bin/env bash + +if [ -z ${GEMFIRE_HOME} ]; then + echo "GEMFIRE_HOME must be set to a valid path." + exit 1 +else + echo + echo "GEMFIRE_HOME: ${GEMFIRE_HOME}" + echo "GFSH Version: $( ${GEMFIRE_HOME}/bin/gfsh version ) " +fi + +if [ -z ${JAVA_HOME} ]; then + echo "JAVA_HOME must be set to a valid path." + exit 1 +else + echo + echo "JAVA_HOME: ${JAVA_HOME}" + echo "Java Version:" + ${JAVA_HOME}/bin/java -version + echo +fi + +export PATH=${JAVA_HOME}/bin:${GEMFIRE_HOME}/bin:${PATH}:. + +gfsh -e "start locator --name=locator0" +gfsh -e "connect --locator=localhost[10334]" -e "start server --name=server0" +gfsh -e "connect --locator=localhost[10334]" -e "create region --name=exampleSessionState --type=REPLICATE" diff --git a/clients/dotnet-client/sessionstate/startserver.ps1 b/clients/dotnet-client/sessionstate/startserver.ps1 new file mode 100644 index 00000000..6f4949ea --- /dev/null +++ b/clients/dotnet-client/sessionstate/startserver.ps1 @@ -0,0 +1,39 @@ +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +$GFSH_PATH = "" +if (Get-Command gfsh -ErrorAction SilentlyContinue) +{ + $GFSH_PATH = "gfsh" +} +else +{ + if (-not (Test-Path env:GEMFIRE_HOME)) + { + Write-Host "Could not find gfsh. Please set the GEMFIRE_HOME path. e.g. " + Write-Host "(Powershell) `$env:GEMFIRE_HOME = " + Write-Host " OR" + Write-Host "(Command-line) set %GEMFIRE_HOME% = " + } + else + { + $GFSH_PATH = "$env:GEMFIRE_HOME\bin\gfsh.bat" + } +} + +if ($GFSH_PATH -ne "") +{ + Invoke-Expression "$GFSH_PATH -e 'start locator --name=locator --dir=$PSScriptRoot\locator' -e 'start server --name=server --dir=$PSScriptRoot\server' -e 'create region --name=exampleSessionState --type=REPLICATE'" +} diff --git a/clients/dotnet-client/sessionstate/stoplocator_servers.sh b/clients/dotnet-client/sessionstate/stoplocator_servers.sh new file mode 100644 index 00000000..99aa584b --- /dev/null +++ b/clients/dotnet-client/sessionstate/stoplocator_servers.sh @@ -0,0 +1,24 @@ +#!/usr/bin/env bash + +if [ -z ${GEMFIRE_HOME} ]; then + echo "GEMFIRE_HOME must be set to a valid path." + exit 1 +else + echo "GEMFIRE_HOME: ${GEMFIRE_HOME}" + echo "GFSH Version: $( ${GEMFIRE_HOME}/bin/gfsh version ) " +fi + +if [ -z ${JAVA_HOME} ]; then + echo "JAVA_HOME must be set to a valid path." + exit 1 +else + echo + echo "JAVA_HOME: ${JAVA_HOME}" + echo "Java Version:" + ${JAVA_HOME}/bin/java -version + echo +fi + +export PATH=${JAVA_HOME}/bin:${GEMFIRE_HOME}/bin:${PATH}:. + +gfsh -e "connect --locator=localhost[10334]" -e "shutdown --include-locators=true" diff --git a/clients/dotnet-client/sessionstate/stopserver.ps1 b/clients/dotnet-client/sessionstate/stopserver.ps1 new file mode 100644 index 00000000..1921f2ca --- /dev/null +++ b/clients/dotnet-client/sessionstate/stopserver.ps1 @@ -0,0 +1,39 @@ +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +$GFSH_PATH = "" +if (Get-Command gfsh -ErrorAction SilentlyContinue) +{ + $GFSH_PATH = "gfsh" +} +else +{ + if (-not (Test-Path env:GEMFIRE_HOME)) + { + Write-Host "Could not find gfsh. Please set the GEMFIRE_HOME path. e.g. " + Write-Host "(Powershell) `$env:GEMFIRE_HOME = " + Write-Host " OR" + Write-Host "(Command-line) set %GEMFIRE_HOME% = " + } + else + { + $GFSH_PATH = "$env:GEMFIRE_HOME\bin\gfsh.bat" + } +} + +if ($GFSH_PATH -ne "") +{ + Invoke-Expression "$GFSH_PATH -e 'connect' -e 'destroy region --name=exampleSessionState' -e 'stop server --name=server' -e 'stop locator --name=locator'" +} From 4c948b215eb541d1d1bc59f414501194911b5aef Mon Sep 17 00:00:00 2001 From: Ernie Burghardt Date: Wed, 17 Jun 2026 09:48:20 -0500 Subject: [PATCH 4/5] Update README and INSTALLATION for gemfire.client 1.0.0-beta.3-1222 - Target .NET 10.0 SDK (required by new package) - Require GemFire 10.3+; update docs URL from 10.2 to 10.3 - Fix clone URL and path to gemfire/gemfire-examples repo - Add chmod/Set-ExecutionPolicy note for script executability - Supported OSes: replace Ubuntu 22.04 with RHEL 10; remove JetBrains Rider - Update all PackageReference versions and dependency list from nuspec ai-assisted=yes Co-Authored-By: Claude Sonnet 4.6 --- clients/dotnet-client/INSTALLATION.md | 84 +++++++++++++-------------- clients/dotnet-client/README.md | 25 +++++--- 2 files changed, 59 insertions(+), 50 deletions(-) diff --git a/clients/dotnet-client/INSTALLATION.md b/clients/dotnet-client/INSTALLATION.md index b1c5c58e..85f6c083 100644 --- a/clients/dotnet-client/INSTALLATION.md +++ b/clients/dotnet-client/INSTALLATION.md @@ -19,27 +19,26 @@ Before installing the VMware Tanzu GemFire .NET Client, ensure you have the foll ### Required -- **.NET 8.0 SDK or later** - The client requires .NET 8.0 runtime - - Download from: https://dotnet.microsoft.com/en-us/download/dotnet/8.0 +- **.NET 10.0 SDK or later** - The client requires .NET 10.0 runtime + - Download from: https://dotnet.microsoft.com/en-us/download/dotnet/10.0 - Verify installation: ```bash dotnet --version ``` - Should output: `8.0.x` or later + Should output: `10.0.x` or later -- **VMware Tanzu GemFire Server 10.2.0 or later** - The client requires VMware Tanzu GemFire server version 10.2.0 or later +- **VMware Tanzu GemFire Server 10.3.0 or later** - The client requires VMware Tanzu GemFire server version 10.3.0 or later ### Supported Operating Systems - Windows Server 2022 -- Ubuntu 22.04 - RHEL 9 +- RHEL 10 ### Development Tools (Optional but Recommended) - **Visual Studio 2022** (Community, Professional, or Enterprise) - **Visual Studio Code** with C# extension -- **JetBrains Rider** 2023.1 or later ## Installation Methods @@ -66,7 +65,7 @@ The VMware Tanzu GemFire .NET Client consists of two NuGet packages: - **Dependencies**: Requires `GemFire.Client` to be installed first Both packages: -- **Target Framework**: .NET 8.0 +- **Target Framework**: .NET 10.0 - **NuGet Feed**: Configure your NuGet source as provided by your VMware Tanzu GemFire distribution **Note**: For most applications, you'll want to install both packages. The session package is optional if you're not using ASP.NET Core session state management. @@ -76,7 +75,7 @@ Both packages: #### Step 1: Open Your Project 1. Open your .NET project in Visual Studio 2022 -2. Ensure your project targets .NET 8.0 +2. Ensure your project targets .NET 10.0 #### Step 2: Configure NuGet Package Source (if needed) @@ -115,8 +114,8 @@ Check that the package references were added to your `.csproj` file: ```xml - - + + ``` @@ -155,7 +154,7 @@ dotnet add package GemFire.Client To install a specific version: ```bash -dotnet add package GemFire.Client --version 1.0.0 +dotnet add package GemFire.Client --version 1.0.0-beta.3-1222 ``` If you need ASP.NET Core session state management, also install the session package: @@ -167,7 +166,7 @@ dotnet add package GemFire.Client.Session Or with a specific version: ```bash -dotnet add package GemFire.Client.Session --version 1.0.0 +dotnet add package GemFire.Client.Session --version 1.0.0-beta.3-1222 ``` #### Step 4: Verify Installation @@ -182,8 +181,8 @@ You should see: ```xml - - + + ``` @@ -206,7 +205,7 @@ Install-Package GemFire.Client To install a specific version: ```powershell -Install-Package GemFire.Client -Version 1.0.0 +Install-Package GemFire.Client -Version 1.0.0-beta.3-1222 ``` If you need ASP.NET Core session state management, also install the session package: @@ -218,7 +217,7 @@ Install-Package GemFire.Client.Session Or with a specific version: ```powershell -Install-Package GemFire.Client.Session -Version 1.0.0 +Install-Package GemFire.Client.Session -Version 1.0.0-beta.3-1222 ``` ### Method 4: Manual .csproj Edit @@ -230,8 +229,8 @@ You can manually add the package references to your project file: ```xml - - + + ``` @@ -279,7 +278,7 @@ The extracted archive should contain both client DLLs: ``` gemfire.client/ ├── lib/ -│ └── net8.0/ +│ └── net10.0/ │ ├── GemFire.Client.dll │ └── GemFire.Client.Session.dll │ └── GemFire.Client.deps.json @@ -302,10 +301,10 @@ gemfire.client/ ```xml - path/to/gemfire.client/lib/net8.0/GemFire.Client.dll + path/to/gemfire.client/lib/net10.0/GemFire.Client.dll - path/to/gemfire.client/lib/net8.0/GemFire.Client.Session.dll + path/to/gemfire.client/lib/net10.0/GemFire.Client.Session.dll ``` @@ -315,10 +314,10 @@ Or use relative paths: ```xml - ../libraries/gemfire.client/lib/net8.0/GemFire.Client.dll + ../libraries/gemfire.client/lib/net10.0/GemFire.Client.dll - ../libraries/gemfire.client/lib/net8.0/GemFire.Client.Session.dll + ../libraries/gemfire.client/lib/net10.0/GemFire.Client.Session.dll ``` @@ -339,13 +338,13 @@ Or use relative paths: Add the core client: ```bash -dotnet add reference path/to/gemfire.client/lib/net8.0/GemFire.Client.dll +dotnet add reference path/to/gemfire.client/lib/net10.0/GemFire.Client.dll ``` If you need session management, also add: ```bash -dotnet add reference path/to/gemfire.client/lib/net8.0/GemFire.Client.Session.dll +dotnet add reference path/to/gemfire.client/lib/net10.0/GemFire.Client.Session.dll ``` ### Step 4: Install Dependencies @@ -355,26 +354,27 @@ The VMware Tanzu GemFire .NET Client packages have the following NuGet dependenc **For GemFire.Client:** ```xml - - - + + + + - + - ``` **For GemFire.Client.Session (if installed):** ```xml - - - + + + + ``` @@ -397,8 +397,8 @@ Verify the package or reference is listed in your `.csproj` file: **For NuGet installation:** ```xml - - + + ``` @@ -516,17 +516,17 @@ You should see `GemFire.Client` (and optionally `GemFire.Client.Session`) in the **Symptoms:** - Error: `The project does not reference any .NET framework` -- Package requires .NET 8.0 +- Package requires .NET 10.0 **Solutions:** -1. Update your project to target .NET 8.0: +1. Update your project to target .NET 10.0: ```xml - net8.0 + net10.0 ``` -2. Verify .NET 8.0 SDK is installed: +2. Verify .NET 10.0 SDK is installed: ```bash dotnet --version ``` @@ -562,7 +562,7 @@ You should see `GemFire.Client` (and optionally `GemFire.Client.Session`) in the **Solutions:** -1. Verify your operating system is supported (Windows Server 2022, Ubuntu 22.04, or RHEL 9) +1. Verify your operating system is supported (Windows Server 2022, RHEL 9, or RHEL 10) 2. Ensure you're running on x64 architecture ## Next Steps @@ -576,9 +576,9 @@ After successful installation: ## Additional Resources - [Examples README](README.md) - Overview of available examples -- [GitHub Repository](https://github.com/gemfire-examples/dotnet-client) - Source code and issue tracking +- [GitHub Repository](https://github.com/gemfire/gemfire-examples) - Source code and issue tracking --- -**Last Updated**: This guide was last updated for VMware Tanzu GemFire .NET Client version 1.0.0. +**Last Updated**: This guide was last updated for VMware Tanzu GemFire .NET Client version 1.0.0-beta.3-1222. diff --git a/clients/dotnet-client/README.md b/clients/dotnet-client/README.md index 589a1ad6..658f7843 100644 --- a/clients/dotnet-client/README.md +++ b/clients/dotnet-client/README.md @@ -1,14 +1,14 @@ # VMware Tanzu GemFire .NET Client Examples -The VMware Tanzu GemFire .NET Client distribution includes examples that demonstrate how the client library can be used. The examples and their source files are located in the [dotnet-client](https://github.com/gemfire-examples/dotnet-client) repository on GitHub. +The VMware Tanzu GemFire .NET Client distribution includes examples that demonstrate how the client library can be used. The examples and their source files are located in the [gemfire-examples](https://github.com/gemfire/gemfire-examples) repository on GitHub. ## Prerequisites Before running the examples, ensure you have the following components installed: -- **.NET 8.0 SDK** - Download from [Microsoft .NET Downloads](https://dotnet.microsoft.com/download) +- **.NET 10.0 SDK** - Download from [Microsoft .NET Downloads](https://dotnet.microsoft.com/download) - **Java 17 JDK** - Required to run Tanzu GemFire Locator and Server processes -- **VMware Tanzu GemFire** - Download and install from [VMware Tanzu GemFire Downloads](https://techdocs.broadcom.com/us/en/vmware-tanzu/data-solutions/tanzu-gemfire/10-2/gf/about_gemfire.html))) +- **VMware Tanzu GemFire 10.3+** - Download and install from [VMware Tanzu GemFire Downloads](https://techdocs.broadcom.com/us/en/vmware-tanzu/data-solutions/tanzu-gemfire/10-3/gf/about_gemfire.html) - **VMware Tanzu GemFire .NET Client** - Install the `GemFire.Client` NuGet package (see [Installation Guide](https://techdocs.broadcom.com/us/en/vmware-tanzu/data-solutions/tanzu-gemfire-dotnet-client/1-0-beta/gf-dotnet-client/installation.html) for installation instructions) ## Getting the Examples @@ -16,8 +16,8 @@ Before running the examples, ensure you have the following components installed: Clone the examples repository from GitHub: ```bash -git clone https://github.com/gemfire-examples/dotnet-client.git -cd dotnet-client/examples +git clone git@github.com:gemfire/gemfire-examples.git +cd gemfire-examples/clients/dotnet-client ``` ## Building the Examples @@ -83,7 +83,16 @@ Each example includes: cd ``` -2. **Start the Tanzu GemFire cluster:** +2. **Make the scripts executable (Linux/macOS only — one time per example):** + ```bash + chmod +x startlocator_servers.sh stoplocator_servers.sh + ``` + On Windows, if PowerShell blocks `.ps1` execution, run once: + ```powershell + Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser + ``` + +3. **Start the Tanzu GemFire cluster:** **Windows (PowerShell):** ```powershell @@ -101,12 +110,12 @@ Each example includes: - Start Servers to store and manage key-value data - Create a Tanzu GemFire Region (distributed hashmap for organizing data) -3. **Run the example:** +4. **Run the example:** ```bash dotnet run ``` -4. **Stop the Tanzu GemFire cluster:** +5. **Stop the Tanzu GemFire cluster:** **Windows (PowerShell):** ```powershell From d77b9d09edcab1c9744eaf774f97e0712b654a12 Mon Sep 17 00:00:00 2001 From: Ernie Burghardt Date: Wed, 17 Jun 2026 14:42:51 -0500 Subject: [PATCH 5/5] Update dotnet-client examples to gemfire.client 1.0.0-1233 First GA RC: bump all csproj package references (gemfire.client and gemfire.client.session), INSTALLATION.md version strings and nupkg filenames, NuGet.config local path, and all README techdocs URLs from 1-0-beta to 1-0. ai-assisted=yes Co-Authored-By: Claude Sonnet 4.6 --- clients/dotnet-client/INSTALLATION.md | 30 +++++++++---------- clients/dotnet-client/README.md | 2 +- .../dotnet-client/authinitialize/README.md | 2 +- .../authinitialize/authinitialize.csproj | 2 +- clients/dotnet-client/cachelistener/README.md | 2 +- .../cachelistener/cachelistener.csproj | 2 +- clients/dotnet-client/classaskey/README.md | 2 +- .../classaskey/classaskey.csproj | 2 +- .../classaskey_windows_only/README.md | 2 +- .../classaskey_windows_only.csproj | 2 +- .../dotnet-client/continuousquery/README.md | 2 +- .../continuousquery/continuousquery.csproj | 2 +- .../dotnet-client/dataserializable/README.md | 2 +- .../dataserializable/dataserializable.csproj | 2 +- .../delegatecachelistener/README.md | 2 +- .../delegatecachelistener.csproj | 2 +- .../dotnet-client/functionexecution/README.md | 2 +- .../functionexecution.csproj | 2 +- clients/dotnet-client/jsonconfig/README.md | 2 +- .../jsonconfig/jsonconfig.csproj | 2 +- .../dotnet-client/pdxautoserializer/README.md | 2 +- .../pdxautoserializer.csproj | 2 +- .../dotnet-client/pdxserializable/README.md | 2 +- .../pdxserializable/pdxserializable.csproj | 2 +- clients/dotnet-client/prometheus/README.md | 2 +- .../prometheus/prometheus.csproj | 2 +- clients/dotnet-client/putgetremove/README.md | 2 +- .../putgetremove/putgetremove.csproj | 2 +- clients/dotnet-client/remotequery/README.md | 2 +- .../remotequery/remotequery.csproj | 2 +- clients/dotnet-client/sessionstate/README.md | 2 +- .../sessionstate/sessionstate.csproj | 4 +-- clients/dotnet-client/sslputget/README.md | 2 +- .../dotnet-client/sslputget/sslputget.csproj | 2 +- clients/dotnet-client/transaction/README.md | 2 +- .../transaction/transaction.csproj | 2 +- 36 files changed, 51 insertions(+), 51 deletions(-) diff --git a/clients/dotnet-client/INSTALLATION.md b/clients/dotnet-client/INSTALLATION.md index 85f6c083..9d4b7f33 100644 --- a/clients/dotnet-client/INSTALLATION.md +++ b/clients/dotnet-client/INSTALLATION.md @@ -114,8 +114,8 @@ Check that the package references were added to your `.csproj` file: ```xml - - + + ``` @@ -154,7 +154,7 @@ dotnet add package GemFire.Client To install a specific version: ```bash -dotnet add package GemFire.Client --version 1.0.0-beta.3-1222 +dotnet add package GemFire.Client --version 1.0.0-1233 ``` If you need ASP.NET Core session state management, also install the session package: @@ -166,7 +166,7 @@ dotnet add package GemFire.Client.Session Or with a specific version: ```bash -dotnet add package GemFire.Client.Session --version 1.0.0-beta.3-1222 +dotnet add package GemFire.Client.Session --version 1.0.0-1233 ``` #### Step 4: Verify Installation @@ -181,8 +181,8 @@ You should see: ```xml - - + + ``` @@ -205,7 +205,7 @@ Install-Package GemFire.Client To install a specific version: ```powershell -Install-Package GemFire.Client -Version 1.0.0-beta.3-1222 +Install-Package GemFire.Client -Version 1.0.0-1233 ``` If you need ASP.NET Core session state management, also install the session package: @@ -217,7 +217,7 @@ Install-Package GemFire.Client.Session Or with a specific version: ```powershell -Install-Package GemFire.Client.Session -Version 1.0.0-beta.3-1222 +Install-Package GemFire.Client.Session -Version 1.0.0-1233 ``` ### Method 4: Manual .csproj Edit @@ -229,8 +229,8 @@ You can manually add the package references to your project file: ```xml - - + + ``` @@ -284,8 +284,8 @@ gemfire.client/ │ └── GemFire.Client.deps.json │ └── GemFire.Client.Session.deps.json │ -├── GemFire.Client.1.0.0.nupkg -├── GemFire.Client.Session.1.0.0.nupkg +├── GemFire.Client.1.0.0-1233.nupkg +├── GemFire.Client.Session.1.0.0-1233.nupkg └── [other package files] ``` @@ -397,8 +397,8 @@ Verify the package or reference is listed in your `.csproj` file: **For NuGet installation:** ```xml - - + + ``` @@ -580,5 +580,5 @@ After successful installation: --- -**Last Updated**: This guide was last updated for VMware Tanzu GemFire .NET Client version 1.0.0-beta.3-1222. +**Last Updated**: This guide was last updated for VMware Tanzu GemFire .NET Client version 1.0.0-1233. diff --git a/clients/dotnet-client/README.md b/clients/dotnet-client/README.md index 658f7843..05dcd02e 100644 --- a/clients/dotnet-client/README.md +++ b/clients/dotnet-client/README.md @@ -9,7 +9,7 @@ Before running the examples, ensure you have the following components installed: - **.NET 10.0 SDK** - Download from [Microsoft .NET Downloads](https://dotnet.microsoft.com/download) - **Java 17 JDK** - Required to run Tanzu GemFire Locator and Server processes - **VMware Tanzu GemFire 10.3+** - Download and install from [VMware Tanzu GemFire Downloads](https://techdocs.broadcom.com/us/en/vmware-tanzu/data-solutions/tanzu-gemfire/10-3/gf/about_gemfire.html) -- **VMware Tanzu GemFire .NET Client** - Install the `GemFire.Client` NuGet package (see [Installation Guide](https://techdocs.broadcom.com/us/en/vmware-tanzu/data-solutions/tanzu-gemfire-dotnet-client/1-0-beta/gf-dotnet-client/installation.html) for installation instructions) +- **VMware Tanzu GemFire .NET Client** - Install the `GemFire.Client` NuGet package (see [Installation Guide](https://techdocs.broadcom.com/us/en/vmware-tanzu/data-solutions/tanzu-gemfire-dotnet-client/1-0/gf-dotnet-client/installation.html) for installation instructions) ## Getting the Examples diff --git a/clients/dotnet-client/authinitialize/README.md b/clients/dotnet-client/authinitialize/README.md index 59ec5508..61cdfd07 100644 --- a/clients/dotnet-client/authinitialize/README.md +++ b/clients/dotnet-client/authinitialize/README.md @@ -7,7 +7,7 @@ The Java code demonstrates the basics required on the server side needed for the ## Prerequisites - Install VMware Tanzu GemFire (see [VMware Tanzu GemFire documentation](https://techdocs.broadcom.com/us/en/vmware-tanzu/data-solutions/tanzu-gemfire/10-2/gf/about_gemfire.html)) -- Install [VMware Tanzu GemFire .NET Client](https://techdocs.broadcom.com/us/en/vmware-tanzu/data-solutions/tanzu-gemfire-dotnet-client/1-0-beta/gf-dotnet-client/installation.html) +- Install [VMware Tanzu GemFire .NET Client](https://techdocs.broadcom.com/us/en/vmware-tanzu/data-solutions/tanzu-gemfire-dotnet-client/1-0/gf-dotnet-client/installation.html) - VMware Tanzu GemFire .NET Client is delivered as a NuGet package - Follow instructions in solution README to install package - Build Java example classes (see solution README for details) diff --git a/clients/dotnet-client/authinitialize/authinitialize.csproj b/clients/dotnet-client/authinitialize/authinitialize.csproj index 19e637be..2a5af3e1 100644 --- a/clients/dotnet-client/authinitialize/authinitialize.csproj +++ b/clients/dotnet-client/authinitialize/authinitialize.csproj @@ -18,7 +18,7 @@ - + diff --git a/clients/dotnet-client/cachelistener/README.md b/clients/dotnet-client/cachelistener/README.md index 3910bff4..144afcb2 100644 --- a/clients/dotnet-client/cachelistener/README.md +++ b/clients/dotnet-client/cachelistener/README.md @@ -7,7 +7,7 @@ interface and registered with the Region to collect the received server events. ## Prerequisites - Install VMware Tanzu GemFire (see [VMware Tanzu GemFire documentation](https://techdocs.broadcom.com/us/en/vmware-tanzu/data-solutions/tanzu-gemfire/10-2/gf/about_gemfire.html)) -- Install [VMware Tanzu GemFire .NET Client](https://techdocs.broadcom.com/us/en/vmware-tanzu/data-solutions/tanzu-gemfire-dotnet-client/1-0-beta/gf-dotnet-client/installation.html) +- Install [VMware Tanzu GemFire .NET Client](https://techdocs.broadcom.com/us/en/vmware-tanzu/data-solutions/tanzu-gemfire-dotnet-client/1-0/gf-dotnet-client/installation.html) - VMware Tanzu GemFire .NET Client is delivered as a NuGet package - Follow instructions in solution README to install package - Build Java example classes (see solution README for details) diff --git a/clients/dotnet-client/cachelistener/cachelistener.csproj b/clients/dotnet-client/cachelistener/cachelistener.csproj index cd9e9822..f9f33bd2 100644 --- a/clients/dotnet-client/cachelistener/cachelistener.csproj +++ b/clients/dotnet-client/cachelistener/cachelistener.csproj @@ -18,7 +18,7 @@ - + \ No newline at end of file diff --git a/clients/dotnet-client/classaskey/README.md b/clients/dotnet-client/classaskey/README.md index cf4399c4..de9ad554 100644 --- a/clients/dotnet-client/classaskey/README.md +++ b/clients/dotnet-client/classaskey/README.md @@ -5,7 +5,7 @@ This example shows how to use a developer created class as key as well as demons ## Prerequisites - Install VMware Tanzu GemFire (see [VMware Tanzu GemFire documentation](https://techdocs.broadcom.com/us/en/vmware-tanzu/data-solutions/tanzu-gemfire/10-2/gf/about_gemfire.html)) -- Install [VMware Tanzu GemFire .NET Client](https://techdocs.broadcom.com/us/en/vmware-tanzu/data-solutions/tanzu-gemfire-dotnet-client/1-0-beta/gf-dotnet-client/installation.html) +- Install [VMware Tanzu GemFire .NET Client](https://techdocs.broadcom.com/us/en/vmware-tanzu/data-solutions/tanzu-gemfire-dotnet-client/1-0/gf-dotnet-client/installation.html) - VMware Tanzu GemFire .NET Client is delivered as a NuGet package - Follow instructions in solution README to install package - Build Java example classes (see solution README for details) diff --git a/clients/dotnet-client/classaskey/classaskey.csproj b/clients/dotnet-client/classaskey/classaskey.csproj index 1e33afb0..bdb4ea24 100644 --- a/clients/dotnet-client/classaskey/classaskey.csproj +++ b/clients/dotnet-client/classaskey/classaskey.csproj @@ -18,7 +18,7 @@ - + diff --git a/clients/dotnet-client/classaskey_windows_only/README.md b/clients/dotnet-client/classaskey_windows_only/README.md index 05fc7a1f..bf539e30 100644 --- a/clients/dotnet-client/classaskey_windows_only/README.md +++ b/clients/dotnet-client/classaskey_windows_only/README.md @@ -9,7 +9,7 @@ This example shows how to design a photo filter as the key for storing metadata ## Prerequisites * Install VMware Tanzu GemFire (see [VMware Tanzu GemFire documentation](https://techdocs.broadcom.com/us/en/vmware-tanzu/data-solutions/tanzu-gemfire/10-2/gf/about_gemfire.html)) -* Install [VMware Tanzu GemFire .NET Client](https://techdocs.broadcom.com/us/en/vmware-tanzu/data-solutions/tanzu-gemfire-dotnet-client/1-0-beta/gf-dotnet-client/installation.html) +* Install [VMware Tanzu GemFire .NET Client](https://techdocs.broadcom.com/us/en/vmware-tanzu/data-solutions/tanzu-gemfire-dotnet-client/1-0/gf-dotnet-client/installation.html) * Set `GEMFIRE_HOME` to the install directory of VMware Tanzu GemFire * Set `JAVA_HOME` to top of Java 17 JDK installation * Build examples from solution directory "dotnet build" diff --git a/clients/dotnet-client/classaskey_windows_only/classaskey_windows_only.csproj b/clients/dotnet-client/classaskey_windows_only/classaskey_windows_only.csproj index cd5738cb..fe59fbbd 100644 --- a/clients/dotnet-client/classaskey_windows_only/classaskey_windows_only.csproj +++ b/clients/dotnet-client/classaskey_windows_only/classaskey_windows_only.csproj @@ -19,7 +19,7 @@ - + diff --git a/clients/dotnet-client/continuousquery/README.md b/clients/dotnet-client/continuousquery/README.md index 314413d6..50445650 100644 --- a/clients/dotnet-client/continuousquery/README.md +++ b/clients/dotnet-client/continuousquery/README.md @@ -4,7 +4,7 @@ This is a simple example showing how to execute a continuous query on a Tanzu Ge ## Prerequisites * Install VMware Tanzu GemFire (see [VMware Tanzu GemFire documentation](https://techdocs.broadcom.com/us/en/vmware-tanzu/data-solutions/tanzu-gemfire/10-2/gf/about_gemfire.html)) -* Install [VMware Tanzu GemFire .NET Client](https://techdocs.broadcom.com/us/en/vmware-tanzu/data-solutions/tanzu-gemfire-dotnet-client/1-0-beta/gf-dotnet-client/installation.html) +* Install [VMware Tanzu GemFire .NET Client](https://techdocs.broadcom.com/us/en/vmware-tanzu/data-solutions/tanzu-gemfire-dotnet-client/1-0/gf-dotnet-client/installation.html) * Build examples from solution directory "dotnet build" * Set `GEMFIRE_HOME` to the install directory of VMware Tanzu GemFire * Set `JAVA_HOME` to top of Java 17 JDK installation diff --git a/clients/dotnet-client/continuousquery/continuousquery.csproj b/clients/dotnet-client/continuousquery/continuousquery.csproj index b0faf31e..e97e4156 100644 --- a/clients/dotnet-client/continuousquery/continuousquery.csproj +++ b/clients/dotnet-client/continuousquery/continuousquery.csproj @@ -18,7 +18,7 @@ - + diff --git a/clients/dotnet-client/dataserializable/README.md b/clients/dotnet-client/dataserializable/README.md index 6ee2f842..8f1a9414 100644 --- a/clients/dotnet-client/dataserializable/README.md +++ b/clients/dotnet-client/dataserializable/README.md @@ -6,7 +6,7 @@ This is a simple example showing how to register for serialization of custom obj ## Prerequisites - Install VMware Tanzu GemFire (see [VMware Tanzu GemFire documentation](https://techdocs.broadcom.com/us/en/vmware-tanzu/data-solutions/tanzu-gemfire/10-2/gf/about_gemfire.html)) -- Install [VMware Tanzu GemFire .NET Client](https://techdocs.broadcom.com/us/en/vmware-tanzu/data-solutions/tanzu-gemfire-dotnet-client/1-0-beta/gf-dotnet-client/installation.html) +- Install [VMware Tanzu GemFire .NET Client](https://techdocs.broadcom.com/us/en/vmware-tanzu/data-solutions/tanzu-gemfire-dotnet-client/1-0/gf-dotnet-client/installation.html) - VMware Tanzu GemFire .NET Client is delivered as a NuGet package - Follow instructions in solution README to install package - Build Java example classes (see solution README for details) diff --git a/clients/dotnet-client/dataserializable/dataserializable.csproj b/clients/dotnet-client/dataserializable/dataserializable.csproj index b0faf31e..e97e4156 100644 --- a/clients/dotnet-client/dataserializable/dataserializable.csproj +++ b/clients/dotnet-client/dataserializable/dataserializable.csproj @@ -18,7 +18,7 @@ - + diff --git a/clients/dotnet-client/delegatecachelistener/README.md b/clients/dotnet-client/delegatecachelistener/README.md index 3c88516f..28794db2 100644 --- a/clients/dotnet-client/delegatecachelistener/README.md +++ b/clients/dotnet-client/delegatecachelistener/README.md @@ -9,7 +9,7 @@ or with minor changes can be used to add multiple listeners that will be trigger ## Prerequisites - Install VMware Tanzu GemFire (see [VMware Tanzu GemFire documentation](https://techdocs.broadcom.com/us/en/vmware-tanzu/data-solutions/tanzu-gemfire/10-2/gf/about_gemfire.html)) -- Install [VMware Tanzu GemFire .NET Client](https://techdocs.broadcom.com/us/en/vmware-tanzu/data-solutions/tanzu-gemfire-dotnet-client/1-0-beta/gf-dotnet-client/installation.html) +- Install [VMware Tanzu GemFire .NET Client](https://techdocs.broadcom.com/us/en/vmware-tanzu/data-solutions/tanzu-gemfire-dotnet-client/1-0/gf-dotnet-client/installation.html) - VMware Tanzu GemFire .NET Client is delivered as a NuGet package - Follow instructions in solution README to install package - Build Java example classes (see solution README for details) diff --git a/clients/dotnet-client/delegatecachelistener/delegatecachelistener.csproj b/clients/dotnet-client/delegatecachelistener/delegatecachelistener.csproj index b0faf31e..e97e4156 100644 --- a/clients/dotnet-client/delegatecachelistener/delegatecachelistener.csproj +++ b/clients/dotnet-client/delegatecachelistener/delegatecachelistener.csproj @@ -18,7 +18,7 @@ - + diff --git a/clients/dotnet-client/functionexecution/README.md b/clients/dotnet-client/functionexecution/README.md index 9b3ba382..e10db681 100644 --- a/clients/dotnet-client/functionexecution/README.md +++ b/clients/dotnet-client/functionexecution/README.md @@ -5,7 +5,7 @@ This example illustrates how to execute server side Java functions. ## Prerequisites - Install VMware Tanzu GemFire (see [VMware Tanzu GemFire documentation](https://techdocs.broadcom.com/us/en/vmware-tanzu/data-solutions/tanzu-gemfire/10-2/gf/about_gemfire.html)) -- Install [VMware Tanzu GemFire .NET Client](https://techdocs.broadcom.com/us/en/vmware-tanzu/data-solutions/tanzu-gemfire-dotnet-client/1-0-beta/gf-dotnet-client/installation.html) +- Install [VMware Tanzu GemFire .NET Client](https://techdocs.broadcom.com/us/en/vmware-tanzu/data-solutions/tanzu-gemfire-dotnet-client/1-0/gf-dotnet-client/installation.html) - VMware Tanzu GemFire .NET Client is delivered as a NuGet package - Follow instructions in solution README to install package - Build Java example classes (see solution README for details) diff --git a/clients/dotnet-client/functionexecution/functionexecution.csproj b/clients/dotnet-client/functionexecution/functionexecution.csproj index b0faf31e..e97e4156 100644 --- a/clients/dotnet-client/functionexecution/functionexecution.csproj +++ b/clients/dotnet-client/functionexecution/functionexecution.csproj @@ -18,7 +18,7 @@ - + diff --git a/clients/dotnet-client/jsonconfig/README.md b/clients/dotnet-client/jsonconfig/README.md index f981fa47..70eda23c 100644 --- a/clients/dotnet-client/jsonconfig/README.md +++ b/clients/dotnet-client/jsonconfig/README.md @@ -10,7 +10,7 @@ interface and registered with the Region to collect the received server events. ## Prerequisites - Install VMware Tanzu GemFire (see [VMware Tanzu GemFire documentation](https://techdocs.broadcom.com/us/en/vmware-tanzu/data-solutions/tanzu-gemfire/10-2/gf/about_gemfire.html)) -- Install [VMware Tanzu GemFire .NET Client](https://techdocs.broadcom.com/us/en/vmware-tanzu/data-solutions/tanzu-gemfire-dotnet-client/1-0-beta/gf-dotnet-client/installation.html) +- Install [VMware Tanzu GemFire .NET Client](https://techdocs.broadcom.com/us/en/vmware-tanzu/data-solutions/tanzu-gemfire-dotnet-client/1-0/gf-dotnet-client/installation.html) - VMware Tanzu GemFire .NET Client is delivered as a NuGet package - Follow instructions in solution README to install package - Build Java example classes (see solution README for details) diff --git a/clients/dotnet-client/jsonconfig/jsonconfig.csproj b/clients/dotnet-client/jsonconfig/jsonconfig.csproj index 2af6bf00..29bafec7 100644 --- a/clients/dotnet-client/jsonconfig/jsonconfig.csproj +++ b/clients/dotnet-client/jsonconfig/jsonconfig.csproj @@ -18,7 +18,7 @@ - + diff --git a/clients/dotnet-client/pdxautoserializer/README.md b/clients/dotnet-client/pdxautoserializer/README.md index 85a919d6..d8d494e4 100644 --- a/clients/dotnet-client/pdxautoserializer/README.md +++ b/clients/dotnet-client/pdxautoserializer/README.md @@ -6,7 +6,7 @@ This is a simple example showing how to register for auto-serialization of custo ## Prerequisites - Install VMware Tanzu GemFire (see [VMware Tanzu GemFire documentation](https://techdocs.broadcom.com/us/en/vmware-tanzu/data-solutions/tanzu-gemfire/10-2/gf/about_gemfire.html)) -- Install [VMware Tanzu GemFire .NET Client](https://techdocs.broadcom.com/us/en/vmware-tanzu/data-solutions/tanzu-gemfire-dotnet-client/1-0-beta/gf-dotnet-client/installation.html) +- Install [VMware Tanzu GemFire .NET Client](https://techdocs.broadcom.com/us/en/vmware-tanzu/data-solutions/tanzu-gemfire-dotnet-client/1-0/gf-dotnet-client/installation.html) - VMware Tanzu GemFire .NET Client is delivered as a NuGet package - Follow instructions in solution README to install package - Build Java example classes (see solution README for details) diff --git a/clients/dotnet-client/pdxautoserializer/pdxautoserializer.csproj b/clients/dotnet-client/pdxautoserializer/pdxautoserializer.csproj index b0faf31e..e97e4156 100644 --- a/clients/dotnet-client/pdxautoserializer/pdxautoserializer.csproj +++ b/clients/dotnet-client/pdxautoserializer/pdxautoserializer.csproj @@ -18,7 +18,7 @@ - + diff --git a/clients/dotnet-client/pdxserializable/README.md b/clients/dotnet-client/pdxserializable/README.md index ae198014..dfb54eeb 100644 --- a/clients/dotnet-client/pdxserializable/README.md +++ b/clients/dotnet-client/pdxserializable/README.md @@ -6,7 +6,7 @@ This is a simple example showing how to register for serialization of custom obj ## Prerequisites - Install VMware Tanzu GemFire (see [VMware Tanzu GemFire documentation](https://techdocs.broadcom.com/us/en/vmware-tanzu/data-solutions/tanzu-gemfire/10-2/gf/about_gemfire.html)) -- Install [VMware Tanzu GemFire .NET Client](https://techdocs.broadcom.com/us/en/vmware-tanzu/data-solutions/tanzu-gemfire-dotnet-client/1-0-beta/gf-dotnet-client/installation.html) +- Install [VMware Tanzu GemFire .NET Client](https://techdocs.broadcom.com/us/en/vmware-tanzu/data-solutions/tanzu-gemfire-dotnet-client/1-0/gf-dotnet-client/installation.html) - VMware Tanzu GemFire .NET Client is delivered as a NuGet package - Follow instructions in solution README to install package - Build Java example classes (see solution README for details) diff --git a/clients/dotnet-client/pdxserializable/pdxserializable.csproj b/clients/dotnet-client/pdxserializable/pdxserializable.csproj index 249f0155..7a7b63bd 100644 --- a/clients/dotnet-client/pdxserializable/pdxserializable.csproj +++ b/clients/dotnet-client/pdxserializable/pdxserializable.csproj @@ -18,7 +18,7 @@ - + diff --git a/clients/dotnet-client/prometheus/README.md b/clients/dotnet-client/prometheus/README.md index 9e20bcc8..80ac1336 100644 --- a/clients/dotnet-client/prometheus/README.md +++ b/clients/dotnet-client/prometheus/README.md @@ -17,7 +17,7 @@ pool, etc.), and then by specific operation — for example ## Prerequisites - Install VMware Tanzu GemFire (see [VMware Tanzu GemFire documentation](https://techdocs.broadcom.com/us/en/vmware-tanzu/data-solutions/tanzu-gemfire/10-2/gf/about_gemfire.html)) -- Install [VMware Tanzu GemFire .NET Client](https://techdocs.broadcom.com/us/en/vmware-tanzu/data-solutions/tanzu-gemfire-dotnet-client/1-0-beta/gf-dotnet-client/installation.html) +- Install [VMware Tanzu GemFire .NET Client](https://techdocs.broadcom.com/us/en/vmware-tanzu/data-solutions/tanzu-gemfire-dotnet-client/1-0/gf-dotnet-client/installation.html) - The .NET Client is delivered as a NuGet package; follow the solution README to install it - Install [Prometheus](https://prometheus.io/) and add it to your `PATH` - Build examples from the solution directory: `dotnet build` diff --git a/clients/dotnet-client/prometheus/prometheus.csproj b/clients/dotnet-client/prometheus/prometheus.csproj index d04c2c44..6316e9ef 100644 --- a/clients/dotnet-client/prometheus/prometheus.csproj +++ b/clients/dotnet-client/prometheus/prometheus.csproj @@ -6,7 +6,7 @@ enable - + diff --git a/clients/dotnet-client/putgetremove/README.md b/clients/dotnet-client/putgetremove/README.md index e67fcd3e..08cf2025 100644 --- a/clients/dotnet-client/putgetremove/README.md +++ b/clients/dotnet-client/putgetremove/README.md @@ -8,7 +8,7 @@ We then put, get, and remove some primitive data in the region. ## Prerequisites - Install VMware Tanzu GemFire (see [VMware Tanzu GemFire documentation](https://techdocs.broadcom.com/us/en/vmware-tanzu/data-solutions/tanzu-gemfire/10-2/gf/about_gemfire.html)) -- Install [VMware Tanzu GemFire .NET Client](https://techdocs.broadcom.com/us/en/vmware-tanzu/data-solutions/tanzu-gemfire-dotnet-client/1-0-beta/gf-dotnet-client/installation.html) +- Install [VMware Tanzu GemFire .NET Client](https://techdocs.broadcom.com/us/en/vmware-tanzu/data-solutions/tanzu-gemfire-dotnet-client/1-0/gf-dotnet-client/installation.html) - VMware Tanzu GemFire .NET Client is delivered as a NuGet package - Follow instructions in solution README to install package - Build Java example classes (see solution README for details) diff --git a/clients/dotnet-client/putgetremove/putgetremove.csproj b/clients/dotnet-client/putgetremove/putgetremove.csproj index b0faf31e..e97e4156 100644 --- a/clients/dotnet-client/putgetremove/putgetremove.csproj +++ b/clients/dotnet-client/putgetremove/putgetremove.csproj @@ -18,7 +18,7 @@ - + diff --git a/clients/dotnet-client/remotequery/README.md b/clients/dotnet-client/remotequery/README.md index 76cc8c0f..2a6716bd 100644 --- a/clients/dotnet-client/remotequery/README.md +++ b/clients/dotnet-client/remotequery/README.md @@ -6,7 +6,7 @@ This is a simple example showing how to execute a query on a remote region. ## Prerequisites - Install VMware Tanzu GemFire (see [VMware Tanzu GemFire documentation](https://techdocs.broadcom.com/us/en/vmware-tanzu/data-solutions/tanzu-gemfire/10-2/gf/about_gemfire.html)) -- Install [VMware Tanzu GemFire .NET Client](https://techdocs.broadcom.com/us/en/vmware-tanzu/data-solutions/tanzu-gemfire-dotnet-client/1-0-beta/gf-dotnet-client/installation.html) +- Install [VMware Tanzu GemFire .NET Client](https://techdocs.broadcom.com/us/en/vmware-tanzu/data-solutions/tanzu-gemfire-dotnet-client/1-0/gf-dotnet-client/installation.html) - VMware Tanzu GemFire .NET Client is delivered as a NuGet package - Follow instructions in solution README to install package - Build Java example classes (see solution README for details) diff --git a/clients/dotnet-client/remotequery/remotequery.csproj b/clients/dotnet-client/remotequery/remotequery.csproj index b0faf31e..e97e4156 100644 --- a/clients/dotnet-client/remotequery/remotequery.csproj +++ b/clients/dotnet-client/remotequery/remotequery.csproj @@ -18,7 +18,7 @@ - + diff --git a/clients/dotnet-client/sessionstate/README.md b/clients/dotnet-client/sessionstate/README.md index ede0d028..5d2347b8 100644 --- a/clients/dotnet-client/sessionstate/README.md +++ b/clients/dotnet-client/sessionstate/README.md @@ -12,7 +12,7 @@ GemFire transparently. ## Prerequisites - Install VMware Tanzu GemFire (see [VMware Tanzu GemFire documentation](https://techdocs.broadcom.com/us/en/vmware-tanzu/data-solutions/tanzu-gemfire/10-2/gf/about_gemfire.html)) -- Install [VMware Tanzu GemFire .NET Client](https://techdocs.broadcom.com/us/en/vmware-tanzu/data-solutions/tanzu-gemfire-dotnet-client/1-0-beta/gf-dotnet-client/installation.html) +- Install [VMware Tanzu GemFire .NET Client](https://techdocs.broadcom.com/us/en/vmware-tanzu/data-solutions/tanzu-gemfire-dotnet-client/1-0/gf-dotnet-client/installation.html) - The .NET Client and its Session package are delivered as NuGet packages - Follow instructions in the solution README to install the packages - Build examples from the solution directory: `dotnet build` diff --git a/clients/dotnet-client/sessionstate/sessionstate.csproj b/clients/dotnet-client/sessionstate/sessionstate.csproj index 1dfaf585..f3de4038 100644 --- a/clients/dotnet-client/sessionstate/sessionstate.csproj +++ b/clients/dotnet-client/sessionstate/sessionstate.csproj @@ -5,7 +5,7 @@ enable - - + + diff --git a/clients/dotnet-client/sslputget/README.md b/clients/dotnet-client/sslputget/README.md index 26a46b56..4b1ce781 100644 --- a/clients/dotnet-client/sslputget/README.md +++ b/clients/dotnet-client/sslputget/README.md @@ -6,7 +6,7 @@ This example illustrates how to use SSL encryption for all traffic between a .NE ## Prerequisites - Install VMware Tanzu GemFire (see [VMware Tanzu GemFire documentation](https://techdocs.broadcom.com/us/en/vmware-tanzu/data-solutions/tanzu-gemfire/10-2/gf/about_gemfire.html)) -- Install [VMware Tanzu GemFire .NET Client](https://techdocs.broadcom.com/us/en/vmware-tanzu/data-solutions/tanzu-gemfire-dotnet-client/1-0-beta/gf-dotnet-client/installation.html) +- Install [VMware Tanzu GemFire .NET Client](https://techdocs.broadcom.com/us/en/vmware-tanzu/data-solutions/tanzu-gemfire-dotnet-client/1-0/gf-dotnet-client/installation.html) - VMware Tanzu GemFire .NET Client is delivered as a NuGet package - Follow instructions in solution README to install package - Build Java example classes (see solution README for details) diff --git a/clients/dotnet-client/sslputget/sslputget.csproj b/clients/dotnet-client/sslputget/sslputget.csproj index b0faf31e..e97e4156 100644 --- a/clients/dotnet-client/sslputget/sslputget.csproj +++ b/clients/dotnet-client/sslputget/sslputget.csproj @@ -18,7 +18,7 @@ - + diff --git a/clients/dotnet-client/transaction/README.md b/clients/dotnet-client/transaction/README.md index 25a6aace..f6eb45fc 100644 --- a/clients/dotnet-client/transaction/README.md +++ b/clients/dotnet-client/transaction/README.md @@ -9,7 +9,7 @@ existing key while showing how to handle exceptions. ## Prerequisites - Install VMware Tanzu GemFire (see [VMware Tanzu GemFire documentation](https://techdocs.broadcom.com/us/en/vmware-tanzu/data-solutions/tanzu-gemfire/10-2/gf/about_gemfire.html)) -- Install [VMware Tanzu GemFire .NET Client](https://techdocs.broadcom.com/us/en/vmware-tanzu/data-solutions/tanzu-gemfire-dotnet-client/1-0-beta/gf-dotnet-client/installation.html) +- Install [VMware Tanzu GemFire .NET Client](https://techdocs.broadcom.com/us/en/vmware-tanzu/data-solutions/tanzu-gemfire-dotnet-client/1-0/gf-dotnet-client/installation.html) - VMware Tanzu GemFire .NET Client is delivered as a NuGet package - Follow instructions in solution README to install package - Build Java example classes (see solution README for details) diff --git a/clients/dotnet-client/transaction/transaction.csproj b/clients/dotnet-client/transaction/transaction.csproj index b0faf31e..e97e4156 100644 --- a/clients/dotnet-client/transaction/transaction.csproj +++ b/clients/dotnet-client/transaction/transaction.csproj @@ -18,7 +18,7 @@ - +