|
I would suggest picking up the books .NET Remoting[^] (MSPress) and/or Advanced .NET Remoting[^] (Ingo Rammer). These take you through the basics and to intermediate and advanced topics (Ingo's book).
.NET Remoting in a basic concept is like XML Web Services. Remoting can use SOAP like Web Services do, but the overall architecture is very extensible. For instance, you can use either SOAP or binary formatters provided in the base class libraries, or use your own formatter to which object graphs are serialized. An HttpChannel and a TcpChannel are also provided (HTTP has some overhead, but integrates well when hosted with IIS), or you can create your own transmission chain.
And speaking of chains, .NET Remoting use an aspect-oriented approach - allowing you to chain handlers together to act on the serialized data before transmitting it across the wire. Web Services are not without their extensibility features, but this is acheived by adding custom elements to the SOAP messages, though the WSE from Microsoft (using industry standards like WS-Encryption, WS-Signatures, WS-Routing, and more) provides some additional capabilities. To do all this is much more difficult, though, as opposed to .NET Remoting that allows you to chain sinks together programmatically or as simple as using a .config file (making it easy to change the features of the sink chain without having to recode and recompile, like adding logging capabilities for each message or different types of messages).
Finally, .NET Remoting works with .NET's serialization features to marshal instances of objects across application domains (.NET Remoting is also the prefered way for IPC between AppDomains in .NET, typically using a TcpChannel ). Web Services can only send copies of an object.
So, for instance, lets say you had a Person object in your application. If you call a remote method on the Person object using .NET Remoting, if that method modifies the object, the modification will be reflected in the local Person object. With Web Services, you could only get a copy of that object back.
XML Web Services work good for many things, especially B2B, B2P, and P2P communication when dealing with data (like Microsoft Research task pane in their Office 2003 system). .NET Remoting is nice when you want to build distributed applications that work with and modify objects.
Microsoft MVP, Visual C#
My Articles
|
|
|
|
|
Heath, I want to clear it for myself, You mean using COM+/Web Service/Remoting to handle that database processing part and send back results to client application(for example win application) has more performance than to have one windows application which DIRECTLY connect to database and do that part itself? I think they are adding another layer , so does it cause better perfomance?
Mazy
"Improvisation is the touchstone of wit." - Molière
|
|
|
|
|
I never said it would perform better, just making the point that it works better. When architecting enterprise solutions, you have to take many things into account, like scalability, extensibility (for easy changes in the future), possible re-structing of the network (in part or in whole) and many other things. Web Services and .NET Remoting (throw COM+ in there, but I recommend sticking with .NET Remoting on that one) give you flexibility to easily change things in the future, as well as to push-out new services without breaking existing applications. Added to that is that you can make certain services available to business partners and consumers if your company were to require it.
It's not always a question of performance, but also a question of extensibility, modularity (breaking-up assemblies into logic categories, for instance), and scalability.
Always thinking in modular terms will provide you a more robust solution that can grow far into the future. Some would disagree saying, using the term KISS (keep it simple stupid), and for some solutions (say a doctor's office needs a simple scheduling system that won't likely change for many years, as they seldom do) that's fine. When dealing with large enterprise applications, thinking ahead can definitely benefit the architecture than just creating something that just performs a particular job.
Microsoft MVP, Visual C#
My Articles
|
|
|
|
|
OK, I got it. Thanks.
Mazy
"Improvisation is the touchstone of wit." - Molière
|
|
|
|
|
Hi,
I have been trying to generate an EMail with pictures and HTML formatting, if I want to keep the nice stuff, I have two possibilities:
- Link the pics from a web site.
- Include them in the e-mail.
For the second step, If I let the user generate the e-mail with MS-Outlook, should I use automation and read from there the msg format ? Is that the only way of leting the user generate a fancy email and then send them from my application to the customers ?
Thanks in advance, Greetings
Braulio
|
|
|
|
|
The MSG format is an internal format used by Outlook and Office. It is not acceptable to send to SMTP servers. For this, you use MIME which I mentioned earlier in this forum (I think even to you).
Microsoft MVP, Visual C#
My Articles
|
|
|
|
|
I found a lot of programs to send an e-mail using smtp server
what is it?
what may i wrote in the Smtp server filed,if i'll send to hotmail?
please help me.
|
|
|
|
|
SMTP is the Simple Message Transfer Protocol, the service used to transfer email. Hotmail does not support the SMTP services. You can only access Hotmail through http://www.hotmail.com[^] or - if you're an extra storage subscriber - the HTTPMail service which is similar in concept to Web Services (although it uses DAV, not SOAP). This can be used through Outlook and Outlook Express.
Microsoft MVP, Visual C#
My Articles
|
|
|
|
|
If you're just wanting to send mail, you need to find a SMTP server you can connect to. If you can't find one, you could always run one on your local machine and use "localhost" as the server. If you do this, make sure you're behind a firewall and you set up the server to only relay mail from the local machine (don't become a spam relay).
IIS has a SMTP server in it and it can be configured where you configure IIS.
There's one last issue you might run into. Big email providers (hotmail, AOL, etc.), might not allow email to originate from your machine depending on your internet connection. It might realize you're a DHCP assigned IP address on a cable modem and flat out not allow you to send email to a hotmail address (this is to cut down on people spamming without liability, people using your machine as a spam relay, and trojan's).
I, for one, do not think the problem was that the band was down. I think that the problem may have been that there was a Stonehenge monument on the stage that was in danger of being crushed by a dwarf.
-David St. Hubbins
|
|
|
|
|
I have a SettingsDialog class, which has a TabControl on it, with several TabPages.
I want to access a specific TabPage with the class constructor when I'm creating the dialog. So, for instance, when I'm inside a Form called Form1, I want to do the following
Form1.Button1_Click()<br />
{<br />
new SettingsDialog("TabPageNameContainingSettingsForForm1").ShowDialog();<br />
}
so that the settings dialog will start directly with the correct TabPage activated.
Sammy
"A good friend, is like a good book: the inside is better than the cover..."
|
|
|
|
|
The TabControl has both SelectedIndex and SelectedTab properties. After you initialize the control, iterate through the TabControl.TabPages collection property and find the TabPage with that name. Set this instance to TabControl.SelectedTab or grab the index and set SelectedIndex (which SelectedTab does internally anyway).
Microsoft MVP, Visual C#
My Articles
|
|
|
|
|
I am getting a null pointer error from the StrRetToStr method I call from COM. The method is called as follows:
<br />
result = COMStuff.StrRetToStr(ref mySTRRET, relativePIDL, out myFileName);<br />
Where mySTRRET is a valid STRRET retrieved from the GetDisplayNameOf method. RelativePIDL is a pointer to the PIDL of the object relative to the parent (Used BindToParent). and myFileName is a 128 charachter marshaled Bstr string.
All values are previously defined. SO i'm not sure why I am getting this error. Is the PIDL not supposed to be the relative one? I've used the origional PIDL, and still have no luck with this. Any help appreciated.
Regards
Cata
|
|
|
|
|
Please post additional code used around this call. Is the error message any more explicit?
- Nick Parker My Blog
|
|
|
|
|
Hi,
How can I generate EMails with HTML and send them using C# / .net.
Sorry but I have no idea about how that kind of e-mail works ( if there is an standard format to have the pics and content embedded or...).
Thanks in advance, Greetings
Braulio
|
|
|
|
|
This is done using MIME (Multipurpose Internet Mail Extensions). You should first understand how SMTP works and how basic email messages are formatted. It's similar in concept to HTTP, in that you provide headers, skip a line, and begin your content. MIME adds content types, including multipart which allows you to include text, html, images, and more. Image should, of course, be encoded as text (typically base64-encoded, but could be anything so long as clients support it).
For some information about MIME, you can google. There is a specific section on MSDN, MIME Extensions to Internet Mail[^] (kinda of redundant, but oh well) that also includes a sample of a MIME message. It also includes information on many common types used in MIME messages, but you can use anything so long as it can be interpreted by the email client (if it isn't, only the parts of the email that are understood are displayed).
Microsoft MVP, Visual C#
My Articles
|
|
|
|
|
Heath , why don't you advise him MailMessage Class?
Mazy
"Improvisation is the touchstone of wit." - Molière
|
|
|
|
|
Mazdak wrote:
Heath , why don't you advise him MailMessage Class?
While you can send standard HTML with the MailMessage class, the poster originally asked about embedding content including images which would require the use of MIME as Heath noted.
- Nick Parker My Blog
|
|
|
|
|
Because it doesn't allow you to send pictures as part of the HTML body, only to include a URL from an external resource. You can include attachments, but without using the right MIME header the HTML body won't resolve the attached image correctly.
Microsoft MVP, Visual C#
My Articles
|
|
|
|
|
Hi everybody,
I need the measures and the positions of any header from a TabPage. Does anybody know how to get these informations?
The reason is: I want to use the normal TabPages, which are used with the WindowsXP-Look. But I want to specify (override) the color of the little colored topline (standard XP is orange) for every TabPage by my own.
My idea was to write a custom control (TabControl) and react on the OnMouseMove event to draw my colored (blue) line over the orange line.
Or is that all over the wrong way?
Frank
|
|
|
|
|
How about TabControl.GetTabRect ? It's right there in the documentatino for TabControl in the .NET Framework SDK.
Note, though, that if you're overriding the painting of a TabPage , you can more effectively use the TabControl.DrawItem event (or override OnDrawItem in a derived class) when TabControl.DrawMode is set to TabDrawMode.OwnerDrawFixed .
Microsoft MVP, Visual C#
My Articles
|
|
|
|
|
SORRY...!!!!!!!!!!!!!!!!!!!!!!!
Thanks. That's what i was looking for.....
I've probably worked too long...!!!!!
Frank
|
|
|
|
|
Hi,
I develop system management tool.
This have 2 functions.
1. get cpu usage rate from localPC and remotePC.
2. get system cash memory from localPC and remotePC.
These functon are realtime functions.
If you have some ideas, please tell me.
best regards,
yu-yu,
|
|
|
|
|
|
Mr Stewart
Thank you for your advice.
I will try it.
regards,
yu-yu
|
|
|
|
|
We've got a multi-threaded server (we are very early in the project, trying to uncover some risks), and we want to send data using XML.
The class ServerAdapter is supposed to connect to the server (which works fine), to send data, but on the same stream be able to read data (which is causing problems).
In the function "bool Connect()", we want to instantiate the XmlTextReader with the stream that we got from the 'TcpClient client', but somehow that goes wrong. No exception is cast, but the problem definately has something to do with the stream that we get from the call 'client.GetStream()'.
When we try to do the exact same thing, with a stream NOT from a TcpClient, there is no problem. We've checked to see if it had something to do with the access-property on the connection (the 'Socket') on the serverside, but it came up negative. I am pretty much out of ideas, so if you can help me out, it'd be great (first time here, so I dont know the standarts)
We've checked how far it gets with text-outputs, so we KNOW that the XmlTextReader causes the problem.
Here is the part of code that fails.
public class ServerAdapter : IServerAdapter
{
private IServerEventHandler serverEventHandler;
private TcpClient client;
private NetworkStream stream;
private Thread readThread;
private XmlTextReader streamReader;
private XmlTextWriter streamWriter;
private BinaryReader reader;
private XmlValidatingReader validatingReader;
private XmlSchemaCollection schemaCollection;
public ServerAdapter()
{
}
public ServerAdapter( IServerEventHandler serverEventHandler ):base()
{
this.serverEventHandler = serverEventHandler;
}
public bool Connect()
{
bool connected = false;
try
{
client = new TcpClient();
client.Connect( "10.0.55.12", 4312 );
stream = client.GetStream();
streamReader = new XmlTextReader( stream );
streamWriter = new XmlTextWriter( stream, new System.Text.UTF8Encoding() );
blablabla....
Thanks in advance
...Borgbjerg
|
|
|
|
|