I read from a Microsoft guide on Performance (www.serverside.net) and it says that Windows Services uses Workstaton GC even Server has multiple CPU. The conclusion seems to be that we should not host TCP Remoting in WinSvcs.
(1) Is the above true or false ? (I have seen various opinion on this)
(2) How to configure to use Server GC (
I have some idea but not sure about it. But I will open source it so everyone can comment later.
If the .NET Framework is implicitly loaded, by loading a managed executable or loading a library into a process where the Framework isn't already loaded, the Workstation GC will always be used. To use the Server GC, you must explicitly load the framework by calling CorBindToRuntimeEx, exported by mscoree.dll.
Thanks for your "real-time" response.
I have read both articles: The 1st is great in concept and the 2nd has
My Company blocked Blogging so I have to wait till after 6pm at home to read.
I basically modified Steven Pratschner's code and made a Windows Services (.net) that calls Unmanaged API CorBindToRuntimeEx to run a remoting host code. (Just like you said). It really works as a TCP Remoting Host.
Though My problem is that I would rather not use my code since it does not have PROVEN scalability in production.(and I do not have 8-CPU machine anyway)
Is there any code I can download that has been proven ?
PS. I have no problem upload my code onto www.codeproject.com, so that we developer can improve and test it in this community.
I am using a commercial protocol stack that calls a registered callback function to receive data when the driver it talks to has done it's thing and has new data to report. The sample code that came with the stack uses PostMessage from the Win32 world to send a local copy of the data back to the host GUI/window message parsing thread. This is to avoid thread crossing problems, etc.
I want to do the same thing with a new .NET application. But, I can't see a way to do it. I can't spawn a new thread, call invoke, etc. because I have to follow the signature of the callback function. I can't just add the callback function into my form namespace for the same reason. I can't call PostMessage because .NET hides the message pump parsing and I don't know how to add handling a custom message, assuming I could succesfully send it. IMessage doesn't see to apply... It seems like this would be an easy question.
I'm developing a setup project. Can you help me with these queries
- How do I get the installation path the user enters at runtime
- How can I copy some files to specified location eg:C:\temp
- How can I check for existence of a particular folder? Is it possible with Launch Condition. If not how can I do it?
-'User Interface -Add Dialog '- How can I get the values entered in the textboxes at runtime and pass it to my application?
- Custom Action properties , properties- Installer Class - true / false signify ?
- How do I start an application when Installation completes ?
Thankx in advance
I'm a little confused about what you are trying to do here. ASCII is not capable of displaying the full range of letters for all character sets. That is one of the reasons why we have Unicode!
It seems like expected behavior to me, or at least not unexpected. If you have an international application, then you should stick to unicode only, if at all possible. Heck, you should probably stick to unicode even if you're not.
If your challenge is that you need to transmit data over a medium that only supports ASCII, consider Base64 encoding.
For example the data sent was "abcdefüüü"... its a unicode string with special characters.. now the programmer(not a .NET programmer) who sent me the data said that he converted this unicode string to UTF8 first before sending it to the stream...
Now when i got the data from my side, the new string is "abcdefA¼A¼A¼"..
what i need to do is make the string back to "abcdefüüü"..
See "About ASCII Encoding class" in the SDK. The encoding always results in 7 bit characters. It always excludes the extended ASCII characters, i.e. those in the range of 128-255. They will be converted as "?", which has an ASCII byte code of 63.
I do not think you can do what you want with the ASCIIEncoding class. I think perhaps Encoding.Default will work as you expect. This will return an encoding for the system's current ANSI code page. I'm not sure what that means exactly in terms of byte values, but it sounds promising.
I wrote about the difference between ASCII and 8-bit character sets here[^]. The encoding that the .NET Framework refers to as 'Unicode' is UTF-16 (Little Endian). The encoding referred to as 'Ascii' is ISO-646-US, a 7-bit encoding. Only the code points from 0 to 127 have any meaning; any code outside this range is simply translated to '?'.
If you want to convert an array of bytes representing characters into a System.String object, you must know what character set they represent, and what Windows code page that corresponds to. Windows code page numbers are listed at http://www.microsoft.com/globaldev/reference/WinCP.mspx[^].
For converting UTF-8 to a System.String, you can use the object returned by the System.Text.Encoding.UTF8 property.
I was wondering if any of you know if the following is possible : Run an applet, a service...which would act as an FTP client but the connection to the remote server should be initiated from the server side and not the client side! There are hundreds of good client side FTP client but no server side apparently. The reason why I'm asking is that I need an FTP client but I cannot connect to the target FTP server from the client, only from the server where the web service is running.
Thanks in advance !
I know exactly what is blocked but I wanted a solution like : the web client connect to a web server and there I would run an applet/component on the server side. The server manage the FTP connection and allow basic features.
Of course the easiest solution is HTTP but I have to stick to FTP.
Not possible ? What's the reason ?
Mike already said it. It is simply NOT possible. Because that's not how FTP works. FTP servers 'listen' for connections and client 'connect' to server. PERIOD. If somebody gave you a requirement to stick to FTP it is just silly, because it cannot be done. Unless you do it other way around. Your app starts up an FTP Server and the server starts an FTP client and uploads a file to your client's FTP 'server', but that's just stupid.
"Controls created on one thread cannot be parented to a
control on a different thread."
This exception occurs when i update the grid control of the main progrm from a COM thread that i made...
I have read on other articles and forums that you need to use Control.Invoke(Delegate) function.. How do i use the .Invoke(Delegate) function? and if possible please explain the threads scenario which i am experiencing ryt now, and how does the Control.Invoke() function comes in?
Is this problem completely .NET related or do i have to Re-Marshall my COM objects again?
Another thing, there are Multiple COM threads updating the single Grid.. so how do i synchronize them?
I'm not very familiar with .Net threads so pls bear with me..
Yesterday I was trying to inherit from HttpWebRequest, to implement a protocol that extends HTTP. In the end, I think it is impossible...although the class itself can be inherited from, its main constructor is effectively private (probably declared "internal"), which means that my derived class cannot construct the base class.
This is due to the nature of the HttpWebRequest, which is always created through the WebRequest.Create() method, never directly through its constructor.
Does anyone have any experience with or insight into this?
How do you want to extend HTTP? If you want to add headers, you can add them to the Headers collection. If you want to use a custom verb, you can do that too: set the Method property.
If you want to customise these properties in a fixed way, and still plug in to WebRequest.Create, I think you'll have to derive a new class from WebRequest, have an HttpWebRequest as a member, and forward methods to your HttpWebRequest.
You are right, I can add to the headers, and set the Method property. That is what I ended up doing. And it is a simpler design this way, so everything worked out for the best (so far at least).
However, I found it strange that MS would create a non-sealed class that could not be inherited. A sealed class is faster after all...and I would think that they would want the framework to be as efficient as possible.
So I figured it may just be that there is some technique that I am unaware of - I'm still a C# newbie in many ways . I'd still like to be able to inherit from it if the design evolves that way. Decorating objects (your 2nd suggestion) is usually a last resort for me, as it is always so repetitive.
[Since you asked, I am writing a 100% managed C# component for working with the client side of WebDAV. (Yes, I know that I can use MSXML). WebDAV is an extension to HTML, so it shares all the same basic characteristics. Extension equates well to inheritance, so that's why my first thought was to inherit from HttpWebRequest.]
Last Visit: 31-Dec-99 19:00 Last Update: 26-Jan-22 13:33