Stream dynamically create file content via .NET MVC controller










0















I'm looking for some high-level guidance on how to architect a multi-tiered solution that will generate and stream large text file content to an Angular 6 web application via .NET MVC controllers. The system consists of a Web API service layer, a .NET MVC web application, and the Angular front end.



Because the files will take some time to generate I want to do this asynchronously through the entire stack - that is, to write each line and pass it through the stack to the browser client as it becomes available, rather than wait for the entire file to be produced on the server before sending it to the controller.



The service layer will generate the file and output it via a controller method. This controller method is called by a controller method in the web application, which is in turn called by an Angular service. Ultimately, I want the file to land on a user's desktop.



The file content will be generated in a manner similar to the following (this is a synchronous version). numberOfRows could be in the millions, which is why the files could take some time to generate.



 public string GenerateFile(int numberOfRows)


StringBuilder output = new StringBuilder();

for (int i = 0; i <= numberOfRows; i++)

output.Append("Row " + i.ToString() + "rn");


return output.ToString();




Thanks in advance for the help!










share|improve this question






















  • I suggest you use TextWriter Class instead Stringbuilder, performance is better a lot.

    – LuisEduardox
    Nov 14 '18 at 3:45











  • Good point. Thanks! Any ideas on the broader question?

    – christok
    Nov 14 '18 at 16:13















0















I'm looking for some high-level guidance on how to architect a multi-tiered solution that will generate and stream large text file content to an Angular 6 web application via .NET MVC controllers. The system consists of a Web API service layer, a .NET MVC web application, and the Angular front end.



Because the files will take some time to generate I want to do this asynchronously through the entire stack - that is, to write each line and pass it through the stack to the browser client as it becomes available, rather than wait for the entire file to be produced on the server before sending it to the controller.



The service layer will generate the file and output it via a controller method. This controller method is called by a controller method in the web application, which is in turn called by an Angular service. Ultimately, I want the file to land on a user's desktop.



The file content will be generated in a manner similar to the following (this is a synchronous version). numberOfRows could be in the millions, which is why the files could take some time to generate.



 public string GenerateFile(int numberOfRows)


StringBuilder output = new StringBuilder();

for (int i = 0; i <= numberOfRows; i++)

output.Append("Row " + i.ToString() + "rn");


return output.ToString();




Thanks in advance for the help!










share|improve this question






















  • I suggest you use TextWriter Class instead Stringbuilder, performance is better a lot.

    – LuisEduardox
    Nov 14 '18 at 3:45











  • Good point. Thanks! Any ideas on the broader question?

    – christok
    Nov 14 '18 at 16:13













0












0








0








I'm looking for some high-level guidance on how to architect a multi-tiered solution that will generate and stream large text file content to an Angular 6 web application via .NET MVC controllers. The system consists of a Web API service layer, a .NET MVC web application, and the Angular front end.



Because the files will take some time to generate I want to do this asynchronously through the entire stack - that is, to write each line and pass it through the stack to the browser client as it becomes available, rather than wait for the entire file to be produced on the server before sending it to the controller.



The service layer will generate the file and output it via a controller method. This controller method is called by a controller method in the web application, which is in turn called by an Angular service. Ultimately, I want the file to land on a user's desktop.



The file content will be generated in a manner similar to the following (this is a synchronous version). numberOfRows could be in the millions, which is why the files could take some time to generate.



 public string GenerateFile(int numberOfRows)


StringBuilder output = new StringBuilder();

for (int i = 0; i <= numberOfRows; i++)

output.Append("Row " + i.ToString() + "rn");


return output.ToString();




Thanks in advance for the help!










share|improve this question














I'm looking for some high-level guidance on how to architect a multi-tiered solution that will generate and stream large text file content to an Angular 6 web application via .NET MVC controllers. The system consists of a Web API service layer, a .NET MVC web application, and the Angular front end.



Because the files will take some time to generate I want to do this asynchronously through the entire stack - that is, to write each line and pass it through the stack to the browser client as it becomes available, rather than wait for the entire file to be produced on the server before sending it to the controller.



The service layer will generate the file and output it via a controller method. This controller method is called by a controller method in the web application, which is in turn called by an Angular service. Ultimately, I want the file to land on a user's desktop.



The file content will be generated in a manner similar to the following (this is a synchronous version). numberOfRows could be in the millions, which is why the files could take some time to generate.



 public string GenerateFile(int numberOfRows)


StringBuilder output = new StringBuilder();

for (int i = 0; i <= numberOfRows; i++)

output.Append("Row " + i.ToString() + "rn");


return output.ToString();




Thanks in advance for the help!







c# asp.net-mvc angular






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Nov 14 '18 at 3:24









christokchristok

4001318




4001318












  • I suggest you use TextWriter Class instead Stringbuilder, performance is better a lot.

    – LuisEduardox
    Nov 14 '18 at 3:45











  • Good point. Thanks! Any ideas on the broader question?

    – christok
    Nov 14 '18 at 16:13

















  • I suggest you use TextWriter Class instead Stringbuilder, performance is better a lot.

    – LuisEduardox
    Nov 14 '18 at 3:45











  • Good point. Thanks! Any ideas on the broader question?

    – christok
    Nov 14 '18 at 16:13
















I suggest you use TextWriter Class instead Stringbuilder, performance is better a lot.

– LuisEduardox
Nov 14 '18 at 3:45





I suggest you use TextWriter Class instead Stringbuilder, performance is better a lot.

– LuisEduardox
Nov 14 '18 at 3:45













Good point. Thanks! Any ideas on the broader question?

– christok
Nov 14 '18 at 16:13





Good point. Thanks! Any ideas on the broader question?

– christok
Nov 14 '18 at 16:13












0






active

oldest

votes











Your Answer






StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");

StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);

else
createEditor();

);

function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);



);













draft saved

draft discarded


















StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53292741%2fstream-dynamically-create-file-content-via-net-mvc-controller%23new-answer', 'question_page');

);

Post as a guest















Required, but never shown

























0






active

oldest

votes








0






active

oldest

votes









active

oldest

votes






active

oldest

votes















draft saved

draft discarded
















































Thanks for contributing an answer to Stack Overflow!


  • Please be sure to answer the question. Provide details and share your research!

But avoid


  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.

To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53292741%2fstream-dynamically-create-file-content-via-net-mvc-controller%23new-answer', 'question_page');

);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

Darth Vader #20

How to how show current date and time by default on contact form 7 in WordPress without taking input from user in datetimepicker

Ondo