|
Tridip Bhattacharjee wrote: then a request goes to UPS site.
Adding a bit more emphasis to the previous reply - because you are accessing an external service provider you will always need to write new code for each.
Given your description of how you are implementing this it also seems unlikely that you can generalize it either. Which isn't to say that you are doing it wrong but rather because you are using all the shipping options rather than attempting to normalize it that you won't be able to generalize it. And actually I suspect that if you try to generalize it too much that you could end up with problems.
Tridip Bhattacharjee wrote: then i have to create another class library for that company.
Job security.
|
|
|
|
|
This doesn't sound like a job for plain DI. It sounds more like a job for MEF which is more of a plug-in architecture.
How much of the code is straight up copy & paste between different companies?
If the code is 99% duplicate, why not just move the differences into a SQL database or XML file and just have a single common engine that reads the params and uses them? I.e. like instead of hardcoding one dll to fedex and another to ups, just have one method where you pass in the URL or whatever?
Even if the code is more like 50% to 75% different, I'd refactor it to a data driven engine instead of a plug-in architecture.
I'm guessing most of the code is identical... go to this URL to create an order, go to this URL to do this, etc.
If there are a lot of differences, revisiting the data driven model, you can use javascript or even C# scripts as your "plug-in" model. I.e. for fedex you execute this javascript, for ups you do that one.
|
|
|
|
|
thanks for answer. i think i should go for MEF. can u drive me to few good MEF article from where i can learn plug and play architecture maintain by MEF. thanks
tbhattacharjee
|
|
|
|
|
Use Google to search for MEF.
|
|
|
|
|
Hi
I need to draw digits 1, 2 etc with drawing effect in my WinRT application. The requirement is like the application will be drawing the digit.
Any help will be really appreciated.
Thanks in advance.
|
|
|
|
|
You'll need to draw it in discrete steps, building it up bit by bit. What you'll need to use is a BezierSegment to draw rounded elements and a Path to draw the straight bits.
|
|
|
|
|
I would like to come up with C#.NET 3.5 Code review checklist such as Use Properties instead of variables, Use stringbuilder to combine more string values together, Use using block to open connection and so on. Please do share your thoughts to make a complete list. If you have entire list that would be great.
Please note that I'm using .NET Windows Application NOT asp.net.
|
|
|
|
|
You could consider FxCop; it'll perform statical code-analysis, and you can customize the rules. There's a list of warnings on MSDN[^].
|
|
|
|
|
Beside of FxCop mentioned above take also a look at StyleCop[^]
For best results you can use both. FxCop checks compiled assembly while StyleCop the sources so both give different advises about your code.
In both cases you can choose rules to force for your code.
--
"My software never has bugs. It just develops random features."
|
|
|
|
|
Member 3137078 wrote: Use stringbuilder to combine more string values together
As a general statement that is generally not a good rule.
|
|
|
|
|
Right, it should mention loops.
I'd also say not to throw away a perfectly good StringBuilder just to create another; reuse it if possible.
One thing I've seen done all too often is something like:
for each row in a table
instantiate a StringBuilder (with the default length of 16 no less!)
for each column
Append a comma (possibly with a test first)
Append the value
write it somewhere with ToString()
A better pattern is:
instantiate a StringBuilder (ideally with some estimate of how much space is required by the longest record)
for each row in a table
set the StringBuilder's Length to 0
for each column
AppendFormat the value and a comma
write it somewhere with ToString ( 0 , Length-1 ) to eliminate the extraneous comma
|
|
|
|
|
First, assuming that the compiler understands your program no matter how poorly you write it, it is more important that people understand it. From that flows:
Be consistent -- especially in formatting.
Be verbose -- "saving keystrokes" is a bad thing in the long run.
Too many comments is better than too few -- at least they're easier to delete than add.
Avoid premature optimization.
Expect that the developer who might come after you will come after you.
|
|
|
|
|
hi guys
i just want a program that can connect to other program on other computer and also get connected , and i'll make it clear .
i want a program that send and recive data .
like a server and client in one program .
like a chat program .
|
|
|
|
|
Then write it! We're not going to do the work for you.
|
|
|
|
|
okay then .
the code that im using in the server side is like this
Thread thr;
Socket Soc = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPEndPoint ipend = new IPEndPoint(IPAddress.Any, 8000);
private void buttonX1_Click(object sender, EventArgs e)
{
thr = new Thread(Listen);
thr.Start();
}
void Listen()
{
Soc.Bind(ipend);
Soc.Listen(10);
byte[] data = new byte[500];
while (true)
{
Socket client = Soc.Accept();
client.Receive(data);
sth = Encoding.ASCII.GetString(data);
client.Shutdown(SocketShutdown.Both);
client.Close();
}
}
and the client side is like this
Socket soc = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPEndPoint ipend = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 8000);
soc.Connect(ipend);
string input = textBoxX1.Text;
byte[] data = new byte[500];
data = Encoding.ASCII.GetBytes(input);
soc.Send(data);
string sth = "";
sth = Encoding.ASCII.GetString(data1);
textBoxX2.Text = sth;
i think you know what im done , but this code is doing so far i get of it . i click the listen button in the server side and the server w'll listen to the line so after i fill the textbox in the client form and click the send button it'll send the data and i can get the data perfectly in the server side
but i need two more things to be done , i want the server do the same thing that the client do that's mean send data to client . and i want the client do the same thing as server that's mean get the data from the server .
i hope you get the idea .
both of them do both sending and receiving at the same time .
how that should be possible ?
|
|
|
|
|
OK, the Socket object you created has a bunch of Send methods. So, you receive your message from the client, process it, then sned a response back to the client just like the client code does.
|
|
|
|
|
i dont think is as easy as you said . when im listening to the line by the server computer
how should i respond it ? i know one thing that if the client send the server any message , the server can send any message right a way back to the client after it gets the message from the client . but i dont want to send message right back to the client like this way , i want to have a sperate button on the server that if i clicked it the message w'll send to the client and also recieve the message from the client too .
i dont know , if you get it or not.
|
|
|
|
|
Then you'll have to have two threads, one listening and one writing. No, I don't have any examples because I've never heard of anyone doing this. Usually, it's one thread that listens, responds, listens, reponds, ...
|
|
|
|
|
Sounds fun - hope you enjoy coding it as much as I would!
|
|
|
|
|
the code that im using in the server side is like this
Thread thr;
Socket Soc = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPEndPoint ipend = new IPEndPoint(IPAddress.Any, 8000);
private void buttonX1_Click(object sender, EventArgs e)
{
thr = new Thread(Listen);
thr.Start();
}
void Listen()
{
Soc.Bind(ipend);
Soc.Listen(10);
byte[] data = new byte[500];
while (true)
{
Socket client = Soc.Accept();
client.Receive(data);
sth = Encoding.ASCII.GetString(data);
client.Shutdown(SocketShutdown.Both);
client.Close();
}
}
and the client side is like this
Socket soc = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPEndPoint ipend = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 8000);
soc.Connect(ipend);
string input = textBoxX1.Text;
byte[] data = new byte[500];
data = Encoding.ASCII.GetBytes(input);
soc.Send(data);
string sth = "";
sth = Encoding.ASCII.GetString(data1);
textBoxX2.Text = sth;
i think you know what im done. i click the listen button in the server side and the server w'll listen to the line so after i fill the textbox in the client form and click the send button it'll send the data and i can get the data perfectly in the server side
but i need two more things to be done , i want the server do the same thing that the client do that's mean send data to client . and i want the client do the same thing as server that's mean get the data from the server .
i hope you get the idea .
both of them do both sending and receiving at the same time .
how that should be possible ?
|
|
|
|
|
You could look in MSDN[^] or just Google for "C# sockets", to get all the information you need.
One of these days I'm going to think of a really clever signature.
|
|
|
|
|
This sounds like a classic homework question. Before you start coding it, you need to analyse the problem that you are facing (this doesn't just apply to homework, any program that you write should have some degree of thought put into it beforehand).
When you analyse the problem, based on the level of detail you've currently supplied, it really breaks down into three parts. The first part is that you want to have code that can send data. The second part is that you want to have code that can receive data. The third part (it's kind of implicit here), is that you want your send and receive code to be performed on threads as your problem reads like the application must be able to do both things at the same time; I could be wrong about this - only you know the requirements here.
Some things you need to consider - how is the program terminated? What happens to the sending code if the program that is receiving data terminates unexpectedly? What happens to the sending application if the receiving application terminates (how does it know that it's terminated - you don't want to attempt to send if there's nothing at the other end)? What if the receiving end outage is only temporary? Do you attempt to resend data?
As you can see, there's a lot of thinking you need to do beforehand. You really need to consider what the application "infrastructure" is, taking things such as resiliency into account.
|
|
|
|
|
The way you formulated it (that is, without going through a server), you'll probably have to traverse NAT at some point.
Just something to keep in mind and be prepared for.
|
|
|
|
|
|
Hey all,
I am a bit disappointed by myself to come up with that question, but hey! there are some regex cracks here that can easily answer this question and maybe deepen my understanding. I really tried to figure out the best regex for my problem - but I am new to programming and regex' still seem to make my head explode.
Here's the string I've got:
Directory\Subdirectory\Subdir\Subsubdir\sub_sub_subv009\filename_with_lots_of_ABC123.txt
using this regex:
(?<=_)[a-zA-z0-9]*(?=.txt$)
I get:
of_ABC123
Close call, but what I need is just ABC123 - this are all characters as a string between the LAST '_' and ".txt"
Additionally, I did this in Expresso (did not use the designer but did a lot of test runs to see if my regex matches) - will this be the regex to be used in C#?
I really appreciate any hint to solve my last problem,
Best
Dennis
|
|
|
|