<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://www.dotnetzone.gr:443/cs/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Web Services</title><link>https://www.dotnetzone.gr:443/cs/forums/21/ShowForum.aspx</link><description>Συζήτηση περί των web services και WSE, την υλοποίησή τους με το .NET Framework, καθώς και θέματα interoperability με άλλα συστήματα</description><dc:language>el</dc:language><generator>CommunityServer 2.1 SP3 (Build: 20423.1)</generator><item><title>Απ: WCF service client with proxy</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/46639.aspx</link><pubDate>Tue, 02 Dec 2008 19:22:53 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:46639</guid><dc:creator>Παναγιώτης Καναβός</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/46639.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=21&amp;PostID=46639</wfw:commentRss><description>&lt;P&gt;Θα έλεγα ότι απαιτείται να έχεις κοινό κώδικα, τουλάχιστον τον ορισμό του IService1. Αυτό παίζει αν έχεις στενό έλεγχο και στον client και στο server, ή μάλλον αν τους αναπτύσσεις παράλληλα και κάνεις και το deployment ταυτόχρονα. Σε αυτή την περίπτωση δεν σε ενδιαφέρει το versioning. Επίσης, κάνει γρηγορότερο το development καθώς δεν χρειάζεται να κάνεις regenerate τον proxy, ή μάλλον, δεν χρειάζεται να διορθώνεις bugs όταν ΞΕΧΝΑΣ να κάνεις regenerate τον proxy.&lt;/P&gt;
&lt;P&gt;Τέτοιες περιπτώσεις συναντάς όταν χρησιμοποιείς τα WCF Services σαν ένα μηχανισμό RPC μεταξύ δύο δικών σου εφαρμογών, οπότε δεν σε ενδιαφέρει η συνεργασία με άλλους clients ή ακόμα και με παλαιότερες εκδόσεις του ίδιου client. &lt;/P&gt;
&lt;P&gt;Αν όμως δεν μπορείς να κάνεις ταυτόχρονα τα deployments,&amp;nbsp;ή αν υπάρχουν διάφοροι clients όπως άλλες εφαρμογές, ή κανένα BizTalk, αν θέλεις να εξακολουθήσουν να δουλεύουν οι παλιοί clients (π.χ. όσο διαρκεί το deployment), αν άλλη ομάδα φτιάχνει τον client, τότε πρέπει να σκεφτείς τί θα κάνεις με το versioning. Σε αυτές τις περιπτώσεις δεν μπορείς να πετάξεις τα παλιά IService1 και να παίξεις με καινούρια. Θα πρέπει να συνεχίσουν να δουλεύουν και οι clients που ήξεραν το IService1 v1 και οι νέοι με το IService v2.&lt;/P&gt;
&lt;P&gt;Τέτοιες περιπτώσεις συναντάς όταν χρησιμοποιείς τα WCF Services ως ... web services. Σε αυτή την περίπτωση πραγματικά δεν ξέρεις ποιός σε καλεί. Μπορεί να είναι κάποιος client που έφτιαξες εσύ, μπορεί να είναι μία άλλη εφαρμογή, κάποιο integration service, κάποιο workflow. Το κόστος της αλλαγής όλων των client είναι μεγάλο οπότε πρέπει να χειριστείς κάπως το θέμα του versioning.&lt;/P&gt;</description></item><item><title>Απ: WCF service client with proxy</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/46636.aspx</link><pubDate>Tue, 02 Dec 2008 19:02:40 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:46636</guid><dc:creator>Dimitris Papadimitriou</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/46636.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=21&amp;PostID=46636</wfw:commentRss><description>Η ακριβής ερώτηση είναι "channel factory αντί auto generated proxy".&lt;br&gt;Δεν υπάρχει κάποια διαφορά σε performance. Απλά αν έχεις το έλεγχο client και server εγώ προτιμώ το factory γιατί έτσι δεν χρειάζεται να κάνω update το service reference όταν γίνονται αλλαγές και επίσης μπορώ να έχω κοινό κώδικα για τα DTO (data transfer objects) μου στον client και τον server.&lt;br&gt;</description></item><item><title>Απ: WCF service client with proxy</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/46635.aspx</link><pubDate>Tue, 02 Dec 2008 18:52:51 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:46635</guid><dc:creator>RedHat</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/46635.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=21&amp;PostID=46635</wfw:commentRss><description>υπάρχει κάποιο πλεονέκτημα της χρήσης channel factory αντί για proxy?&lt;br&gt;</description></item><item><title>Απ: WCF service client with proxy</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/46629.aspx</link><pubDate>Tue, 02 Dec 2008 08:18:12 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:46629</guid><dc:creator>RedHat</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/46629.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=21&amp;PostID=46629</wfw:commentRss><description>Καλησπέρα και ευχαριστώ για τις γρήγορες απαντήσεις. &lt;br&gt;Η αλήθεια είναι ότι όντως επειδή με WCF και γενικότερα web services δεν έχω ασχοληθεί ίσως να μην έχω ξεκάθαρα κάποια πράγματα στο μυαλό μου. &lt;br&gt;Αυτό που λέει ο αγαπητός Δημήτρης είναι όντως αυτό πουναναζητώ και είχες δείξει Δημήτρη στο devday. Θα κοιτάξω το συνημμένο σου.&lt;br&gt;&lt;br&gt;Ευχαριστώ&lt;br&gt;</description></item><item><title>Απ: WCF service client with proxy</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/46622.aspx</link><pubDate>Tue, 02 Dec 2008 07:20:34 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:46622</guid><dc:creator>Dimitris Papadimitriou</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/46622.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=21&amp;PostID=46622</wfw:commentRss><description>Αυτό που ρωτάει ο φίλος μας είναι η χρήση του channel factory για τη δημιουργία καναλιών αντί για τη χρήση proxy.&lt;br&gt;Αυτό που έδειξα στο devday είναι το εξής:&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var channelFactory = new System.ServiceModel.ChannelFactory&amp;lt;HelloWorld.IService1&amp;gt;("BasicHttpBinding_IService1");&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; var channel = channelFactory.CreateChannel();&lt;br&gt;Δες επίσης το επισυναπτόμενο project.&lt;br&gt;</description></item><item><title>Απ: WCF service client with proxy</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/46621.aspx</link><pubDate>Tue, 02 Dec 2008 06:55:03 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:46621</guid><dc:creator>Παναγιώτης Καναβός</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/46621.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=21&amp;PostID=46621</wfw:commentRss><description>&lt;P&gt;Κάπου πρέπει να μπερδεύεις τί είναι service reference και τί είναι proxy. To service reference ΕΙΝΑΙ proxy, ή μάλλον όταν προσθέτεις ένα service reference δημιουργείται αυτόματα ένα proxy μαζί με τα κατάλληλα configuration settings. Όπως και να φτιάξεις το proxy, αν αλλάξει το WCF Service θα πρέπει να αλλάξει και αυτό. Συνεπώς δεν χάνεις τίποτε δημιουργώντας ένα service reference. &lt;/P&gt;
&lt;P&gt;Υποψιάζομαι ότι αυτό που σε απασχολεί είναι το versioning, τί συμβαίνει δηλαδή όταν αλλάζει το signature ενός service ή μίας μεθόδου του. Δεν αποφεύγεις την αλλαγή του client αν θέλεις ο client σου να εκμεταλλευτεί το νέο signature - ακόμα και αν έφτιαχνες τα requests με ... το χέρι. Πιο ενδιαφέρον είναι τί γίνεται αν δεν θέλεις ο παλιός client να χαλάσει αν αλλάξεις ένα service. Η μορφή των δεδομένων που ανταλλάσσονται μεταξύ client/server ορίζεται από μία κλάση με το attribute DataContract. Αν προσθέσεις ή αφαιρέσεις ένα πεδίο από το DataContract ενός WCF Service, το proxy στην πλευρά του client θα προσπαθήσει να αντιμετωπίσει τη διαφορά. Αν έχει προστεθεί ένα νέο πεδίο, απλά θα το αγνοήσει. Αν έχει αφαιρεθεί ένα πεδίο, θα χρησιμοποιήσει την default τιμή του. Μπορείς επίσης να εκμεταλλευτείς το OnDeserializing event στον client για να αντικαταστήσεις τις τιμές που λείπουν με άλλες.&lt;/P&gt;
&lt;P&gt;Στο τέλος, το versioning γίνεται ευκολότερο χρησιμοποιώντας&amp;nbsp;ένα service reference. Αν αυτός είναι ο λόγος για τον οποίο θέλεις να το αποφύγεις, νομίζω ότι θα πρέπει να το ξανασκεφτείς.&lt;/P&gt;</description></item><item><title>WCF service client with proxy</title><link>https://www.dotnetzone.gr:443/cs/forums/thread/46608.aspx</link><pubDate>Tue, 02 Dec 2008 00:56:01 GMT</pubDate><guid isPermaLink="false">2622095e-976c-431a-859e-16783ec7ecd7:46608</guid><dc:creator>RedHat</dc:creator><slash:comments>0</slash:comments><comments>https://www.dotnetzone.gr:443/cs/forums/thread/46608.aspx</comments><wfw:commentRss>https://www.dotnetzone.gr:443/cs/forums/commentrss.aspx?SectionID=21&amp;PostID=46608</wfw:commentRss><description>Ύστερα από το devday της microsoft με την παρουσίαση του WCF έχω ξεκινήσει και φτιάχνω ένα WCF service.&lt;br&gt;&lt;br&gt;Θέλω να δημιουργήσω έναν client που να επικοινωνει με το service αλλά χωρίς να χρειάζεται να κάνω service reference .Νομίζω πως αυτό γίνεται με την χρήση proxy ή κάνω λάθος? Νομίζω παρουσιάστηκε στην microsoft από τους συναδέλφους του forum αλλά δεν μπορώ να θυμηθώ πως το κάνω ακριβώς.&lt;br&gt;&lt;br&gt;Αν θα μπορούσε κάποιος λοιπόν να εξηγήσει τα βήματα για τον client χωρίς να γίνει service refernce ώστε όταν αλλαζω τον κώδικα του service να μην επηρεάζεται η client εφαρμογή και χρειάζεται πάλι να κάνω refernce.&lt;br&gt;&lt;br&gt;ευχαριστώ&lt;br&gt;</description></item></channel></rss>