tag:blogger.com,1999:blog-15136575.post684346774755664175..comments2023-10-17T12:00:16.772+01:00Comments on Code rant: A Simple Nowin F# ExampleMike Hadlowhttp://www.blogger.com/profile/16441901713967254504noreply@blogger.comBlogger6125tag:blogger.com,1999:blog-15136575.post-63813851194271852032015-04-24T04:19:48.699+01:002015-04-24T04:19:48.699+01:00@Mike, nice post! Thank you for trying out this co...@Mike, nice post! Thank you for trying out this combination. I have been wanting to give Nowin a spin for some time but never got around to it.Ryanhttps://www.blogger.com/profile/10643337675808040478noreply@blogger.comtag:blogger.com,1999:blog-15136575.post-20287532817489404722015-04-24T04:18:49.680+01:002015-04-24T04:18:49.680+01:00@Anonymous, see my slides for A Brief History of O...@Anonymous, see my slides for <a href="http://panesofglass.github.io/history-of-owin/#/" rel="nofollow">A Brief History of OWIN</a>. The main driver for not requiring a shared library was each contributor's preference for his own existing library's abstractions and a desire to easily interop with the DLR languages that were still in active development at the time, i.e. IronPython and IronRuby.Ryanhttps://www.blogger.com/profile/10643337675808040478noreply@blogger.comtag:blogger.com,1999:blog-15136575.post-91629223376569384892015-04-23T12:15:51.750+01:002015-04-23T12:15:51.750+01:00Very nice post!! I don't work with F# (yet) bu...Very nice post!! I don't work with F# (yet) but I like how elegant the code looks. Thank youAnonymousnoreply@blogger.comtag:blogger.com,1999:blog-15136575.post-41643990910615053602015-04-22T18:11:57.728+01:002015-04-22T18:11:57.728+01:00A dependency from B to A exists when you cannot ch...A dependency from B to A exists when you cannot change A without changing B. This is the case here. The contents of the dictionary are a dependency for the app. The dependency was not avoided but simply not statically declared.<br /><br />It is true that this saves referencing a library. But what's the harm in referencing a library?!Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-15136575.post-91024512001614809252015-04-22T13:44:28.850+01:002015-04-22T13:44:28.850+01:00A delegate is not an interface. Since string, Obje...A delegate is not an interface. Since string, Object, Func<>, IDictionary<> and Task are all defined in the standard libraries it means you don't need to take a hard dependency on a separate OWIN library in order to create OWIN compatible servers, application frameworks or middlewear. <br /><br />"Apps still need to know what's inside and take a hard runtime dependency on it." Yes, they need to know what to implement (of course), but you are incorrect to say that they need to take a hard runtime dependency.Mike Hadlowhttps://www.blogger.com/profile/15393720749809796178noreply@blogger.comtag:blogger.com,1999:blog-15136575.post-38657869064145157392015-04-22T12:59:21.040+01:002015-04-22T12:59:21.040+01:00"There is no interface that they must impleme..."There is no interface that they must implement. They simply need to provide an entry point for the OWIN application delegate (better know as the AppFunc):"<br /><br />That *is* an interface. It's just not statically defined. I never understood the reasoning behind this dictionary design choice. Apps still need to know what's inside and take a hard runtime dependency on it.Anonymousnoreply@blogger.com