Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. The Lounge
  3. NuGet is like a virus at times

NuGet is like a virus at times

Scheduled Pinned Locked Moved The Lounge
csharpjavadotnetvisual-studiosysadmin
6 Posts 4 Posters 0 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • M Offline
    M Offline
    Marc Clifton
    wrote on last edited by
    #1

    For small, well written packages, it's fine. But the latest horror story is that I installed Quartz against my better judgement, to test it out. Quartz is a general purpose "job runner" and my first warning sign was that it was ported from Java. Rule #1: Never install any package ported from Java. The next thing I discovered is that whoever maintains Quartz decided that every single API method should be async, including initialization. Which, because I'm not calling the initialization from an awaitable method, meant I had to wrap the call in a Task(async () => initialize) call. WTF. What made this worse was that the examples I found online were all written before this atrocity, so I had no idea what I was getting into. Rule #2: Never trust online documentation, even the documentation provided by the package. Furthermore, finding anything useful about why I have to do things "the Quartz way" was completely absent. Of course, the main reason for that is because it's a Java port. Rule #3: If you can't find good examples explaining "why" in the package's online documentation, run. Ultimately, yes, it worked. Seemed to work quite well. My coworker, who was pushing to use it (he loves packages rather than rolling-your-own) liked some of the features, but neither of us could figure out how to use those features, like error reporting / handling. Rule #4: If it isn't obvious, it isn't worth it. In the back of my mind, I kept wondering why I'm adding a package to our already bloated project that consists of thousands and thousands of lines of code, for 99% of features that I won't be using and can't figure out how to use, instead of writing my own KISS CRON job processor in about 200 lines of code, and one that is tailored to what I need in terms of querying what it thinks it should be doing, error handling, testing, etc. I'll post an article, BTW. Rule #5: The KISS principle should be the first consideration when evaluating a package. Which gets me to my point. After making the command decision to ditch it, I uninstalled the package. Unbeknownst to me, the NuGet package did not cleanly revert. I should have simply rolled back the entire set of commits to the branch. Stupid me. Instead, it left breadcrumbs in a config file that included various .NET framework packages, the most scary of which included a DLL for running unsafe code. WTF does Quartz need to use unsafe code for? Anyways, while everything worked fine on our development server, without my realizing what w

    R F M 3 Replies Last reply
    0
    • M Marc Clifton

      For small, well written packages, it's fine. But the latest horror story is that I installed Quartz against my better judgement, to test it out. Quartz is a general purpose "job runner" and my first warning sign was that it was ported from Java. Rule #1: Never install any package ported from Java. The next thing I discovered is that whoever maintains Quartz decided that every single API method should be async, including initialization. Which, because I'm not calling the initialization from an awaitable method, meant I had to wrap the call in a Task(async () => initialize) call. WTF. What made this worse was that the examples I found online were all written before this atrocity, so I had no idea what I was getting into. Rule #2: Never trust online documentation, even the documentation provided by the package. Furthermore, finding anything useful about why I have to do things "the Quartz way" was completely absent. Of course, the main reason for that is because it's a Java port. Rule #3: If you can't find good examples explaining "why" in the package's online documentation, run. Ultimately, yes, it worked. Seemed to work quite well. My coworker, who was pushing to use it (he loves packages rather than rolling-your-own) liked some of the features, but neither of us could figure out how to use those features, like error reporting / handling. Rule #4: If it isn't obvious, it isn't worth it. In the back of my mind, I kept wondering why I'm adding a package to our already bloated project that consists of thousands and thousands of lines of code, for 99% of features that I won't be using and can't figure out how to use, instead of writing my own KISS CRON job processor in about 200 lines of code, and one that is tailored to what I need in terms of querying what it thinks it should be doing, error handling, testing, etc. I'll post an article, BTW. Rule #5: The KISS principle should be the first consideration when evaluating a package. Which gets me to my point. After making the command decision to ditch it, I uninstalled the package. Unbeknownst to me, the NuGet package did not cleanly revert. I should have simply rolled back the entire set of commits to the branch. Stupid me. Instead, it left breadcrumbs in a config file that included various .NET framework packages, the most scary of which included a DLL for running unsafe code. WTF does Quartz need to use unsafe code for? Anyways, while everything worked fine on our development server, without my realizing what w

      R Offline
      R Offline
      RickZeeland
      wrote on last edited by
      #2

      Now you get it! :-\

      1 Reply Last reply
      0
      • M Marc Clifton

        For small, well written packages, it's fine. But the latest horror story is that I installed Quartz against my better judgement, to test it out. Quartz is a general purpose "job runner" and my first warning sign was that it was ported from Java. Rule #1: Never install any package ported from Java. The next thing I discovered is that whoever maintains Quartz decided that every single API method should be async, including initialization. Which, because I'm not calling the initialization from an awaitable method, meant I had to wrap the call in a Task(async () => initialize) call. WTF. What made this worse was that the examples I found online were all written before this atrocity, so I had no idea what I was getting into. Rule #2: Never trust online documentation, even the documentation provided by the package. Furthermore, finding anything useful about why I have to do things "the Quartz way" was completely absent. Of course, the main reason for that is because it's a Java port. Rule #3: If you can't find good examples explaining "why" in the package's online documentation, run. Ultimately, yes, it worked. Seemed to work quite well. My coworker, who was pushing to use it (he loves packages rather than rolling-your-own) liked some of the features, but neither of us could figure out how to use those features, like error reporting / handling. Rule #4: If it isn't obvious, it isn't worth it. In the back of my mind, I kept wondering why I'm adding a package to our already bloated project that consists of thousands and thousands of lines of code, for 99% of features that I won't be using and can't figure out how to use, instead of writing my own KISS CRON job processor in about 200 lines of code, and one that is tailored to what I need in terms of querying what it thinks it should be doing, error handling, testing, etc. I'll post an article, BTW. Rule #5: The KISS principle should be the first consideration when evaluating a package. Which gets me to my point. After making the command decision to ditch it, I uninstalled the package. Unbeknownst to me, the NuGet package did not cleanly revert. I should have simply rolled back the entire set of commits to the branch. Stupid me. Instead, it left breadcrumbs in a config file that included various .NET framework packages, the most scary of which included a DLL for running unsafe code. WTF does Quartz need to use unsafe code for? Anyways, while everything worked fine on our development server, without my realizing what w

        F Offline
        F Offline
        F ES Sitecore
        wrote on last edited by
        #3

        Hangfire is an alternative you might want to look at.

        R 1 Reply Last reply
        0
        • F F ES Sitecore

          Hangfire is an alternative you might want to look at.

          R Offline
          R Offline
          RickZeeland
          wrote on last edited by
          #4

          And as a bonus: it's available as a NuGet package! It needs a database to work however ... net-tools~hangfire[^]

          F 1 Reply Last reply
          0
          • R RickZeeland

            And as a bonus: it's available as a NuGet package! It needs a database to work however ... net-tools~hangfire[^]

            F Offline
            F Offline
            F ES Sitecore
            wrote on last edited by
            #5

            It has lots of storage options, wouldn't surprise me if there's a file-based one or you could just use the memory based one if you weren't too bothered about persistence.

            1 Reply Last reply
            0
            • M Marc Clifton

              For small, well written packages, it's fine. But the latest horror story is that I installed Quartz against my better judgement, to test it out. Quartz is a general purpose "job runner" and my first warning sign was that it was ported from Java. Rule #1: Never install any package ported from Java. The next thing I discovered is that whoever maintains Quartz decided that every single API method should be async, including initialization. Which, because I'm not calling the initialization from an awaitable method, meant I had to wrap the call in a Task(async () => initialize) call. WTF. What made this worse was that the examples I found online were all written before this atrocity, so I had no idea what I was getting into. Rule #2: Never trust online documentation, even the documentation provided by the package. Furthermore, finding anything useful about why I have to do things "the Quartz way" was completely absent. Of course, the main reason for that is because it's a Java port. Rule #3: If you can't find good examples explaining "why" in the package's online documentation, run. Ultimately, yes, it worked. Seemed to work quite well. My coworker, who was pushing to use it (he loves packages rather than rolling-your-own) liked some of the features, but neither of us could figure out how to use those features, like error reporting / handling. Rule #4: If it isn't obvious, it isn't worth it. In the back of my mind, I kept wondering why I'm adding a package to our already bloated project that consists of thousands and thousands of lines of code, for 99% of features that I won't be using and can't figure out how to use, instead of writing my own KISS CRON job processor in about 200 lines of code, and one that is tailored to what I need in terms of querying what it thinks it should be doing, error handling, testing, etc. I'll post an article, BTW. Rule #5: The KISS principle should be the first consideration when evaluating a package. Which gets me to my point. After making the command decision to ditch it, I uninstalled the package. Unbeknownst to me, the NuGet package did not cleanly revert. I should have simply rolled back the entire set of commits to the branch. Stupid me. Instead, it left breadcrumbs in a config file that included various .NET framework packages, the most scary of which included a DLL for running unsafe code. WTF does Quartz need to use unsafe code for? Anyways, while everything worked fine on our development server, without my realizing what w

              M Offline
              M Offline
              markrlondon
              wrote on last edited by
              #6

              Marc Clifton wrote:

              various .NET framework packages, the most scary of which included a DLL for running unsafe code

              Guess: Performance. I notice to my surprise that an open source .NET library I have used for certain jobs relies on unsafe code. Why? Performance on potentially large amounts of data. The author is a .NET expert. I am certain he wouldn't have done it unless it was critical. I was disappointed.

              1 Reply Last reply
              0
              Reply
              • Reply as topic
              Log in to reply
              • Oldest to Newest
              • Newest to Oldest
              • Most Votes


              • Login

              • Don't have an account? Register

              • Login or register to search.
              • First post
                Last post
              0
              • Categories
              • Recent
              • Tags
              • Popular
              • World
              • Users
              • Groups